diff --git a/neo4j/import/data_cypher.cypher b/neo4j/import/data_cypher.cypher
new file mode 100644
index 0000000000000000000000000000000000000000..c6b32eeb6386b4df9eac495e5e3658cfd2562936
--- /dev/null
+++ b/neo4j/import/data_cypher.cypher
@@ -0,0 +1,2 @@
+match (a) -[r] -> () delete a, r;
+match (a) delete a;
\ No newline at end of file
diff --git a/neo4j/import/index.cypher b/neo4j/import/index.cypher
new file mode 100644
index 0000000000000000000000000000000000000000..cd57dbd6587c08bc64da00227f34d28c47375484
--- /dev/null
+++ b/neo4j/import/index.cypher
@@ -0,0 +1,8 @@
+:begin
+CREATE INDEX FOR (node:Person) ON (node.born);
+CREATE INDEX FOR (node:Movie) ON (node.released);
+CREATE CONSTRAINT ON (node:Person) ASSERT (node.name) IS UNIQUE;
+CREATE CONSTRAINT ON (node:Movie) ASSERT (node.title) IS UNIQUE;
+CREATE CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE;
+:commit
+CALL db.awaitIndexes(300);
\ No newline at end of file
diff --git a/neo4j/import/insert.cypher b/neo4j/import/insert.cypher
new file mode 100644
index 0000000000000000000000000000000000000000..ba4cc7bc3e6db76c36975395df80a88af1e38504
--- /dev/null
+++ b/neo4j/import/insert.cypher
@@ -0,0 +1,103 @@
+
+:begin
+UNWIND [{name:"Keanu Reeves", properties:{born:1964}}, {name:"Carrie-Anne Moss", properties:{born:1967}}, {name:"Laurence Fishburne", properties:{born:1961}}, {name:"Hugo Weaving", properties:{born:1960}}, {name:"Lilly Wachowski", properties:{born:1967}}, {name:"Lana Wachowski", properties:{born:1965}}, {name:"Joel Silver", properties:{born:1952}}, {name:"Emil Eifrem", properties:{born:1978}}, {name:"Charlize Theron", properties:{born:1975}}, {name:"Al Pacino", properties:{born:1940}}, {name:"Taylor Hackford", properties:{born:1944}}, {name:"Tom Cruise", properties:{born:1962}}, {name:"Jack Nicholson", properties:{born:1937}}, {name:"Demi Moore", properties:{born:1962}}, {name:"Kevin Bacon", properties:{born:1958}}, {name:"Kiefer Sutherland", properties:{born:1966}}, {name:"Noah Wyle", properties:{born:1971}}, {name:"Cuba Gooding Jr.", properties:{born:1968}}, {name:"Kevin Pollak", properties:{born:1957}}, {name:"J.T. Walsh", properties:{born:1943}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"James Marshall", properties:{born:1967}}, {name:"Christopher Guest", properties:{born:1948}}, {name:"Rob Reiner", properties:{born:1947}}, {name:"Aaron Sorkin", properties:{born:1961}}, {name:"Kelly McGillis", properties:{born:1957}}, {name:"Val Kilmer", properties:{born:1959}}, {name:"Anthony Edwards", properties:{born:1962}}, {name:"Tom Skerritt", properties:{born:1933}}, {name:"Meg Ryan", properties:{born:1961}}, {name:"Tony Scott", properties:{born:1944}}, {name:"Jim Cash", properties:{born:1941}}, {name:"Renee Zellweger", properties:{born:1969}}, {name:"Kelly Preston", properties:{born:1962}}, {name:"Jerry O'Connell", properties:{born:1974}}, {name:"Jay Mohr", properties:{born:1970}}, {name:"Bonnie Hunt", properties:{born:1961}}, {name:"Regina King", properties:{born:1971}}, {name:"Jonathan Lipnicki", properties:{born:1996}}, {name:"Cameron Crowe", properties:{born:1957}}, {name:"River Phoenix", properties:{born:1970}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Corey Feldman", properties:{born:1971}}, {name:"Wil Wheaton", properties:{born:1972}}, {name:"John Cusack", properties:{born:1966}}, {name:"Marshall Bell", properties:{born:1942}}, {name:"Helen Hunt", properties:{born:1963}}, {name:"Greg Kinnear", properties:{born:1963}}, {name:"James L. Brooks", properties:{born:1940}}, {name:"Annabella Sciorra", properties:{born:1960}}, {name:"Max von Sydow", properties:{born:1929}}, {name:"Werner Herzog", properties:{born:1942}}, {name:"Robin Williams", properties:{born:1951}}, {name:"Vincent Ward", properties:{born:1956}}, {name:"Ethan Hawke", properties:{born:1970}}, {name:"Rick Yune", properties:{born:1971}}, {name:"James Cromwell", properties:{born:1940}}, {name:"Scott Hicks", properties:{born:1953}}, {name:"Parker Posey", properties:{born:1968}}, {name:"Dave Chappelle", properties:{born:1973}}, {name:"Steve Zahn", properties:{born:1967}}, {name:"Tom Hanks", properties:{born:1956}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Nora Ephron", properties:{born:1941}}, {name:"Rita Wilson", properties:{born:1956}}, {name:"Bill Pullman", properties:{born:1953}}, {name:"Victor Garber", properties:{born:1949}}, {name:"Rosie O'Donnell", properties:{born:1962}}, {name:"John Patrick Stanley", properties:{born:1950}}, {name:"Nathan Lane", properties:{born:1956}}, {name:"Billy Crystal", properties:{born:1948}}, {name:"Carrie Fisher", properties:{born:1956}}, {name:"Bruno Kirby", properties:{born:1949}}, {name:"Liv Tyler", properties:{born:1977}}, {name:"Brooke Langton", properties:{born:1970}}, {name:"Gene Hackman", properties:{born:1930}}, {name:"Orlando Jones", properties:{born:1968}}, {name:"Howard Deutch", properties:{born:1950}}, {name:"Christian Bale", properties:{born:1974}}, {name:"Zach Grenier", properties:{born:1954}}, {name:"Mike Nichols", properties:{born:1931}}, {name:"Richard Harris", properties:{born:1930}}, {name:"Clint Eastwood", properties:{born:1930}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Takeshi Kitano", properties:{born:1947}}, {name:"Dina Meyer", properties:{born:1968}}, {name:"Ice-T", properties:{born:1958}}, {name:"Robert Longo", properties:{born:1953}}, {name:"Halle Berry", properties:{born:1966}}, {name:"Jim Broadbent", properties:{born:1949}}, {name:"Tom Tykwer", properties:{born:1965}}, {name:"David Mitchell", properties:{born:1969}}, {name:"Stefan Arndt", properties:{born:1961}}, {name:"Ian McKellen", properties:{born:1939}}, {name:"Audrey Tautou", properties:{born:1976}}, {name:"Paul Bettany", properties:{born:1971}}, {name:"Ron Howard", properties:{born:1954}}, {name:"Natalie Portman", properties:{born:1981}}, {name:"Stephen Rea", properties:{born:1946}}, {name:"John Hurt", properties:{born:1940}}, {name:"Ben Miles", properties:{born:1967}}, {name:"Emile Hirsch", properties:{born:1985}}, {name:"John Goodman", properties:{born:1960}}, {name:"Susan Sarandon", properties:{born:1946}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Matthew Fox", properties:{born:1966}}, {name:"Christina Ricci", properties:{born:1980}}, {name:"Rain", properties:{born:1982}}, {name:"Naomie Harris", properties:{}}, {name:"Michael Clarke Duncan", properties:{born:1957}}, {name:"David Morse", properties:{born:1953}}, {name:"Sam Rockwell", properties:{born:1968}}, {name:"Gary Sinise", properties:{born:1955}}, {name:"Patricia Clarkson", properties:{born:1959}}, {name:"Frank Darabont", properties:{born:1959}}, {name:"Frank Langella", properties:{born:1938}}, {name:"Michael Sheen", properties:{born:1969}}, {name:"Oliver Platt", properties:{born:1960}}, {name:"Danny DeVito", properties:{born:1944}}, {name:"John C. Reilly", properties:{born:1965}}, {name:"Ed Harris", properties:{born:1950}}, {name:"Bill Paxton", properties:{born:1955}}, {name:"Philip Seymour Hoffman", properties:{born:1967}}, {name:"Jan de Bont", properties:{born:1943}}, {name:"Robert Zemeckis", properties:{born:1951}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Milos Forman", properties:{born:1932}}, {name:"Diane Keaton", properties:{born:1946}}, {name:"Nancy Meyers", properties:{born:1949}}, {name:"Chris Columbus", properties:{born:1958}}, {name:"Julia Roberts", properties:{born:1967}}, {name:"Madonna", properties:{born:1954}}, {name:"Geena Davis", properties:{born:1956}}, {name:"Lori Petty", properties:{born:1963}}, {name:"Penny Marshall", properties:{born:1943}}, {name:"Paul Blythe", properties:{}}, {name:"Angela Scope", properties:{}}, {name:"Jessica Thompson", properties:{}}, {name:"James Thompson", properties:{}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{_id:171, properties:{license:"proprietary", price:"freemium", name:"Notion"}}, {_id:172, properties:{name:"Libreoffice Calc\n"}}, {_id:173, properties:{name:"Trello"}}, {_id:174, properties:{name:"Word"}}, {_id:175, properties:{name:"Google Slides"}}, {_id:176, properties:{name:"Google Sheets"}}, {_id:177, properties:{name:"Excel"}}, {_id:178, properties:{name:"Libreoffice Writer\n"}}, {_id:179, properties:{name:"Libreoffice Impress\n"}}, {_id:180, properties:{name:"Powerpoint"}}, {_id:181, properties:{name:"Google Docs\n"}}] AS row
+CREATE (n:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row._id}) SET n += row.properties SET n:Software;
+UNWIND [{title:"The Matrix", properties:{tagline:"Welcome to the Real World", released:1999}}, {title:"The Matrix Reloaded", properties:{tagline:"Free your mind", released:2003}}, {title:"The Matrix Revolutions", properties:{tagline:"Everything that has a beginning has an end", released:2003}}, {title:"The Devil's Advocate", properties:{tagline:"Evil has its winning ways", released:1997}}, {title:"A Few Good Men", properties:{tagline:"In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth.", released:1992}}, {title:"Top Gun", properties:{tagline:"I feel the need, the need for speed.", released:1986}}, {title:"Jerry Maguire", properties:{tagline:"The rest of his life begins now.", released:2000}}, {title:"Stand By Me", properties:{tagline:"For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of.", released:1986}}, {title:"As Good as It Gets", properties:{tagline:"A comedy from the heart that goes for the throat.", released:1997}}, {title:"What Dreams May Come", properties:{tagline:"After life there is more. The end is just the beginning.", released:1998}}, {title:"Snow Falling on Cedars", properties:{tagline:"First loves last. Forever.", released:1999}}, {title:"You've Got Mail", properties:{tagline:"At odds in life... in love on-line.", released:1998}}, {title:"Sleepless in Seattle", properties:{tagline:"What if someone you never met, someone you never saw, someone you never knew was the only someone for you?", released:1993}}, {title:"Joe Versus the Volcano", properties:{tagline:"A story of love, lava and burning desire.", released:1990}}, {title:"When Harry Met Sally", properties:{tagline:"Can two friends sleep together and still love each other in the morning?", released:1998}}, {title:"That Thing You Do", properties:{tagline:"In every life there comes a time when that thing you dream becomes that thing you do", released:1996}}, {title:"The Replacements", properties:{tagline:"Pain heals, Chicks dig scars... Glory lasts forever", released:2000}}, {title:"RescueDawn", properties:{tagline:"Based on the extraordinary true story of one man's fight for freedom", released:2006}}, {title:"The Birdcage", properties:{tagline:"Come as you are", released:1996}}, {title:"Unforgiven", properties:{tagline:"It's a hell of a thing, killing a man", released:1992}}] AS row
+CREATE (n:Movie{title: row.title}) SET n += row.properties;
+UNWIND [{title:"Johnny Mnemonic", properties:{tagline:"The hottest data on earth. In the coolest head in town", released:1995}}, {title:"Cloud Atlas", properties:{tagline:"Everything is connected", released:2012}}, {title:"The Da Vinci Code", properties:{tagline:"Break The Codes", released:2006}}, {title:"V for Vendetta", properties:{tagline:"Freedom! Forever!", released:2006}}, {title:"Speed Racer", properties:{tagline:"Speed has no limits", released:2008}}, {title:"Ninja Assassin", properties:{tagline:"Prepare to enter a secret world of assassins", released:2009}}, {title:"The Green Mile", properties:{tagline:"Walk a mile you'll never forget.", released:1999}}, {title:"Frost/Nixon", properties:{tagline:"400 million people were waiting for the truth.", released:2008}}, {title:"Hoffa", properties:{tagline:"He didn't want law. He wanted justice.", released:1992}}, {title:"Apollo 13", properties:{tagline:"Houston, we have a problem.", released:1995}}, {title:"Twister", properties:{tagline:"Don't Breathe. Don't Look Back.", released:1996}}, {title:"Cast Away", properties:{tagline:"At the edge of the world, his journey begins.", released:2000}}, {title:"One Flew Over the Cuckoo's Nest", properties:{tagline:"If he's crazy, what does that make you?", released:1975}}, {title:"Something's Gotta Give", properties:{released:2003}}, {title:"Bicentennial Man", properties:{tagline:"One robot's 200 year journey to become an ordinary man.", released:1999}}, {title:"Charlie Wilson's War", properties:{tagline:"A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire.", released:2007}}, {title:"The Polar Express", properties:{tagline:"This Holiday Season… Believe", released:2004}}, {title:"A League of Their Own", properties:{tagline:"Once in a lifetime you get a chance to do something different.", released:1992}}] AS row
+CREATE (n:Movie{title: row.title}) SET n += row.properties;
+:commit
+:begin
+UNWIND [{start: {name:"Joel Silver"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Stefan Arndt"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:PRODUCED]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Jim Cash"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"David Mitchell"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:WROTE]->(end) SET r += row.properties;
+UNWIND [{start: {_id:172}, end: {_id:177}, properties:{}}, {start: {_id:173}, end: {_id:171}, properties:{}}, {start: {_id:171}, end: {_id:181}, properties:{}}, {start: {_id:181}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:171}, properties:{}}, {start: {_id:178}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:175}, properties:{}}, {start: {_id:179}, end: {_id:180}, properties:{}}, {start: {_id:180}, end: {_id:175}, properties:{}}] AS row
+MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id})
+MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id})
+CREATE (start)-[r:SIMILAR]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Keanu Reeves"}, end: {title:"The Matrix"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Emil Eifrem"}, end: {title:"The Matrix"}, properties:{roles:["Emil"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Kevin Lomax"]}}, {start: {name:"Charlize Theron"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Mary Ann Lomax"]}}, {start: {name:"Al Pacino"}, end: {title:"The Devil's Advocate"}, properties:{roles:["John Milton"]}}, {start: {name:"Tom Cruise"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Daniel Kaffee"]}}, {start: {name:"Jack Nicholson"}, end: {title:"A Few Good Men"}, properties:{roles:["Col. Nathan R. Jessup"]}}, {start: {name:"Demi Moore"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Cdr. JoAnne Galloway"]}}, {start: {name:"Kevin Bacon"}, end: {title:"A Few Good Men"}, properties:{roles:["Capt. Jack Ross"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Kiefer Sutherland"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Jonathan Kendrick"]}}, {start: {name:"Noah Wyle"}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Jeffrey Barnes"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Carl Hammaker"]}}, {start: {name:"Kevin Pollak"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Sam Weinberg"]}}, {start: {name:"J.T. Walsh"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Col. Matthew Andrew Markinson"]}}, {start: {name:"James Marshall"}, end: {title:"A Few Good Men"}, properties:{roles:["Pfc. Louden Downey"]}}, {start: {name:"Christopher Guest"}, end: {title:"A Few Good Men"}, properties:{roles:["Dr. Stone"]}}, {start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{roles:["Man in Bar"]}}, {start: {name:"Tom Cruise"}, end: {title:"Top Gun"}, properties:{roles:["Maverick"]}}, {start: {name:"Kelly McGillis"}, end: {title:"Top Gun"}, properties:{roles:["Charlie"]}}, {start: {name:"Val Kilmer"}, end: {title:"Top Gun"}, properties:{roles:["Iceman"]}}, {start: {name:"Anthony Edwards"}, end: {title:"Top Gun"}, properties:{roles:["Goose"]}}, {start: {name:"Tom Skerritt"}, end: {title:"Top Gun"}, properties:{roles:["Viper"]}}, {start: {name:"Meg Ryan"}, end: {title:"Top Gun"}, properties:{roles:["Carole"]}}, {start: {name:"Tom Cruise"}, end: {title:"Jerry Maguire"}, properties:{roles:["Jerry Maguire"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"Jerry Maguire"}, properties:{roles:["Rod Tidwell"]}}, {start: {name:"Renee Zellweger"}, end: {title:"Jerry Maguire"}, properties:{roles:["Dorothy Boyd"]}}, {start: {name:"Kelly Preston"}, end: {title:"Jerry Maguire"}, properties:{roles:["Avery Bishop"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Jerry Maguire"}, properties:{roles:["Frank Cushman"]}}, {start: {name:"Jay Mohr"}, end: {title:"Jerry Maguire"}, properties:{roles:["Bob Sugar"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Bonnie Hunt"}, end: {title:"Jerry Maguire"}, properties:{roles:["Laurel Boyd"]}}, {start: {name:"Regina King"}, end: {title:"Jerry Maguire"}, properties:{roles:["Marcee Tidwell"]}}, {start: {name:"Jonathan Lipnicki"}, end: {title:"Jerry Maguire"}, properties:{roles:["Ray Boyd"]}}, {start: {name:"Wil Wheaton"}, end: {title:"Stand By Me"}, properties:{roles:["Gordie Lachance"]}}, {start: {name:"River Phoenix"}, end: {title:"Stand By Me"}, properties:{roles:["Chris Chambers"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Stand By Me"}, properties:{roles:["Vern Tessio"]}}, {start: {name:"Corey Feldman"}, end: {title:"Stand By Me"}, properties:{roles:["Teddy Duchamp"]}}, {start: {name:"John Cusack"}, end: {title:"Stand By Me"}, properties:{roles:["Denny Lachance"]}}, {start: {name:"Kiefer Sutherland"}, end: {title:"Stand By Me"}, properties:{roles:["Ace Merrill"]}}, {start: {name:"Marshall Bell"}, end: {title:"Stand By Me"}, properties:{roles:["Mr. Lachance"]}}, {start: {name:"Jack Nicholson"}, end: {title:"As Good as It Gets"}, properties:{roles:["Melvin Udall"]}}, {start: {name:"Helen Hunt"}, end: {title:"As Good as It Gets"}, properties:{roles:["Carol Connelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"As Good as It Gets"}, properties:{roles:["Simon Bishop"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"As Good as It Gets"}, properties:{roles:["Frank Sachs"]}}, {start: {name:"Robin Williams"}, end: {title:"What Dreams May Come"}, properties:{roles:["Chris Nielsen"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"What Dreams May Come"}, properties:{roles:["Albert Lewis"]}}, {start: {name:"Annabella Sciorra"}, end: {title:"What Dreams May Come"}, properties:{roles:["Annie Collins-Nielsen"]}}, {start: {name:"Max von Sydow"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Tracker"]}}, {start: {name:"Werner Herzog"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Face"]}}, {start: {name:"Ethan Hawke"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Ishmael Chambers"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Rick Yune"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Kazuo Miyamoto"]}}, {start: {name:"Max von Sydow"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Nels Gudmundsson"]}}, {start: {name:"James Cromwell"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Judge Fielding"]}}, {start: {name:"Tom Hanks"}, end: {title:"You've Got Mail"}, properties:{roles:["Joe Fox"]}}, {start: {name:"Meg Ryan"}, end: {title:"You've Got Mail"}, properties:{roles:["Kathleen Kelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"You've Got Mail"}, properties:{roles:["Frank Navasky"]}}, {start: {name:"Parker Posey"}, end: {title:"You've Got Mail"}, properties:{roles:["Patricia Eden"]}}, {start: {name:"Dave Chappelle"}, end: {title:"You've Got Mail"}, properties:{roles:["Kevin Jackson"]}}, {start: {name:"Steve Zahn"}, end: {title:"You've Got Mail"}, properties:{roles:["George Pappas"]}}, {start: {name:"Tom Hanks"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Sam Baldwin"]}}, {start: {name:"Meg Ryan"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Annie Reed"]}}, {start: {name:"Rita Wilson"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Suzy"]}}, {start: {name:"Bill Pullman"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Walter"]}}, {start: {name:"Victor Garber"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Greg"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Becky"]}}, {start: {name:"Tom Hanks"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Joe Banks"]}}, {start: {name:"Meg Ryan"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["DeDe", "Angelica Graynamore", "Patricia Graynamore"]}}, {start: {name:"Nathan Lane"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Baw"]}}, {start: {name:"Billy Crystal"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Harry Burns"]}}, {start: {name:"Meg Ryan"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Sally Albright"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Carrie Fisher"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Marie"]}}, {start: {name:"Bruno Kirby"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Jess"]}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{roles:["Mr. White"]}}, {start: {name:"Liv Tyler"}, end: {title:"That Thing You Do"}, properties:{roles:["Faye Dolan"]}}, {start: {name:"Charlize Theron"}, end: {title:"That Thing You Do"}, properties:{roles:["Tina"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Replacements"}, properties:{roles:["Shane Falco"]}}, {start: {name:"Brooke Langton"}, end: {title:"The Replacements"}, properties:{roles:["Annabelle Farrell"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Replacements"}, properties:{roles:["Jimmy McGinty"]}}, {start: {name:"Orlando Jones"}, end: {title:"The Replacements"}, properties:{roles:["Clifford Franklin"]}}, {start: {name:"Marshall Bell"}, end: {title:"RescueDawn"}, properties:{roles:["Admiral"]}}, {start: {name:"Christian Bale"}, end: {title:"RescueDawn"}, properties:{roles:["Dieter Dengler"]}}, {start: {name:"Zach Grenier"}, end: {title:"RescueDawn"}, properties:{roles:["Squad Leader"]}}, {start: {name:"Steve Zahn"}, end: {title:"RescueDawn"}, properties:{roles:["Duane"]}}, {start: {name:"Robin Williams"}, end: {title:"The Birdcage"}, properties:{roles:["Armand Goldman"]}}, {start: {name:"Nathan Lane"}, end: {title:"The Birdcage"}, properties:{roles:["Albert Goldman"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Birdcage"}, properties:{roles:["Sen. Kevin Keeley"]}}, {start: {name:"Richard Harris"}, end: {title:"Unforgiven"}, properties:{roles:["English Bob"]}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{roles:["Bill Munny"]}}, {start: {name:"Gene Hackman"}, end: {title:"Unforgiven"}, properties:{roles:["Little Bill Daggett"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Johnny Mnemonic"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Takeshi Kitano"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Takahashi"]}}, {start: {name:"Dina Meyer"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Jane"]}}, {start: {name:"Ice-T"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["J-Bone"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cloud Atlas"}, properties:{roles:["Zachry", "Dr. Henry Goose", "Isaac Sachs", "Dermot Hoggins"]}}, {start: {name:"Hugo Weaving"}, end: {title:"Cloud Atlas"}, properties:{roles:["Bill Smoke", "Haskell Moore", "Tadeusz Kesselring", "Nurse Noakes", "Boardman Mephi", "Old Georgie"]}}, {start: {name:"Halle Berry"}, end: {title:"Cloud Atlas"}, properties:{roles:["Luisa Rey", "Jocasta Ayrs", "Ovid", "Meronym"]}}, {start: {name:"Jim Broadbent"}, end: {title:"Cloud Atlas"}, properties:{roles:["Vyvyan Ayrs", "Captain Molyneux", "Timothy Cavendish"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Dr. Robert Langdon"]}}, {start: {name:"Ian McKellen"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sir Leight Teabing"]}}, {start: {name:"Audrey Tautou"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sophie Neveu"]}}, {start: {name:"Paul Bettany"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Silas"]}}, {start: {name:"Hugo Weaving"}, end: {title:"V for Vendetta"}, properties:{roles:["V"]}}, {start: {name:"Natalie Portman"}, end: {title:"V for Vendetta"}, properties:{roles:["Evey Hammond"]}}, {start: {name:"Stephen Rea"}, end: {title:"V for Vendetta"}, properties:{roles:["Eric Finch"]}}, {start: {name:"John Hurt"}, end: {title:"V for Vendetta"}, properties:{roles:["High Chancellor Adam Sutler"]}}, {start: {name:"Ben Miles"}, end: {title:"V for Vendetta"}, properties:{roles:["Dascomb"]}}, {start: {name:"Emile Hirsch"}, end: {title:"Speed Racer"}, properties:{roles:["Speed Racer"]}}, {start: {name:"John Goodman"}, end: {title:"Speed Racer"}, properties:{roles:["Pops"]}}, {start: {name:"Susan Sarandon"}, end: {title:"Speed Racer"}, properties:{roles:["Mom"]}}, {start: {name:"Matthew Fox"}, end: {title:"Speed Racer"}, properties:{roles:["Racer X"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Christina Ricci"}, end: {title:"Speed Racer"}, properties:{roles:["Trixie"]}}, {start: {name:"Rain"}, end: {title:"Speed Racer"}, properties:{roles:["Taejo Togokahn"]}}, {start: {name:"Ben Miles"}, end: {title:"Speed Racer"}, properties:{roles:["Cass Jones"]}}, {start: {name:"Rain"}, end: {title:"Ninja Assassin"}, properties:{roles:["Raizo"]}}, {start: {name:"Naomie Harris"}, end: {title:"Ninja Assassin"}, properties:{roles:["Mika Coretti"]}}, {start: {name:"Rick Yune"}, end: {title:"Ninja Assassin"}, properties:{roles:["Takeshi"]}}, {start: {name:"Ben Miles"}, end: {title:"Ninja Assassin"}, properties:{roles:["Ryan Maslow"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Green Mile"}, properties:{roles:["Paul Edgecomb"]}}, {start: {name:"Michael Clarke Duncan"}, end: {title:"The Green Mile"}, properties:{roles:["John Coffey"]}}, {start: {name:"David Morse"}, end: {title:"The Green Mile"}, properties:{roles:["Brutus \"Brutal\" Howell"]}}, {start: {name:"Bonnie Hunt"}, end: {title:"The Green Mile"}, properties:{roles:["Jan Edgecomb"]}}, {start: {name:"James Cromwell"}, end: {title:"The Green Mile"}, properties:{roles:["Warden Hal Moores"]}}, {start: {name:"Sam Rockwell"}, end: {title:"The Green Mile"}, properties:{roles:["\"Wild Bill\" Wharton"]}}, {start: {name:"Gary Sinise"}, end: {title:"The Green Mile"}, properties:{roles:["Burt Hammersmith"]}}, {start: {name:"Patricia Clarkson"}, end: {title:"The Green Mile"}, properties:{roles:["Melinda Moores"]}}, {start: {name:"Frank Langella"}, end: {title:"Frost/Nixon"}, properties:{roles:["Richard Nixon"]}}, {start: {name:"Michael Sheen"}, end: {title:"Frost/Nixon"}, properties:{roles:["David Frost"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Frost/Nixon"}, properties:{roles:["Jack Brennan"]}}, {start: {name:"Oliver Platt"}, end: {title:"Frost/Nixon"}, properties:{roles:["Bob Zelnick"]}}, {start: {name:"Sam Rockwell"}, end: {title:"Frost/Nixon"}, properties:{roles:["James Reston, Jr."]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Jack Nicholson"}, end: {title:"Hoffa"}, properties:{roles:["Hoffa"]}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{roles:["Robert \"Bobby\" Ciaro"]}}, {start: {name:"J.T. Walsh"}, end: {title:"Hoffa"}, properties:{roles:["Frank Fitzsimmons"]}}, {start: {name:"John C. Reilly"}, end: {title:"Hoffa"}, properties:{roles:["Peter \"Pete\" Connelly"]}}, {start: {name:"Tom Hanks"}, end: {title:"Apollo 13"}, properties:{roles:["Jim Lovell"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Apollo 13"}, properties:{roles:["Jack Swigert"]}}, {start: {name:"Ed Harris"}, end: {title:"Apollo 13"}, properties:{roles:["Gene Kranz"]}}, {start: {name:"Bill Paxton"}, end: {title:"Apollo 13"}, properties:{roles:["Fred Haise"]}}, {start: {name:"Gary Sinise"}, end: {title:"Apollo 13"}, properties:{roles:["Ken Mattingly"]}}, {start: {name:"Bill Paxton"}, end: {title:"Twister"}, properties:{roles:["Bill Harding"]}}, {start: {name:"Helen Hunt"}, end: {title:"Twister"}, properties:{roles:["Dr. Jo Harding"]}}, {start: {name:"Zach Grenier"}, end: {title:"Twister"}, properties:{roles:["Eddie"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Twister"}, properties:{roles:["Dustin \"Dusty\" Davis"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cast Away"}, properties:{roles:["Chuck Noland"]}}, {start: {name:"Helen Hunt"}, end: {title:"Cast Away"}, properties:{roles:["Kelly Frears"]}}, {start: {name:"Jack Nicholson"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Randle McMurphy"]}}, {start: {name:"Danny DeVito"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Martini"]}}, {start: {name:"Jack Nicholson"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Harry Sanborn"]}}, {start: {name:"Diane Keaton"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Erica Barry"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Julian Mercer"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Robin Williams"}, end: {title:"Bicentennial Man"}, properties:{roles:["Andrew Marin"]}}, {start: {name:"Oliver Platt"}, end: {title:"Bicentennial Man"}, properties:{roles:["Rupert Burns"]}}, {start: {name:"Tom Hanks"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Rep. Charlie Wilson"]}}, {start: {name:"Julia Roberts"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Joanne Herring"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Gust Avrakotos"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Polar Express"}, properties:{roles:["Hero Boy", "Father", "Conductor", "Hobo", "Scrooge", "Santa Claus"]}}, {start: {name:"Tom Hanks"}, end: {title:"A League of Their Own"}, properties:{roles:["Jimmy Dugan"]}}, {start: {name:"Geena Davis"}, end: {title:"A League of Their Own"}, properties:{roles:["Dottie Hinson"]}}, {start: {name:"Lori Petty"}, end: {title:"A League of Their Own"}, properties:{roles:["Kit Keller"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"A League of Their Own"}, properties:{roles:["Doris Murphy"]}}, {start: {name:"Madonna"}, end: {title:"A League of Their Own"}, properties:{roles:["\"All the Way\" Mae Mordabito"]}}, {start: {name:"Bill Paxton"}, end: {title:"A League of Their Own"}, properties:{roles:["Bob Hinson"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Jessica Thompson"}, end: {title:"Cloud Atlas"}, properties:{summary:"An amazing journey", rating:95}}, {start: {name:"Jessica Thompson"}, end: {title:"The Replacements"}, properties:{summary:"Silly, but fun", rating:65}}, {start: {name:"James Thompson"}, end: {title:"The Replacements"}, properties:{summary:"The coolest football movie ever", rating:100}}, {start: {name:"Angela Scope"}, end: {title:"The Replacements"}, properties:{summary:"Pretty funny at times", rating:62}}, {start: {name:"Jessica Thompson"}, end: {title:"Unforgiven"}, properties:{summary:"Dark, but compelling", rating:85}}, {start: {name:"Jessica Thompson"}, end: {title:"The Birdcage"}, properties:{summary:"Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances", rating:45}}, {start: {name:"Jessica Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"A solid romp", rating:68}}, {start: {name:"James Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"Fun, but a little far fetched", rating:65}}, {start: {name:"Jessica Thompson"}, end: {title:"Jerry Maguire"}, properties:{summary:"You had me at Jerry", rating:92}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:REVIEWED]->(end) SET r += row.properties;
+UNWIND [{start: {name:"James Thompson"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Angela Scope"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Paul Blythe"}, end: {name:"Angela Scope"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Person{name: row.end.name})
+CREATE (start)-[r:FOLLOWS]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Lilly Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Taylor Hackford"}, end: {title:"The Devil's Advocate"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Tony Scott"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"Stand By Me"}, properties:{}}, {start: {name:"James L. Brooks"}, end: {title:"As Good as It Gets"}, properties:{}}, {start: {name:"Vincent Ward"}, end: {title:"What Dreams May Come"}, properties:{}}, {start: {name:"Scott Hicks"}, end: {title:"Snow Falling on Cedars"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"You've Got Mail"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"Sleepless in Seattle"}, properties:{}}, {start: {name:"John Patrick Stanley"}, end: {title:"Joe Versus the Volcano"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{}}, {start: {name:"Howard Deutch"}, end: {title:"The Replacements"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Werner Herzog"}, end: {title:"RescueDawn"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"The Birdcage"}, properties:{}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{}}, {start: {name:"Robert Longo"}, end: {title:"Johnny Mnemonic"}, properties:{}}, {start: {name:"Tom Tykwer"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"The Da Vinci Code"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Frank Darabont"}, end: {title:"The Green Mile"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Frost/Nixon"}, properties:{}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Apollo 13"}, properties:{}}, {start: {name:"Jan de Bont"}, end: {title:"Twister"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"Cast Away"}, properties:{}}, {start: {name:"Milos Forman"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Chris Columbus"}, end: {title:"Bicentennial Man"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"Charlie Wilson's War"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"The Polar Express"}, properties:{}}, {start: {name:"Penny Marshall"}, end: {title:"A League of Their Own"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties;
+UNWIND [{start: {_id:176}, end: {_id:175}, properties:{}}, {start: {_id:174}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:178}, properties:{}}, {start: {_id:180}, end: {_id:177}, properties:{}}, {start: {_id:174}, end: {_id:180}, properties:{}}] AS row
+MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id})
+MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id})
+CREATE (start)-[r:HAS_SAME_CREATOR]->(end) SET r += row.properties;
+:commit
+:begin
+MATCH (n:`UNIQUE IMPORT LABEL`)  WITH n LIMIT 20000 REMOVE n:`UNIQUE IMPORT LABEL` REMOVE n.`UNIQUE IMPORT ID`;
+:commit
+:begin
+DROP CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE;
+:commit
\ No newline at end of file
diff --git a/neo4j/import/data.csv b/neo4j/import_old/data.csv
similarity index 100%
rename from neo4j/import/data.csv
rename to neo4j/import_old/data.csv
diff --git a/neo4j/import/data_cypher b/neo4j/import_old/data_cypher
similarity index 100%
rename from neo4j/import/data_cypher
rename to neo4j/import_old/data_cypher
diff --git a/neo4j/import/software-graph.dump b/neo4j/import_old/software-graph.dump
similarity index 100%
rename from neo4j/import/software-graph.dump
rename to neo4j/import_old/software-graph.dump
diff --git a/neo4j/scripts/insert.sh b/neo4j/scripts/insert.sh
new file mode 100644
index 0000000000000000000000000000000000000000..210a94eaddb5768b1e570d4f6677929b876f17d4
--- /dev/null
+++ b/neo4j/scripts/insert.sh
@@ -0,0 +1,110 @@
+:begin
+CREATE INDEX FOR (node:Person) ON (node.born);
+CREATE INDEX FOR (node:Movie) ON (node.released);
+CREATE CONSTRAINT ON (node:Person) ASSERT (node.name) IS UNIQUE;
+CREATE CONSTRAINT ON (node:Movie) ASSERT (node.title) IS UNIQUE;
+CREATE CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE;
+:commit
+CALL db.awaitIndexes(300);
+:begin
+UNWIND [{name:"Keanu Reeves", properties:{born:1964}}, {name:"Carrie-Anne Moss", properties:{born:1967}}, {name:"Laurence Fishburne", properties:{born:1961}}, {name:"Hugo Weaving", properties:{born:1960}}, {name:"Lilly Wachowski", properties:{born:1967}}, {name:"Lana Wachowski", properties:{born:1965}}, {name:"Joel Silver", properties:{born:1952}}, {name:"Emil Eifrem", properties:{born:1978}}, {name:"Charlize Theron", properties:{born:1975}}, {name:"Al Pacino", properties:{born:1940}}, {name:"Taylor Hackford", properties:{born:1944}}, {name:"Tom Cruise", properties:{born:1962}}, {name:"Jack Nicholson", properties:{born:1937}}, {name:"Demi Moore", properties:{born:1962}}, {name:"Kevin Bacon", properties:{born:1958}}, {name:"Kiefer Sutherland", properties:{born:1966}}, {name:"Noah Wyle", properties:{born:1971}}, {name:"Cuba Gooding Jr.", properties:{born:1968}}, {name:"Kevin Pollak", properties:{born:1957}}, {name:"J.T. Walsh", properties:{born:1943}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"James Marshall", properties:{born:1967}}, {name:"Christopher Guest", properties:{born:1948}}, {name:"Rob Reiner", properties:{born:1947}}, {name:"Aaron Sorkin", properties:{born:1961}}, {name:"Kelly McGillis", properties:{born:1957}}, {name:"Val Kilmer", properties:{born:1959}}, {name:"Anthony Edwards", properties:{born:1962}}, {name:"Tom Skerritt", properties:{born:1933}}, {name:"Meg Ryan", properties:{born:1961}}, {name:"Tony Scott", properties:{born:1944}}, {name:"Jim Cash", properties:{born:1941}}, {name:"Renee Zellweger", properties:{born:1969}}, {name:"Kelly Preston", properties:{born:1962}}, {name:"Jerry O'Connell", properties:{born:1974}}, {name:"Jay Mohr", properties:{born:1970}}, {name:"Bonnie Hunt", properties:{born:1961}}, {name:"Regina King", properties:{born:1971}}, {name:"Jonathan Lipnicki", properties:{born:1996}}, {name:"Cameron Crowe", properties:{born:1957}}, {name:"River Phoenix", properties:{born:1970}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Corey Feldman", properties:{born:1971}}, {name:"Wil Wheaton", properties:{born:1972}}, {name:"John Cusack", properties:{born:1966}}, {name:"Marshall Bell", properties:{born:1942}}, {name:"Helen Hunt", properties:{born:1963}}, {name:"Greg Kinnear", properties:{born:1963}}, {name:"James L. Brooks", properties:{born:1940}}, {name:"Annabella Sciorra", properties:{born:1960}}, {name:"Max von Sydow", properties:{born:1929}}, {name:"Werner Herzog", properties:{born:1942}}, {name:"Robin Williams", properties:{born:1951}}, {name:"Vincent Ward", properties:{born:1956}}, {name:"Ethan Hawke", properties:{born:1970}}, {name:"Rick Yune", properties:{born:1971}}, {name:"James Cromwell", properties:{born:1940}}, {name:"Scott Hicks", properties:{born:1953}}, {name:"Parker Posey", properties:{born:1968}}, {name:"Dave Chappelle", properties:{born:1973}}, {name:"Steve Zahn", properties:{born:1967}}, {name:"Tom Hanks", properties:{born:1956}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Nora Ephron", properties:{born:1941}}, {name:"Rita Wilson", properties:{born:1956}}, {name:"Bill Pullman", properties:{born:1953}}, {name:"Victor Garber", properties:{born:1949}}, {name:"Rosie O'Donnell", properties:{born:1962}}, {name:"John Patrick Stanley", properties:{born:1950}}, {name:"Nathan Lane", properties:{born:1956}}, {name:"Billy Crystal", properties:{born:1948}}, {name:"Carrie Fisher", properties:{born:1956}}, {name:"Bruno Kirby", properties:{born:1949}}, {name:"Liv Tyler", properties:{born:1977}}, {name:"Brooke Langton", properties:{born:1970}}, {name:"Gene Hackman", properties:{born:1930}}, {name:"Orlando Jones", properties:{born:1968}}, {name:"Howard Deutch", properties:{born:1950}}, {name:"Christian Bale", properties:{born:1974}}, {name:"Zach Grenier", properties:{born:1954}}, {name:"Mike Nichols", properties:{born:1931}}, {name:"Richard Harris", properties:{born:1930}}, {name:"Clint Eastwood", properties:{born:1930}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Takeshi Kitano", properties:{born:1947}}, {name:"Dina Meyer", properties:{born:1968}}, {name:"Ice-T", properties:{born:1958}}, {name:"Robert Longo", properties:{born:1953}}, {name:"Halle Berry", properties:{born:1966}}, {name:"Jim Broadbent", properties:{born:1949}}, {name:"Tom Tykwer", properties:{born:1965}}, {name:"David Mitchell", properties:{born:1969}}, {name:"Stefan Arndt", properties:{born:1961}}, {name:"Ian McKellen", properties:{born:1939}}, {name:"Audrey Tautou", properties:{born:1976}}, {name:"Paul Bettany", properties:{born:1971}}, {name:"Ron Howard", properties:{born:1954}}, {name:"Natalie Portman", properties:{born:1981}}, {name:"Stephen Rea", properties:{born:1946}}, {name:"John Hurt", properties:{born:1940}}, {name:"Ben Miles", properties:{born:1967}}, {name:"Emile Hirsch", properties:{born:1985}}, {name:"John Goodman", properties:{born:1960}}, {name:"Susan Sarandon", properties:{born:1946}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Matthew Fox", properties:{born:1966}}, {name:"Christina Ricci", properties:{born:1980}}, {name:"Rain", properties:{born:1982}}, {name:"Naomie Harris", properties:{}}, {name:"Michael Clarke Duncan", properties:{born:1957}}, {name:"David Morse", properties:{born:1953}}, {name:"Sam Rockwell", properties:{born:1968}}, {name:"Gary Sinise", properties:{born:1955}}, {name:"Patricia Clarkson", properties:{born:1959}}, {name:"Frank Darabont", properties:{born:1959}}, {name:"Frank Langella", properties:{born:1938}}, {name:"Michael Sheen", properties:{born:1969}}, {name:"Oliver Platt", properties:{born:1960}}, {name:"Danny DeVito", properties:{born:1944}}, {name:"John C. Reilly", properties:{born:1965}}, {name:"Ed Harris", properties:{born:1950}}, {name:"Bill Paxton", properties:{born:1955}}, {name:"Philip Seymour Hoffman", properties:{born:1967}}, {name:"Jan de Bont", properties:{born:1943}}, {name:"Robert Zemeckis", properties:{born:1951}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{name:"Milos Forman", properties:{born:1932}}, {name:"Diane Keaton", properties:{born:1946}}, {name:"Nancy Meyers", properties:{born:1949}}, {name:"Chris Columbus", properties:{born:1958}}, {name:"Julia Roberts", properties:{born:1967}}, {name:"Madonna", properties:{born:1954}}, {name:"Geena Davis", properties:{born:1956}}, {name:"Lori Petty", properties:{born:1963}}, {name:"Penny Marshall", properties:{born:1943}}, {name:"Paul Blythe", properties:{}}, {name:"Angela Scope", properties:{}}, {name:"Jessica Thompson", properties:{}}, {name:"James Thompson", properties:{}}] AS row
+CREATE (n:Person{name: row.name}) SET n += row.properties;
+UNWIND [{_id:171, properties:{license:"proprietary", price:"freemium", name:"Notion"}}, {_id:172, properties:{name:"Libreoffice Calc\n"}}, {_id:173, properties:{name:"Trello"}}, {_id:174, properties:{name:"Word"}}, {_id:175, properties:{name:"Google Slides"}}, {_id:176, properties:{name:"Google Sheets"}}, {_id:177, properties:{name:"Excel"}}, {_id:178, properties:{name:"Libreoffice Writer\n"}}, {_id:179, properties:{name:"Libreoffice Impress\n"}}, {_id:180, properties:{name:"Powerpoint"}}, {_id:181, properties:{name:"Google Docs\n"}}] AS row
+CREATE (n:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row._id}) SET n += row.properties SET n:Software;
+UNWIND [{title:"The Matrix", properties:{tagline:"Welcome to the Real World", released:1999}}, {title:"The Matrix Reloaded", properties:{tagline:"Free your mind", released:2003}}, {title:"The Matrix Revolutions", properties:{tagline:"Everything that has a beginning has an end", released:2003}}, {title:"The Devil's Advocate", properties:{tagline:"Evil has its winning ways", released:1997}}, {title:"A Few Good Men", properties:{tagline:"In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth.", released:1992}}, {title:"Top Gun", properties:{tagline:"I feel the need, the need for speed.", released:1986}}, {title:"Jerry Maguire", properties:{tagline:"The rest of his life begins now.", released:2000}}, {title:"Stand By Me", properties:{tagline:"For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of.", released:1986}}, {title:"As Good as It Gets", properties:{tagline:"A comedy from the heart that goes for the throat.", released:1997}}, {title:"What Dreams May Come", properties:{tagline:"After life there is more. The end is just the beginning.", released:1998}}, {title:"Snow Falling on Cedars", properties:{tagline:"First loves last. Forever.", released:1999}}, {title:"You've Got Mail", properties:{tagline:"At odds in life... in love on-line.", released:1998}}, {title:"Sleepless in Seattle", properties:{tagline:"What if someone you never met, someone you never saw, someone you never knew was the only someone for you?", released:1993}}, {title:"Joe Versus the Volcano", properties:{tagline:"A story of love, lava and burning desire.", released:1990}}, {title:"When Harry Met Sally", properties:{tagline:"Can two friends sleep together and still love each other in the morning?", released:1998}}, {title:"That Thing You Do", properties:{tagline:"In every life there comes a time when that thing you dream becomes that thing you do", released:1996}}, {title:"The Replacements", properties:{tagline:"Pain heals, Chicks dig scars... Glory lasts forever", released:2000}}, {title:"RescueDawn", properties:{tagline:"Based on the extraordinary true story of one man's fight for freedom", released:2006}}, {title:"The Birdcage", properties:{tagline:"Come as you are", released:1996}}, {title:"Unforgiven", properties:{tagline:"It's a hell of a thing, killing a man", released:1992}}] AS row
+CREATE (n:Movie{title: row.title}) SET n += row.properties;
+UNWIND [{title:"Johnny Mnemonic", properties:{tagline:"The hottest data on earth. In the coolest head in town", released:1995}}, {title:"Cloud Atlas", properties:{tagline:"Everything is connected", released:2012}}, {title:"The Da Vinci Code", properties:{tagline:"Break The Codes", released:2006}}, {title:"V for Vendetta", properties:{tagline:"Freedom! Forever!", released:2006}}, {title:"Speed Racer", properties:{tagline:"Speed has no limits", released:2008}}, {title:"Ninja Assassin", properties:{tagline:"Prepare to enter a secret world of assassins", released:2009}}, {title:"The Green Mile", properties:{tagline:"Walk a mile you'll never forget.", released:1999}}, {title:"Frost/Nixon", properties:{tagline:"400 million people were waiting for the truth.", released:2008}}, {title:"Hoffa", properties:{tagline:"He didn't want law. He wanted justice.", released:1992}}, {title:"Apollo 13", properties:{tagline:"Houston, we have a problem.", released:1995}}, {title:"Twister", properties:{tagline:"Don't Breathe. Don't Look Back.", released:1996}}, {title:"Cast Away", properties:{tagline:"At the edge of the world, his journey begins.", released:2000}}, {title:"One Flew Over the Cuckoo's Nest", properties:{tagline:"If he's crazy, what does that make you?", released:1975}}, {title:"Something's Gotta Give", properties:{released:2003}}, {title:"Bicentennial Man", properties:{tagline:"One robot's 200 year journey to become an ordinary man.", released:1999}}, {title:"Charlie Wilson's War", properties:{tagline:"A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire.", released:2007}}, {title:"The Polar Express", properties:{tagline:"This Holiday Season… Believe", released:2004}}, {title:"A League of Their Own", properties:{tagline:"Once in a lifetime you get a chance to do something different.", released:1992}}] AS row
+CREATE (n:Movie{title: row.title}) SET n += row.properties;
+:commit
+:begin
+UNWIND [{start: {name:"Joel Silver"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Stefan Arndt"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:PRODUCED]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Jim Cash"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"David Mitchell"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:WROTE]->(end) SET r += row.properties;
+UNWIND [{start: {_id:172}, end: {_id:177}, properties:{}}, {start: {_id:173}, end: {_id:171}, properties:{}}, {start: {_id:171}, end: {_id:181}, properties:{}}, {start: {_id:181}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:171}, properties:{}}, {start: {_id:178}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:175}, properties:{}}, {start: {_id:179}, end: {_id:180}, properties:{}}, {start: {_id:180}, end: {_id:175}, properties:{}}] AS row
+MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id})
+MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id})
+CREATE (start)-[r:SIMILAR]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Keanu Reeves"}, end: {title:"The Matrix"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Emil Eifrem"}, end: {title:"The Matrix"}, properties:{roles:["Emil"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Kevin Lomax"]}}, {start: {name:"Charlize Theron"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Mary Ann Lomax"]}}, {start: {name:"Al Pacino"}, end: {title:"The Devil's Advocate"}, properties:{roles:["John Milton"]}}, {start: {name:"Tom Cruise"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Daniel Kaffee"]}}, {start: {name:"Jack Nicholson"}, end: {title:"A Few Good Men"}, properties:{roles:["Col. Nathan R. Jessup"]}}, {start: {name:"Demi Moore"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Cdr. JoAnne Galloway"]}}, {start: {name:"Kevin Bacon"}, end: {title:"A Few Good Men"}, properties:{roles:["Capt. Jack Ross"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Kiefer Sutherland"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Jonathan Kendrick"]}}, {start: {name:"Noah Wyle"}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Jeffrey Barnes"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Carl Hammaker"]}}, {start: {name:"Kevin Pollak"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Sam Weinberg"]}}, {start: {name:"J.T. Walsh"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Col. Matthew Andrew Markinson"]}}, {start: {name:"James Marshall"}, end: {title:"A Few Good Men"}, properties:{roles:["Pfc. Louden Downey"]}}, {start: {name:"Christopher Guest"}, end: {title:"A Few Good Men"}, properties:{roles:["Dr. Stone"]}}, {start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{roles:["Man in Bar"]}}, {start: {name:"Tom Cruise"}, end: {title:"Top Gun"}, properties:{roles:["Maverick"]}}, {start: {name:"Kelly McGillis"}, end: {title:"Top Gun"}, properties:{roles:["Charlie"]}}, {start: {name:"Val Kilmer"}, end: {title:"Top Gun"}, properties:{roles:["Iceman"]}}, {start: {name:"Anthony Edwards"}, end: {title:"Top Gun"}, properties:{roles:["Goose"]}}, {start: {name:"Tom Skerritt"}, end: {title:"Top Gun"}, properties:{roles:["Viper"]}}, {start: {name:"Meg Ryan"}, end: {title:"Top Gun"}, properties:{roles:["Carole"]}}, {start: {name:"Tom Cruise"}, end: {title:"Jerry Maguire"}, properties:{roles:["Jerry Maguire"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"Jerry Maguire"}, properties:{roles:["Rod Tidwell"]}}, {start: {name:"Renee Zellweger"}, end: {title:"Jerry Maguire"}, properties:{roles:["Dorothy Boyd"]}}, {start: {name:"Kelly Preston"}, end: {title:"Jerry Maguire"}, properties:{roles:["Avery Bishop"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Jerry Maguire"}, properties:{roles:["Frank Cushman"]}}, {start: {name:"Jay Mohr"}, end: {title:"Jerry Maguire"}, properties:{roles:["Bob Sugar"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Bonnie Hunt"}, end: {title:"Jerry Maguire"}, properties:{roles:["Laurel Boyd"]}}, {start: {name:"Regina King"}, end: {title:"Jerry Maguire"}, properties:{roles:["Marcee Tidwell"]}}, {start: {name:"Jonathan Lipnicki"}, end: {title:"Jerry Maguire"}, properties:{roles:["Ray Boyd"]}}, {start: {name:"Wil Wheaton"}, end: {title:"Stand By Me"}, properties:{roles:["Gordie Lachance"]}}, {start: {name:"River Phoenix"}, end: {title:"Stand By Me"}, properties:{roles:["Chris Chambers"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Stand By Me"}, properties:{roles:["Vern Tessio"]}}, {start: {name:"Corey Feldman"}, end: {title:"Stand By Me"}, properties:{roles:["Teddy Duchamp"]}}, {start: {name:"John Cusack"}, end: {title:"Stand By Me"}, properties:{roles:["Denny Lachance"]}}, {start: {name:"Kiefer Sutherland"}, end: {title:"Stand By Me"}, properties:{roles:["Ace Merrill"]}}, {start: {name:"Marshall Bell"}, end: {title:"Stand By Me"}, properties:{roles:["Mr. Lachance"]}}, {start: {name:"Jack Nicholson"}, end: {title:"As Good as It Gets"}, properties:{roles:["Melvin Udall"]}}, {start: {name:"Helen Hunt"}, end: {title:"As Good as It Gets"}, properties:{roles:["Carol Connelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"As Good as It Gets"}, properties:{roles:["Simon Bishop"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"As Good as It Gets"}, properties:{roles:["Frank Sachs"]}}, {start: {name:"Robin Williams"}, end: {title:"What Dreams May Come"}, properties:{roles:["Chris Nielsen"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"What Dreams May Come"}, properties:{roles:["Albert Lewis"]}}, {start: {name:"Annabella Sciorra"}, end: {title:"What Dreams May Come"}, properties:{roles:["Annie Collins-Nielsen"]}}, {start: {name:"Max von Sydow"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Tracker"]}}, {start: {name:"Werner Herzog"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Face"]}}, {start: {name:"Ethan Hawke"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Ishmael Chambers"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Rick Yune"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Kazuo Miyamoto"]}}, {start: {name:"Max von Sydow"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Nels Gudmundsson"]}}, {start: {name:"James Cromwell"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Judge Fielding"]}}, {start: {name:"Tom Hanks"}, end: {title:"You've Got Mail"}, properties:{roles:["Joe Fox"]}}, {start: {name:"Meg Ryan"}, end: {title:"You've Got Mail"}, properties:{roles:["Kathleen Kelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"You've Got Mail"}, properties:{roles:["Frank Navasky"]}}, {start: {name:"Parker Posey"}, end: {title:"You've Got Mail"}, properties:{roles:["Patricia Eden"]}}, {start: {name:"Dave Chappelle"}, end: {title:"You've Got Mail"}, properties:{roles:["Kevin Jackson"]}}, {start: {name:"Steve Zahn"}, end: {title:"You've Got Mail"}, properties:{roles:["George Pappas"]}}, {start: {name:"Tom Hanks"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Sam Baldwin"]}}, {start: {name:"Meg Ryan"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Annie Reed"]}}, {start: {name:"Rita Wilson"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Suzy"]}}, {start: {name:"Bill Pullman"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Walter"]}}, {start: {name:"Victor Garber"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Greg"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Becky"]}}, {start: {name:"Tom Hanks"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Joe Banks"]}}, {start: {name:"Meg Ryan"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["DeDe", "Angelica Graynamore", "Patricia Graynamore"]}}, {start: {name:"Nathan Lane"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Baw"]}}, {start: {name:"Billy Crystal"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Harry Burns"]}}, {start: {name:"Meg Ryan"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Sally Albright"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Carrie Fisher"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Marie"]}}, {start: {name:"Bruno Kirby"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Jess"]}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{roles:["Mr. White"]}}, {start: {name:"Liv Tyler"}, end: {title:"That Thing You Do"}, properties:{roles:["Faye Dolan"]}}, {start: {name:"Charlize Theron"}, end: {title:"That Thing You Do"}, properties:{roles:["Tina"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Replacements"}, properties:{roles:["Shane Falco"]}}, {start: {name:"Brooke Langton"}, end: {title:"The Replacements"}, properties:{roles:["Annabelle Farrell"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Replacements"}, properties:{roles:["Jimmy McGinty"]}}, {start: {name:"Orlando Jones"}, end: {title:"The Replacements"}, properties:{roles:["Clifford Franklin"]}}, {start: {name:"Marshall Bell"}, end: {title:"RescueDawn"}, properties:{roles:["Admiral"]}}, {start: {name:"Christian Bale"}, end: {title:"RescueDawn"}, properties:{roles:["Dieter Dengler"]}}, {start: {name:"Zach Grenier"}, end: {title:"RescueDawn"}, properties:{roles:["Squad Leader"]}}, {start: {name:"Steve Zahn"}, end: {title:"RescueDawn"}, properties:{roles:["Duane"]}}, {start: {name:"Robin Williams"}, end: {title:"The Birdcage"}, properties:{roles:["Armand Goldman"]}}, {start: {name:"Nathan Lane"}, end: {title:"The Birdcage"}, properties:{roles:["Albert Goldman"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Birdcage"}, properties:{roles:["Sen. Kevin Keeley"]}}, {start: {name:"Richard Harris"}, end: {title:"Unforgiven"}, properties:{roles:["English Bob"]}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{roles:["Bill Munny"]}}, {start: {name:"Gene Hackman"}, end: {title:"Unforgiven"}, properties:{roles:["Little Bill Daggett"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Johnny Mnemonic"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Takeshi Kitano"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Takahashi"]}}, {start: {name:"Dina Meyer"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Jane"]}}, {start: {name:"Ice-T"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["J-Bone"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cloud Atlas"}, properties:{roles:["Zachry", "Dr. Henry Goose", "Isaac Sachs", "Dermot Hoggins"]}}, {start: {name:"Hugo Weaving"}, end: {title:"Cloud Atlas"}, properties:{roles:["Bill Smoke", "Haskell Moore", "Tadeusz Kesselring", "Nurse Noakes", "Boardman Mephi", "Old Georgie"]}}, {start: {name:"Halle Berry"}, end: {title:"Cloud Atlas"}, properties:{roles:["Luisa Rey", "Jocasta Ayrs", "Ovid", "Meronym"]}}, {start: {name:"Jim Broadbent"}, end: {title:"Cloud Atlas"}, properties:{roles:["Vyvyan Ayrs", "Captain Molyneux", "Timothy Cavendish"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Dr. Robert Langdon"]}}, {start: {name:"Ian McKellen"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sir Leight Teabing"]}}, {start: {name:"Audrey Tautou"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sophie Neveu"]}}, {start: {name:"Paul Bettany"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Silas"]}}, {start: {name:"Hugo Weaving"}, end: {title:"V for Vendetta"}, properties:{roles:["V"]}}, {start: {name:"Natalie Portman"}, end: {title:"V for Vendetta"}, properties:{roles:["Evey Hammond"]}}, {start: {name:"Stephen Rea"}, end: {title:"V for Vendetta"}, properties:{roles:["Eric Finch"]}}, {start: {name:"John Hurt"}, end: {title:"V for Vendetta"}, properties:{roles:["High Chancellor Adam Sutler"]}}, {start: {name:"Ben Miles"}, end: {title:"V for Vendetta"}, properties:{roles:["Dascomb"]}}, {start: {name:"Emile Hirsch"}, end: {title:"Speed Racer"}, properties:{roles:["Speed Racer"]}}, {start: {name:"John Goodman"}, end: {title:"Speed Racer"}, properties:{roles:["Pops"]}}, {start: {name:"Susan Sarandon"}, end: {title:"Speed Racer"}, properties:{roles:["Mom"]}}, {start: {name:"Matthew Fox"}, end: {title:"Speed Racer"}, properties:{roles:["Racer X"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Christina Ricci"}, end: {title:"Speed Racer"}, properties:{roles:["Trixie"]}}, {start: {name:"Rain"}, end: {title:"Speed Racer"}, properties:{roles:["Taejo Togokahn"]}}, {start: {name:"Ben Miles"}, end: {title:"Speed Racer"}, properties:{roles:["Cass Jones"]}}, {start: {name:"Rain"}, end: {title:"Ninja Assassin"}, properties:{roles:["Raizo"]}}, {start: {name:"Naomie Harris"}, end: {title:"Ninja Assassin"}, properties:{roles:["Mika Coretti"]}}, {start: {name:"Rick Yune"}, end: {title:"Ninja Assassin"}, properties:{roles:["Takeshi"]}}, {start: {name:"Ben Miles"}, end: {title:"Ninja Assassin"}, properties:{roles:["Ryan Maslow"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Green Mile"}, properties:{roles:["Paul Edgecomb"]}}, {start: {name:"Michael Clarke Duncan"}, end: {title:"The Green Mile"}, properties:{roles:["John Coffey"]}}, {start: {name:"David Morse"}, end: {title:"The Green Mile"}, properties:{roles:["Brutus \"Brutal\" Howell"]}}, {start: {name:"Bonnie Hunt"}, end: {title:"The Green Mile"}, properties:{roles:["Jan Edgecomb"]}}, {start: {name:"James Cromwell"}, end: {title:"The Green Mile"}, properties:{roles:["Warden Hal Moores"]}}, {start: {name:"Sam Rockwell"}, end: {title:"The Green Mile"}, properties:{roles:["\"Wild Bill\" Wharton"]}}, {start: {name:"Gary Sinise"}, end: {title:"The Green Mile"}, properties:{roles:["Burt Hammersmith"]}}, {start: {name:"Patricia Clarkson"}, end: {title:"The Green Mile"}, properties:{roles:["Melinda Moores"]}}, {start: {name:"Frank Langella"}, end: {title:"Frost/Nixon"}, properties:{roles:["Richard Nixon"]}}, {start: {name:"Michael Sheen"}, end: {title:"Frost/Nixon"}, properties:{roles:["David Frost"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Frost/Nixon"}, properties:{roles:["Jack Brennan"]}}, {start: {name:"Oliver Platt"}, end: {title:"Frost/Nixon"}, properties:{roles:["Bob Zelnick"]}}, {start: {name:"Sam Rockwell"}, end: {title:"Frost/Nixon"}, properties:{roles:["James Reston, Jr."]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Jack Nicholson"}, end: {title:"Hoffa"}, properties:{roles:["Hoffa"]}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{roles:["Robert \"Bobby\" Ciaro"]}}, {start: {name:"J.T. Walsh"}, end: {title:"Hoffa"}, properties:{roles:["Frank Fitzsimmons"]}}, {start: {name:"John C. Reilly"}, end: {title:"Hoffa"}, properties:{roles:["Peter \"Pete\" Connelly"]}}, {start: {name:"Tom Hanks"}, end: {title:"Apollo 13"}, properties:{roles:["Jim Lovell"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Apollo 13"}, properties:{roles:["Jack Swigert"]}}, {start: {name:"Ed Harris"}, end: {title:"Apollo 13"}, properties:{roles:["Gene Kranz"]}}, {start: {name:"Bill Paxton"}, end: {title:"Apollo 13"}, properties:{roles:["Fred Haise"]}}, {start: {name:"Gary Sinise"}, end: {title:"Apollo 13"}, properties:{roles:["Ken Mattingly"]}}, {start: {name:"Bill Paxton"}, end: {title:"Twister"}, properties:{roles:["Bill Harding"]}}, {start: {name:"Helen Hunt"}, end: {title:"Twister"}, properties:{roles:["Dr. Jo Harding"]}}, {start: {name:"Zach Grenier"}, end: {title:"Twister"}, properties:{roles:["Eddie"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Twister"}, properties:{roles:["Dustin \"Dusty\" Davis"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cast Away"}, properties:{roles:["Chuck Noland"]}}, {start: {name:"Helen Hunt"}, end: {title:"Cast Away"}, properties:{roles:["Kelly Frears"]}}, {start: {name:"Jack Nicholson"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Randle McMurphy"]}}, {start: {name:"Danny DeVito"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Martini"]}}, {start: {name:"Jack Nicholson"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Harry Sanborn"]}}, {start: {name:"Diane Keaton"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Erica Barry"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Julian Mercer"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Robin Williams"}, end: {title:"Bicentennial Man"}, properties:{roles:["Andrew Marin"]}}, {start: {name:"Oliver Platt"}, end: {title:"Bicentennial Man"}, properties:{roles:["Rupert Burns"]}}, {start: {name:"Tom Hanks"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Rep. Charlie Wilson"]}}, {start: {name:"Julia Roberts"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Joanne Herring"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Gust Avrakotos"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Polar Express"}, properties:{roles:["Hero Boy", "Father", "Conductor", "Hobo", "Scrooge", "Santa Claus"]}}, {start: {name:"Tom Hanks"}, end: {title:"A League of Their Own"}, properties:{roles:["Jimmy Dugan"]}}, {start: {name:"Geena Davis"}, end: {title:"A League of Their Own"}, properties:{roles:["Dottie Hinson"]}}, {start: {name:"Lori Petty"}, end: {title:"A League of Their Own"}, properties:{roles:["Kit Keller"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"A League of Their Own"}, properties:{roles:["Doris Murphy"]}}, {start: {name:"Madonna"}, end: {title:"A League of Their Own"}, properties:{roles:["\"All the Way\" Mae Mordabito"]}}, {start: {name:"Bill Paxton"}, end: {title:"A League of Their Own"}, properties:{roles:["Bob Hinson"]}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Jessica Thompson"}, end: {title:"Cloud Atlas"}, properties:{summary:"An amazing journey", rating:95}}, {start: {name:"Jessica Thompson"}, end: {title:"The Replacements"}, properties:{summary:"Silly, but fun", rating:65}}, {start: {name:"James Thompson"}, end: {title:"The Replacements"}, properties:{summary:"The coolest football movie ever", rating:100}}, {start: {name:"Angela Scope"}, end: {title:"The Replacements"}, properties:{summary:"Pretty funny at times", rating:62}}, {start: {name:"Jessica Thompson"}, end: {title:"Unforgiven"}, properties:{summary:"Dark, but compelling", rating:85}}, {start: {name:"Jessica Thompson"}, end: {title:"The Birdcage"}, properties:{summary:"Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances", rating:45}}, {start: {name:"Jessica Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"A solid romp", rating:68}}, {start: {name:"James Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"Fun, but a little far fetched", rating:65}}, {start: {name:"Jessica Thompson"}, end: {title:"Jerry Maguire"}, properties:{summary:"You had me at Jerry", rating:92}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:REVIEWED]->(end) SET r += row.properties;
+UNWIND [{start: {name:"James Thompson"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Angela Scope"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Paul Blythe"}, end: {name:"Angela Scope"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Person{name: row.end.name})
+CREATE (start)-[r:FOLLOWS]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Lilly Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Taylor Hackford"}, end: {title:"The Devil's Advocate"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Tony Scott"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"Stand By Me"}, properties:{}}, {start: {name:"James L. Brooks"}, end: {title:"As Good as It Gets"}, properties:{}}, {start: {name:"Vincent Ward"}, end: {title:"What Dreams May Come"}, properties:{}}, {start: {name:"Scott Hicks"}, end: {title:"Snow Falling on Cedars"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"You've Got Mail"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"Sleepless in Seattle"}, properties:{}}, {start: {name:"John Patrick Stanley"}, end: {title:"Joe Versus the Volcano"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{}}, {start: {name:"Howard Deutch"}, end: {title:"The Replacements"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Werner Herzog"}, end: {title:"RescueDawn"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"The Birdcage"}, properties:{}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{}}, {start: {name:"Robert Longo"}, end: {title:"Johnny Mnemonic"}, properties:{}}, {start: {name:"Tom Tykwer"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"The Da Vinci Code"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Frank Darabont"}, end: {title:"The Green Mile"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Frost/Nixon"}, properties:{}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Apollo 13"}, properties:{}}, {start: {name:"Jan de Bont"}, end: {title:"Twister"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"Cast Away"}, properties:{}}, {start: {name:"Milos Forman"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties;
+UNWIND [{start: {name:"Chris Columbus"}, end: {title:"Bicentennial Man"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"Charlie Wilson's War"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"The Polar Express"}, properties:{}}, {start: {name:"Penny Marshall"}, end: {title:"A League of Their Own"}, properties:{}}] AS row
+MATCH (start:Person{name: row.start.name})
+MATCH (end:Movie{title: row.end.title})
+CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties;
+UNWIND [{start: {_id:176}, end: {_id:175}, properties:{}}, {start: {_id:174}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:178}, properties:{}}, {start: {_id:180}, end: {_id:177}, properties:{}}, {start: {_id:174}, end: {_id:180}, properties:{}}] AS row
+MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id})
+MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id})
+CREATE (start)-[r:HAS_SAME_CREATOR]->(end) SET r += row.properties;
+:commit
+:begin
+MATCH (n:`UNIQUE IMPORT LABEL`)  WITH n LIMIT 20000 REMOVE n:`UNIQUE IMPORT LABEL` REMOVE n.`UNIQUE IMPORT ID`;
+:commit
+:begin
+DROP CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE;
+:commit
\ No newline at end of file
diff --git a/neo4j/scripts/reset_db.sh b/neo4j/scripts/reset_db.sh
new file mode 100755
index 0000000000000000000000000000000000000000..638927e765ffc023270d4488ee8fe2ec3d98e91e
--- /dev/null
+++ b/neo4j/scripts/reset_db.sh
@@ -0,0 +1 @@
+docker exec -it neo4j cypher-shell -u neo4j -p test --non-interactive -f import/reset.cypher
\ No newline at end of file
diff --git a/sg-frontend/package-lock.json b/sg-frontend/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..a5cfadcb5198036e1fc0e9a5cac327dc6d7221a6
--- /dev/null
+++ b/sg-frontend/package-lock.json
@@ -0,0 +1,2419 @@
+{
+  "name": "sg-frontend",
+  "version": "0.0.0",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "sg-frontend",
+      "version": "0.0.0",
+      "dependencies": {
+        "svelte-select": "^4.4.7",
+        "svelte-spa-router": "^3.3.0"
+      },
+      "devDependencies": {
+        "@sveltejs/vite-plugin-svelte": "^1.0.2",
+        "@tsconfig/svelte": "^3.0.0",
+        "svelte": "^3.49.0",
+        "svelte-check": "^2.8.1",
+        "svelte-preprocess": "^4.10.7",
+        "tslib": "^2.4.0",
+        "typescript": "^4.6.4",
+        "vite": "^3.1.0"
+      }
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.14.tgz",
+      "integrity": "sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.14.tgz",
+      "integrity": "sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+      "dev": true
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.17",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+      "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/resolve-uri": "3.1.0",
+        "@jridgewell/sourcemap-codec": "1.4.14"
+      }
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@sveltejs/vite-plugin-svelte": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.2.0.tgz",
+      "integrity": "sha512-DT2oUkWAloH1tO7X5cQ4uDxQofaIS76skyFMElKtoqT6HJao+D82LI5i+0jPaSSmO7ex3Pa6jGYMlWy9ZJ1cdQ==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.3.4",
+        "deepmerge": "^4.2.2",
+        "kleur": "^4.1.5",
+        "magic-string": "^0.26.7",
+        "svelte-hmr": "^0.15.1",
+        "vitefu": "^0.2.1"
+      },
+      "engines": {
+        "node": "^14.18.0 || >= 16"
+      },
+      "peerDependencies": {
+        "diff-match-patch": "^1.0.5",
+        "svelte": "^3.44.0",
+        "vite": "^3.0.0"
+      },
+      "peerDependenciesMeta": {
+        "diff-match-patch": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@tsconfig/svelte": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz",
+      "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==",
+      "dev": true
+    },
+    "node_modules/@types/node": {
+      "version": "18.11.9",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
+      "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
+      "dev": true
+    },
+    "node_modules/@types/pug": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz",
+      "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
+      "dev": true
+    },
+    "node_modules/@types/sass": {
+      "version": "1.43.1",
+      "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz",
+      "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://paulmillr.com/funding/"
+        }
+      ],
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/deepmerge": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+      "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/detect-indent": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
+      "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/es6-promise": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
+      "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==",
+      "dev": true
+    },
+    "node_modules/esbuild": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.14.tgz",
+      "integrity": "sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/android-arm": "0.15.14",
+        "@esbuild/linux-loong64": "0.15.14",
+        "esbuild-android-64": "0.15.14",
+        "esbuild-android-arm64": "0.15.14",
+        "esbuild-darwin-64": "0.15.14",
+        "esbuild-darwin-arm64": "0.15.14",
+        "esbuild-freebsd-64": "0.15.14",
+        "esbuild-freebsd-arm64": "0.15.14",
+        "esbuild-linux-32": "0.15.14",
+        "esbuild-linux-64": "0.15.14",
+        "esbuild-linux-arm": "0.15.14",
+        "esbuild-linux-arm64": "0.15.14",
+        "esbuild-linux-mips64le": "0.15.14",
+        "esbuild-linux-ppc64le": "0.15.14",
+        "esbuild-linux-riscv64": "0.15.14",
+        "esbuild-linux-s390x": "0.15.14",
+        "esbuild-netbsd-64": "0.15.14",
+        "esbuild-openbsd-64": "0.15.14",
+        "esbuild-sunos-64": "0.15.14",
+        "esbuild-windows-32": "0.15.14",
+        "esbuild-windows-64": "0.15.14",
+        "esbuild-windows-arm64": "0.15.14"
+      }
+    },
+    "node_modules/esbuild-android-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.14.tgz",
+      "integrity": "sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-android-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.14.tgz",
+      "integrity": "sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-darwin-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.14.tgz",
+      "integrity": "sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-darwin-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.14.tgz",
+      "integrity": "sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-freebsd-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.14.tgz",
+      "integrity": "sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-freebsd-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.14.tgz",
+      "integrity": "sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-linux-32": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.14.tgz",
+      "integrity": "sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-linux-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.14.tgz",
+      "integrity": "sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-linux-arm": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.14.tgz",
+      "integrity": "sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-linux-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.14.tgz",
+      "integrity": "sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-linux-mips64le": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.14.tgz",
+      "integrity": "sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==",
+      "cpu": [
+        "mips64el"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-linux-ppc64le": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.14.tgz",
+      "integrity": "sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-linux-riscv64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.14.tgz",
+      "integrity": "sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-linux-s390x": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.14.tgz",
+      "integrity": "sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-netbsd-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.14.tgz",
+      "integrity": "sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-openbsd-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.14.tgz",
+      "integrity": "sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-sunos-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.14.tgz",
+      "integrity": "sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-windows-32": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.14.tgz",
+      "integrity": "sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-windows-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.14.tgz",
+      "integrity": "sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/esbuild-windows-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.14.tgz",
+      "integrity": "sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/fast-glob": {
+      "version": "3.2.12",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fastq": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+      "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+      "dev": true,
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.10",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+      "dev": true
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dev": true,
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.11.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+      "dev": true,
+      "dependencies": {
+        "has": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/kleur": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+      "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/magic-string": {
+      "version": "0.26.7",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
+      "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
+      "dev": true,
+      "dependencies": {
+        "sourcemap-codec": "^1.4.8"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/min-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.6"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/mri": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+      "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+      "dev": true,
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "dev": true
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.4.19",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz",
+      "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        }
+      ],
+      "dependencies": {
+        "nanoid": "^3.3.4",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/regexparam": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.1.tgz",
+      "integrity": "sha512-zRgSaYemnNYxUv+/5SeoHI0eJIgTL/A2pUtXUPLHQxUldagouJ9p+K6IbIZ/JiQuCEv2E2B1O11SjVQy3aMCkw==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve": {
+      "version": "1.22.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+      "dev": true,
+      "dependencies": {
+        "is-core-module": "^2.9.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true,
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "2.79.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
+      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+      "dev": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/sade": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
+      "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+      "dev": true,
+      "dependencies": {
+        "mri": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sander": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz",
+      "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==",
+      "dev": true,
+      "dependencies": {
+        "es6-promise": "^3.1.2",
+        "graceful-fs": "^4.1.3",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.2"
+      }
+    },
+    "node_modules/sorcery": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz",
+      "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==",
+      "dev": true,
+      "dependencies": {
+        "buffer-crc32": "^0.2.5",
+        "minimist": "^1.2.0",
+        "sander": "^0.5.0",
+        "sourcemap-codec": "^1.3.0"
+      },
+      "bin": {
+        "sorcery": "bin/index.js"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "dev": true
+    },
+    "node_modules/strip-indent": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+      "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+      "dev": true,
+      "dependencies": {
+        "min-indent": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/svelte": {
+      "version": "3.53.1",
+      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz",
+      "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/svelte-check": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz",
+      "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/trace-mapping": "^0.3.9",
+        "chokidar": "^3.4.1",
+        "fast-glob": "^3.2.7",
+        "import-fresh": "^3.2.1",
+        "picocolors": "^1.0.0",
+        "sade": "^1.7.4",
+        "svelte-preprocess": "^4.0.0",
+        "typescript": "*"
+      },
+      "bin": {
+        "svelte-check": "bin/svelte-check"
+      },
+      "peerDependencies": {
+        "svelte": "^3.24.0"
+      }
+    },
+    "node_modules/svelte-hmr": {
+      "version": "0.15.1",
+      "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz",
+      "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20 || ^14.13.1 || >= 16"
+      },
+      "peerDependencies": {
+        "svelte": ">=3.19.0"
+      }
+    },
+    "node_modules/svelte-preprocess": {
+      "version": "4.10.7",
+      "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz",
+      "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "@types/pug": "^2.0.4",
+        "@types/sass": "^1.16.0",
+        "detect-indent": "^6.0.0",
+        "magic-string": "^0.25.7",
+        "sorcery": "^0.10.0",
+        "strip-indent": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 9.11.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.10.2",
+        "coffeescript": "^2.5.1",
+        "less": "^3.11.3 || ^4.0.0",
+        "postcss": "^7 || ^8",
+        "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0",
+        "pug": "^3.0.0",
+        "sass": "^1.26.8",
+        "stylus": "^0.55.0",
+        "sugarss": "^2.0.0",
+        "svelte": "^3.23.0",
+        "typescript": "^3.9.5 || ^4.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@babel/core": {
+          "optional": true
+        },
+        "coffeescript": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "node-sass": {
+          "optional": true
+        },
+        "postcss": {
+          "optional": true
+        },
+        "postcss-load-config": {
+          "optional": true
+        },
+        "pug": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/svelte-preprocess/node_modules/magic-string": {
+      "version": "0.25.9",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "dev": true,
+      "dependencies": {
+        "sourcemap-codec": "^1.4.8"
+      }
+    },
+    "node_modules/svelte-select": {
+      "version": "4.4.7",
+      "resolved": "https://registry.npmjs.org/svelte-select/-/svelte-select-4.4.7.tgz",
+      "integrity": "sha512-fIf9Z8rPI6F8naHZ9wjXT0Pv5gLyhdHAFkHFJnCfVVfELE8e82uOoF0xEVQP6Kir+b4Q5yOvNAzZ61WbSU6A0A=="
+    },
+    "node_modules/svelte-spa-router": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/svelte-spa-router/-/svelte-spa-router-3.3.0.tgz",
+      "integrity": "sha512-cwRNe7cxD43sCvSfEeaKiNZg3FCizGxeMcf7CPiWRP3jKXjEma3vxyyuDtPOam6nWbVxl9TNM3hlE/i87ZlqcQ==",
+      "dependencies": {
+        "regexparam": "2.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ItalyPaleAle"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
+      "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
+      "dev": true
+    },
+    "node_modules/typescript": {
+      "version": "4.9.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz",
+      "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==",
+      "dev": true,
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=4.2.0"
+      }
+    },
+    "node_modules/vite": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz",
+      "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==",
+      "dev": true,
+      "dependencies": {
+        "esbuild": "^0.15.9",
+        "postcss": "^8.4.18",
+        "resolve": "^1.22.1",
+        "rollup": "^2.79.1"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      },
+      "peerDependencies": {
+        "@types/node": ">= 14",
+        "less": "*",
+        "sass": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vitefu": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.1.tgz",
+      "integrity": "sha512-clkvXTAeUf+XQKm3bhWUhT4pye+3acm6YCTGaWhxxIvZZ/QjnA3JA8Zud+z/mO5y5XYvJJhevs5Sjkv/FI8nRw==",
+      "dev": true,
+      "peerDependencies": {
+        "vite": "^3.0.0"
+      },
+      "peerDependenciesMeta": {
+        "vite": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    }
+  },
+  "dependencies": {
+    "@esbuild/android-arm": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.14.tgz",
+      "integrity": "sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-loong64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.14.tgz",
+      "integrity": "sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==",
+      "dev": true,
+      "optional": true
+    },
+    "@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+      "dev": true
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+      "dev": true
+    },
+    "@jridgewell/trace-mapping": {
+      "version": "0.3.17",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+      "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/resolve-uri": "3.1.0",
+        "@jridgewell/sourcemap-codec": "1.4.14"
+      }
+    },
+    "@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      }
+    },
+    "@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true
+    },
+    "@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      }
+    },
+    "@sveltejs/vite-plugin-svelte": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.2.0.tgz",
+      "integrity": "sha512-DT2oUkWAloH1tO7X5cQ4uDxQofaIS76skyFMElKtoqT6HJao+D82LI5i+0jPaSSmO7ex3Pa6jGYMlWy9ZJ1cdQ==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.3.4",
+        "deepmerge": "^4.2.2",
+        "kleur": "^4.1.5",
+        "magic-string": "^0.26.7",
+        "svelte-hmr": "^0.15.1",
+        "vitefu": "^0.2.1"
+      }
+    },
+    "@tsconfig/svelte": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz",
+      "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "18.11.9",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
+      "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
+      "dev": true
+    },
+    "@types/pug": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz",
+      "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
+      "dev": true
+    },
+    "@types/sass": {
+      "version": "1.43.1",
+      "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz",
+      "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "anymatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+      "dev": true,
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "dev": true
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "requires": {
+        "fill-range": "^7.0.1"
+      }
+    },
+    "buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+      "dev": true
+    },
+    "callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true
+    },
+    "chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "dev": true,
+      "requires": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "fsevents": "~2.3.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "deepmerge": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+      "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+      "dev": true
+    },
+    "detect-indent": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
+      "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
+      "dev": true
+    },
+    "es6-promise": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
+      "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==",
+      "dev": true
+    },
+    "esbuild": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.14.tgz",
+      "integrity": "sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==",
+      "dev": true,
+      "requires": {
+        "@esbuild/android-arm": "0.15.14",
+        "@esbuild/linux-loong64": "0.15.14",
+        "esbuild-android-64": "0.15.14",
+        "esbuild-android-arm64": "0.15.14",
+        "esbuild-darwin-64": "0.15.14",
+        "esbuild-darwin-arm64": "0.15.14",
+        "esbuild-freebsd-64": "0.15.14",
+        "esbuild-freebsd-arm64": "0.15.14",
+        "esbuild-linux-32": "0.15.14",
+        "esbuild-linux-64": "0.15.14",
+        "esbuild-linux-arm": "0.15.14",
+        "esbuild-linux-arm64": "0.15.14",
+        "esbuild-linux-mips64le": "0.15.14",
+        "esbuild-linux-ppc64le": "0.15.14",
+        "esbuild-linux-riscv64": "0.15.14",
+        "esbuild-linux-s390x": "0.15.14",
+        "esbuild-netbsd-64": "0.15.14",
+        "esbuild-openbsd-64": "0.15.14",
+        "esbuild-sunos-64": "0.15.14",
+        "esbuild-windows-32": "0.15.14",
+        "esbuild-windows-64": "0.15.14",
+        "esbuild-windows-arm64": "0.15.14"
+      }
+    },
+    "esbuild-android-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.14.tgz",
+      "integrity": "sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-android-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.14.tgz",
+      "integrity": "sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-darwin-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.14.tgz",
+      "integrity": "sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-darwin-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.14.tgz",
+      "integrity": "sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-freebsd-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.14.tgz",
+      "integrity": "sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-freebsd-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.14.tgz",
+      "integrity": "sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-32": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.14.tgz",
+      "integrity": "sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.14.tgz",
+      "integrity": "sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-arm": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.14.tgz",
+      "integrity": "sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.14.tgz",
+      "integrity": "sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-mips64le": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.14.tgz",
+      "integrity": "sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-ppc64le": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.14.tgz",
+      "integrity": "sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-riscv64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.14.tgz",
+      "integrity": "sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-s390x": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.14.tgz",
+      "integrity": "sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-netbsd-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.14.tgz",
+      "integrity": "sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-openbsd-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.14.tgz",
+      "integrity": "sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-sunos-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.14.tgz",
+      "integrity": "sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-windows-32": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.14.tgz",
+      "integrity": "sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-windows-64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.14.tgz",
+      "integrity": "sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-windows-arm64": {
+      "version": "0.15.14",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.14.tgz",
+      "integrity": "sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==",
+      "dev": true,
+      "optional": true
+    },
+    "fast-glob": {
+      "version": "3.2.12",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      }
+    },
+    "fastq": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+      "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+      "dev": true,
+      "requires": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "requires": {
+        "to-regex-range": "^5.0.1"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "dev": true,
+      "optional": true
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.10",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+      "dev": true
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dev": true,
+      "requires": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      }
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^2.0.0"
+      }
+    },
+    "is-core-module": {
+      "version": "2.11.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true
+    },
+    "kleur": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+      "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+      "dev": true
+    },
+    "magic-string": {
+      "version": "0.26.7",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
+      "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
+      "dev": true,
+      "requires": {
+        "sourcemap-codec": "^1.4.8"
+      }
+    },
+    "merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "requires": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      }
+    },
+    "min-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+      "dev": true
+    },
+    "mkdirp": {
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.6"
+      }
+    },
+    "mri": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+      "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+      "dev": true
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "nanoid": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+      "dev": true
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      }
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "dev": true
+    },
+    "picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true
+    },
+    "postcss": {
+      "version": "8.4.19",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz",
+      "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==",
+      "dev": true,
+      "requires": {
+        "nanoid": "^3.3.4",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true
+    },
+    "readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "requires": {
+        "picomatch": "^2.2.1"
+      }
+    },
+    "regexparam": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.1.tgz",
+      "integrity": "sha512-zRgSaYemnNYxUv+/5SeoHI0eJIgTL/A2pUtXUPLHQxUldagouJ9p+K6IbIZ/JiQuCEv2E2B1O11SjVQy3aMCkw=="
+    },
+    "resolve": {
+      "version": "1.22.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+      "dev": true,
+      "requires": {
+        "is-core-module": "^2.9.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true
+    },
+    "reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "rollup": {
+      "version": "2.79.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
+      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+      "dev": true,
+      "requires": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "requires": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "sade": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
+      "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+      "dev": true,
+      "requires": {
+        "mri": "^1.1.0"
+      }
+    },
+    "sander": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz",
+      "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==",
+      "dev": true,
+      "requires": {
+        "es6-promise": "^3.1.2",
+        "graceful-fs": "^4.1.3",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.2"
+      }
+    },
+    "sorcery": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz",
+      "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==",
+      "dev": true,
+      "requires": {
+        "buffer-crc32": "^0.2.5",
+        "minimist": "^1.2.0",
+        "sander": "^0.5.0",
+        "sourcemap-codec": "^1.3.0"
+      }
+    },
+    "source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "dev": true
+    },
+    "sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "dev": true
+    },
+    "strip-indent": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+      "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+      "dev": true,
+      "requires": {
+        "min-indent": "^1.0.0"
+      }
+    },
+    "supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true
+    },
+    "svelte": {
+      "version": "3.53.1",
+      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz",
+      "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==",
+      "dev": true
+    },
+    "svelte-check": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz",
+      "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/trace-mapping": "^0.3.9",
+        "chokidar": "^3.4.1",
+        "fast-glob": "^3.2.7",
+        "import-fresh": "^3.2.1",
+        "picocolors": "^1.0.0",
+        "sade": "^1.7.4",
+        "svelte-preprocess": "^4.0.0",
+        "typescript": "*"
+      }
+    },
+    "svelte-hmr": {
+      "version": "0.15.1",
+      "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz",
+      "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==",
+      "dev": true,
+      "requires": {}
+    },
+    "svelte-preprocess": {
+      "version": "4.10.7",
+      "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz",
+      "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==",
+      "dev": true,
+      "requires": {
+        "@types/pug": "^2.0.4",
+        "@types/sass": "^1.16.0",
+        "detect-indent": "^6.0.0",
+        "magic-string": "^0.25.7",
+        "sorcery": "^0.10.0",
+        "strip-indent": "^3.0.0"
+      },
+      "dependencies": {
+        "magic-string": {
+          "version": "0.25.9",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+          "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.8"
+          }
+        }
+      }
+    },
+    "svelte-select": {
+      "version": "4.4.7",
+      "resolved": "https://registry.npmjs.org/svelte-select/-/svelte-select-4.4.7.tgz",
+      "integrity": "sha512-fIf9Z8rPI6F8naHZ9wjXT0Pv5gLyhdHAFkHFJnCfVVfELE8e82uOoF0xEVQP6Kir+b4Q5yOvNAzZ61WbSU6A0A=="
+    },
+    "svelte-spa-router": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/svelte-spa-router/-/svelte-spa-router-3.3.0.tgz",
+      "integrity": "sha512-cwRNe7cxD43sCvSfEeaKiNZg3FCizGxeMcf7CPiWRP3jKXjEma3vxyyuDtPOam6nWbVxl9TNM3hlE/i87ZlqcQ==",
+      "requires": {
+        "regexparam": "2.0.1"
+      }
+    },
+    "to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "requires": {
+        "is-number": "^7.0.0"
+      }
+    },
+    "tslib": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
+      "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
+      "dev": true
+    },
+    "typescript": {
+      "version": "4.9.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz",
+      "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==",
+      "dev": true
+    },
+    "vite": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz",
+      "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==",
+      "dev": true,
+      "requires": {
+        "esbuild": "^0.15.9",
+        "fsevents": "~2.3.2",
+        "postcss": "^8.4.18",
+        "resolve": "^1.22.1",
+        "rollup": "^2.79.1"
+      }
+    },
+    "vitefu": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.1.tgz",
+      "integrity": "sha512-clkvXTAeUf+XQKm3bhWUhT4pye+3acm6YCTGaWhxxIvZZ/QjnA3JA8Zud+z/mO5y5XYvJJhevs5Sjkv/FI8nRw==",
+      "dev": true,
+      "requires": {}
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    }
+  }
+}
diff --git a/sg-frontend/pnpm-lock.yaml b/sg-frontend/pnpm-lock.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..077f39a144cee0d5997b2507f6588aa46f887d46
--- /dev/null
+++ b/sg-frontend/pnpm-lock.yaml
@@ -0,0 +1,923 @@
+lockfileVersion: 5.4
+
+specifiers:
+  '@sveltejs/vite-plugin-svelte': ^1.0.2
+  '@tsconfig/svelte': ^3.0.0
+  svelte: ^3.49.0
+  svelte-check: ^2.8.1
+  svelte-preprocess: ^4.10.7
+  svelte-select: ^4.4.7
+  svelte-spa-router: ^3.3.0
+  tslib: ^2.4.0
+  typescript: ^4.6.4
+  vite: ^3.1.0
+
+dependencies:
+  svelte-select: 4.4.7
+  svelte-spa-router: 3.3.0
+
+devDependencies:
+  '@sveltejs/vite-plugin-svelte': 1.2.0_svelte@3.53.1+vite@3.2.4
+  '@tsconfig/svelte': 3.0.0
+  svelte: 3.53.1
+  svelte-check: 2.9.2_svelte@3.53.1
+  svelte-preprocess: 4.10.7_7dvewpees4iyn2tkw2qzal77a4
+  tslib: 2.4.1
+  typescript: 4.9.3
+  vite: 3.2.4
+
+packages:
+
+  /@esbuild/android-arm/0.15.14:
+    resolution: {integrity: sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==}
+    engines: {node: '>=12'}
+    cpu: [arm]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-loong64/0.15.14:
+    resolution: {integrity: sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==}
+    engines: {node: '>=12'}
+    cpu: [loong64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@jridgewell/resolve-uri/3.1.0:
+    resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
+    engines: {node: '>=6.0.0'}
+    dev: true
+
+  /@jridgewell/sourcemap-codec/1.4.14:
+    resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
+    dev: true
+
+  /@jridgewell/trace-mapping/0.3.17:
+    resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==}
+    dependencies:
+      '@jridgewell/resolve-uri': 3.1.0
+      '@jridgewell/sourcemap-codec': 1.4.14
+    dev: true
+
+  /@nodelib/fs.scandir/2.1.5:
+    resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+    engines: {node: '>= 8'}
+    dependencies:
+      '@nodelib/fs.stat': 2.0.5
+      run-parallel: 1.2.0
+    dev: true
+
+  /@nodelib/fs.stat/2.0.5:
+    resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+    engines: {node: '>= 8'}
+    dev: true
+
+  /@nodelib/fs.walk/1.2.8:
+    resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+    engines: {node: '>= 8'}
+    dependencies:
+      '@nodelib/fs.scandir': 2.1.5
+      fastq: 1.13.0
+    dev: true
+
+  /@sveltejs/vite-plugin-svelte/1.2.0_svelte@3.53.1+vite@3.2.4:
+    resolution: {integrity: sha512-DT2oUkWAloH1tO7X5cQ4uDxQofaIS76skyFMElKtoqT6HJao+D82LI5i+0jPaSSmO7ex3Pa6jGYMlWy9ZJ1cdQ==}
+    engines: {node: ^14.18.0 || >= 16}
+    peerDependencies:
+      diff-match-patch: ^1.0.5
+      svelte: ^3.44.0
+      vite: ^3.0.0
+    peerDependenciesMeta:
+      diff-match-patch:
+        optional: true
+    dependencies:
+      debug: 4.3.4
+      deepmerge: 4.2.2
+      kleur: 4.1.5
+      magic-string: 0.26.7
+      svelte: 3.53.1
+      svelte-hmr: 0.15.1
+      vite: 3.2.4
+      vitefu: 0.2.1
+    transitivePeerDependencies:
+      - '@types/node'
+      - less
+      - sass
+      - stylus
+      - sugarss
+      - supports-color
+      - terser
+    dev: true
+
+  /@tsconfig/svelte/3.0.0:
+    resolution: {integrity: sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==}
+    dev: true
+
+  /@types/node/18.11.9:
+    resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==}
+    dev: true
+
+  /@types/pug/2.0.6:
+    resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==}
+    dev: true
+
+  /@types/sass/1.43.1:
+    resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==}
+    dependencies:
+      '@types/node': 18.11.9
+    dev: true
+
+  /anymatch/3.1.2:
+    resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
+    engines: {node: '>= 8'}
+    dependencies:
+      normalize-path: 3.0.0
+      picomatch: 2.3.1
+    dev: true
+
+  /balanced-match/1.0.2:
+    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+    dev: true
+
+  /binary-extensions/2.2.0:
+    resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /brace-expansion/1.1.11:
+    resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+    dependencies:
+      balanced-match: 1.0.2
+      concat-map: 0.0.1
+    dev: true
+
+  /braces/3.0.2:
+    resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+    engines: {node: '>=8'}
+    dependencies:
+      fill-range: 7.0.1
+    dev: true
+
+  /buffer-crc32/0.2.13:
+    resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
+    dev: true
+
+  /callsites/3.1.0:
+    resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /chokidar/3.5.3:
+    resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+    engines: {node: '>= 8.10.0'}
+    dependencies:
+      anymatch: 3.1.2
+      braces: 3.0.2
+      glob-parent: 5.1.2
+      is-binary-path: 2.1.0
+      is-glob: 4.0.3
+      normalize-path: 3.0.0
+      readdirp: 3.6.0
+    optionalDependencies:
+      fsevents: 2.3.2
+    dev: true
+
+  /concat-map/0.0.1:
+    resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+    dev: true
+
+  /debug/4.3.4:
+    resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+    engines: {node: '>=6.0'}
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
+    dependencies:
+      ms: 2.1.2
+    dev: true
+
+  /deepmerge/4.2.2:
+    resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /detect-indent/6.1.0:
+    resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /es6-promise/3.3.1:
+    resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
+    dev: true
+
+  /esbuild-android-64/0.15.14:
+    resolution: {integrity: sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-android-arm64/0.15.14:
+    resolution: {integrity: sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-darwin-64/0.15.14:
+    resolution: {integrity: sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-darwin-arm64/0.15.14:
+    resolution: {integrity: sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-freebsd-64/0.15.14:
+    resolution: {integrity: sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-freebsd-arm64/0.15.14:
+    resolution: {integrity: sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-linux-32/0.15.14:
+    resolution: {integrity: sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==}
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-linux-64/0.15.14:
+    resolution: {integrity: sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-linux-arm/0.15.14:
+    resolution: {integrity: sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==}
+    engines: {node: '>=12'}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-linux-arm64/0.15.14:
+    resolution: {integrity: sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-linux-mips64le/0.15.14:
+    resolution: {integrity: sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==}
+    engines: {node: '>=12'}
+    cpu: [mips64el]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-linux-ppc64le/0.15.14:
+    resolution: {integrity: sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==}
+    engines: {node: '>=12'}
+    cpu: [ppc64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-linux-riscv64/0.15.14:
+    resolution: {integrity: sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==}
+    engines: {node: '>=12'}
+    cpu: [riscv64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-linux-s390x/0.15.14:
+    resolution: {integrity: sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==}
+    engines: {node: '>=12'}
+    cpu: [s390x]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-netbsd-64/0.15.14:
+    resolution: {integrity: sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [netbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-openbsd-64/0.15.14:
+    resolution: {integrity: sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [openbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-sunos-64/0.15.14:
+    resolution: {integrity: sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [sunos]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-windows-32/0.15.14:
+    resolution: {integrity: sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==}
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-windows-64/0.15.14:
+    resolution: {integrity: sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild-windows-arm64/0.15.14:
+    resolution: {integrity: sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /esbuild/0.15.14:
+    resolution: {integrity: sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==}
+    engines: {node: '>=12'}
+    requiresBuild: true
+    optionalDependencies:
+      '@esbuild/android-arm': 0.15.14
+      '@esbuild/linux-loong64': 0.15.14
+      esbuild-android-64: 0.15.14
+      esbuild-android-arm64: 0.15.14
+      esbuild-darwin-64: 0.15.14
+      esbuild-darwin-arm64: 0.15.14
+      esbuild-freebsd-64: 0.15.14
+      esbuild-freebsd-arm64: 0.15.14
+      esbuild-linux-32: 0.15.14
+      esbuild-linux-64: 0.15.14
+      esbuild-linux-arm: 0.15.14
+      esbuild-linux-arm64: 0.15.14
+      esbuild-linux-mips64le: 0.15.14
+      esbuild-linux-ppc64le: 0.15.14
+      esbuild-linux-riscv64: 0.15.14
+      esbuild-linux-s390x: 0.15.14
+      esbuild-netbsd-64: 0.15.14
+      esbuild-openbsd-64: 0.15.14
+      esbuild-sunos-64: 0.15.14
+      esbuild-windows-32: 0.15.14
+      esbuild-windows-64: 0.15.14
+      esbuild-windows-arm64: 0.15.14
+    dev: true
+
+  /fast-glob/3.2.12:
+    resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
+    engines: {node: '>=8.6.0'}
+    dependencies:
+      '@nodelib/fs.stat': 2.0.5
+      '@nodelib/fs.walk': 1.2.8
+      glob-parent: 5.1.2
+      merge2: 1.4.1
+      micromatch: 4.0.5
+    dev: true
+
+  /fastq/1.13.0:
+    resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
+    dependencies:
+      reusify: 1.0.4
+    dev: true
+
+  /fill-range/7.0.1:
+    resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+    engines: {node: '>=8'}
+    dependencies:
+      to-regex-range: 5.0.1
+    dev: true
+
+  /fs.realpath/1.0.0:
+    resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+    dev: true
+
+  /fsevents/2.3.2:
+    resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /function-bind/1.1.1:
+    resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+    dev: true
+
+  /glob-parent/5.1.2:
+    resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+    engines: {node: '>= 6'}
+    dependencies:
+      is-glob: 4.0.3
+    dev: true
+
+  /glob/7.2.3:
+    resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+    dependencies:
+      fs.realpath: 1.0.0
+      inflight: 1.0.6
+      inherits: 2.0.4
+      minimatch: 3.1.2
+      once: 1.4.0
+      path-is-absolute: 1.0.1
+    dev: true
+
+  /graceful-fs/4.2.10:
+    resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
+    dev: true
+
+  /has/1.0.3:
+    resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
+    engines: {node: '>= 0.4.0'}
+    dependencies:
+      function-bind: 1.1.1
+    dev: true
+
+  /import-fresh/3.3.0:
+    resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+    engines: {node: '>=6'}
+    dependencies:
+      parent-module: 1.0.1
+      resolve-from: 4.0.0
+    dev: true
+
+  /inflight/1.0.6:
+    resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+    dependencies:
+      once: 1.4.0
+      wrappy: 1.0.2
+    dev: true
+
+  /inherits/2.0.4:
+    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+    dev: true
+
+  /is-binary-path/2.1.0:
+    resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+    engines: {node: '>=8'}
+    dependencies:
+      binary-extensions: 2.2.0
+    dev: true
+
+  /is-core-module/2.11.0:
+    resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
+    dependencies:
+      has: 1.0.3
+    dev: true
+
+  /is-extglob/2.1.1:
+    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /is-glob/4.0.3:
+    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      is-extglob: 2.1.1
+    dev: true
+
+  /is-number/7.0.0:
+    resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+    engines: {node: '>=0.12.0'}
+    dev: true
+
+  /kleur/4.1.5:
+    resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /magic-string/0.25.9:
+    resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
+    dependencies:
+      sourcemap-codec: 1.4.8
+    dev: true
+
+  /magic-string/0.26.7:
+    resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
+    engines: {node: '>=12'}
+    dependencies:
+      sourcemap-codec: 1.4.8
+    dev: true
+
+  /merge2/1.4.1:
+    resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+    engines: {node: '>= 8'}
+    dev: true
+
+  /micromatch/4.0.5:
+    resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+    engines: {node: '>=8.6'}
+    dependencies:
+      braces: 3.0.2
+      picomatch: 2.3.1
+    dev: true
+
+  /min-indent/1.0.1:
+    resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /minimatch/3.1.2:
+    resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+    dependencies:
+      brace-expansion: 1.1.11
+    dev: true
+
+  /minimist/1.2.7:
+    resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==}
+    dev: true
+
+  /mkdirp/0.5.6:
+    resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+    dependencies:
+      minimist: 1.2.7
+    dev: true
+
+  /mri/1.2.0:
+    resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /ms/2.1.2:
+    resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+    dev: true
+
+  /nanoid/3.3.4:
+    resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
+    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+    dev: true
+
+  /normalize-path/3.0.0:
+    resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /once/1.4.0:
+    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+    dependencies:
+      wrappy: 1.0.2
+    dev: true
+
+  /parent-module/1.0.1:
+    resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+    engines: {node: '>=6'}
+    dependencies:
+      callsites: 3.1.0
+    dev: true
+
+  /path-is-absolute/1.0.1:
+    resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /path-parse/1.0.7:
+    resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+    dev: true
+
+  /picocolors/1.0.0:
+    resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+    dev: true
+
+  /picomatch/2.3.1:
+    resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+    engines: {node: '>=8.6'}
+    dev: true
+
+  /postcss/8.4.19:
+    resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==}
+    engines: {node: ^10 || ^12 || >=14}
+    dependencies:
+      nanoid: 3.3.4
+      picocolors: 1.0.0
+      source-map-js: 1.0.2
+    dev: true
+
+  /queue-microtask/1.2.3:
+    resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+    dev: true
+
+  /readdirp/3.6.0:
+    resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+    engines: {node: '>=8.10.0'}
+    dependencies:
+      picomatch: 2.3.1
+    dev: true
+
+  /regexparam/2.0.1:
+    resolution: {integrity: sha512-zRgSaYemnNYxUv+/5SeoHI0eJIgTL/A2pUtXUPLHQxUldagouJ9p+K6IbIZ/JiQuCEv2E2B1O11SjVQy3aMCkw==}
+    engines: {node: '>=8'}
+    dev: false
+
+  /resolve-from/4.0.0:
+    resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /resolve/1.22.1:
+    resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
+    dependencies:
+      is-core-module: 2.11.0
+      path-parse: 1.0.7
+      supports-preserve-symlinks-flag: 1.0.0
+    dev: true
+
+  /reusify/1.0.4:
+    resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+    engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+    dev: true
+
+  /rimraf/2.7.1:
+    resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
+    dependencies:
+      glob: 7.2.3
+    dev: true
+
+  /rollup/2.79.1:
+    resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
+    engines: {node: '>=10.0.0'}
+    optionalDependencies:
+      fsevents: 2.3.2
+    dev: true
+
+  /run-parallel/1.2.0:
+    resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+    dependencies:
+      queue-microtask: 1.2.3
+    dev: true
+
+  /sade/1.8.1:
+    resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+    engines: {node: '>=6'}
+    dependencies:
+      mri: 1.2.0
+    dev: true
+
+  /sander/0.5.1:
+    resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==}
+    dependencies:
+      es6-promise: 3.3.1
+      graceful-fs: 4.2.10
+      mkdirp: 0.5.6
+      rimraf: 2.7.1
+    dev: true
+
+  /sorcery/0.10.0:
+    resolution: {integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==}
+    dependencies:
+      buffer-crc32: 0.2.13
+      minimist: 1.2.7
+      sander: 0.5.1
+      sourcemap-codec: 1.4.8
+    dev: true
+
+  /source-map-js/1.0.2:
+    resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /sourcemap-codec/1.4.8:
+    resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+    dev: true
+
+  /strip-indent/3.0.0:
+    resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+    engines: {node: '>=8'}
+    dependencies:
+      min-indent: 1.0.1
+    dev: true
+
+  /supports-preserve-symlinks-flag/1.0.0:
+    resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+    engines: {node: '>= 0.4'}
+    dev: true
+
+  /svelte-check/2.9.2_svelte@3.53.1:
+    resolution: {integrity: sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==}
+    hasBin: true
+    peerDependencies:
+      svelte: ^3.24.0
+    dependencies:
+      '@jridgewell/trace-mapping': 0.3.17
+      chokidar: 3.5.3
+      fast-glob: 3.2.12
+      import-fresh: 3.3.0
+      picocolors: 1.0.0
+      sade: 1.8.1
+      svelte: 3.53.1
+      svelte-preprocess: 4.10.7_7dvewpees4iyn2tkw2qzal77a4
+      typescript: 4.9.3
+    transitivePeerDependencies:
+      - '@babel/core'
+      - coffeescript
+      - less
+      - node-sass
+      - postcss
+      - postcss-load-config
+      - pug
+      - sass
+      - stylus
+      - sugarss
+    dev: true
+
+  /svelte-hmr/0.15.1:
+    resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==}
+    engines: {node: ^12.20 || ^14.13.1 || >= 16}
+    dependencies:
+      svelte: 3.53.1
+    dev: true
+
+  /svelte-preprocess/4.10.7_7dvewpees4iyn2tkw2qzal77a4:
+    resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==}
+    engines: {node: '>= 9.11.2'}
+    requiresBuild: true
+    peerDependencies:
+      '@babel/core': ^7.10.2
+      coffeescript: ^2.5.1
+      less: ^3.11.3 || ^4.0.0
+      node-sass: '*'
+      postcss: ^7 || ^8
+      postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0
+      pug: ^3.0.0
+      sass: ^1.26.8
+      stylus: ^0.55.0
+      sugarss: ^2.0.0
+      svelte: ^3.23.0
+      typescript: ^3.9.5 || ^4.0.0
+    peerDependenciesMeta:
+      '@babel/core':
+        optional: true
+      coffeescript:
+        optional: true
+      less:
+        optional: true
+      node-sass:
+        optional: true
+      postcss:
+        optional: true
+      postcss-load-config:
+        optional: true
+      pug:
+        optional: true
+      sass:
+        optional: true
+      stylus:
+        optional: true
+      sugarss:
+        optional: true
+      typescript:
+        optional: true
+    dependencies:
+      '@types/pug': 2.0.6
+      '@types/sass': 1.43.1
+      detect-indent: 6.1.0
+      magic-string: 0.25.9
+      sorcery: 0.10.0
+      strip-indent: 3.0.0
+      svelte: 3.53.1
+      typescript: 4.9.3
+    dev: true
+
+  /svelte-select/4.4.7:
+    resolution: {integrity: sha512-fIf9Z8rPI6F8naHZ9wjXT0Pv5gLyhdHAFkHFJnCfVVfELE8e82uOoF0xEVQP6Kir+b4Q5yOvNAzZ61WbSU6A0A==}
+    dev: false
+
+  /svelte-spa-router/3.3.0:
+    resolution: {integrity: sha512-cwRNe7cxD43sCvSfEeaKiNZg3FCizGxeMcf7CPiWRP3jKXjEma3vxyyuDtPOam6nWbVxl9TNM3hlE/i87ZlqcQ==}
+    dependencies:
+      regexparam: 2.0.1
+    dev: false
+
+  /svelte/3.53.1:
+    resolution: {integrity: sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==}
+    engines: {node: '>= 8'}
+    dev: true
+
+  /to-regex-range/5.0.1:
+    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+    engines: {node: '>=8.0'}
+    dependencies:
+      is-number: 7.0.0
+    dev: true
+
+  /tslib/2.4.1:
+    resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
+    dev: true
+
+  /typescript/4.9.3:
+    resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==}
+    engines: {node: '>=4.2.0'}
+    dev: true
+
+  /vite/3.2.4:
+    resolution: {integrity: sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==}
+    engines: {node: ^14.18.0 || >=16.0.0}
+    hasBin: true
+    peerDependencies:
+      '@types/node': '>= 14'
+      less: '*'
+      sass: '*'
+      stylus: '*'
+      sugarss: '*'
+      terser: ^5.4.0
+    peerDependenciesMeta:
+      '@types/node':
+        optional: true
+      less:
+        optional: true
+      sass:
+        optional: true
+      stylus:
+        optional: true
+      sugarss:
+        optional: true
+      terser:
+        optional: true
+    dependencies:
+      esbuild: 0.15.14
+      postcss: 8.4.19
+      resolve: 1.22.1
+      rollup: 2.79.1
+    optionalDependencies:
+      fsevents: 2.3.2
+    dev: true
+
+  /vitefu/0.2.1:
+    resolution: {integrity: sha512-clkvXTAeUf+XQKm3bhWUhT4pye+3acm6YCTGaWhxxIvZZ/QjnA3JA8Zud+z/mO5y5XYvJJhevs5Sjkv/FI8nRw==}
+    peerDependenciesMeta:
+      vite:
+        optional: true
+    dependencies:
+      vite: 3.2.4
+    transitivePeerDependencies:
+      - '@types/node'
+      - less
+      - sass
+      - stylus
+      - sugarss
+      - terser
+    dev: true
+
+  /wrappy/1.0.2:
+    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+    dev: true
diff --git a/sg-frontend/src/routes/Add.svelte b/sg-frontend/src/routes/Add.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/sg-frontend/src/routes/Graph.svelte b/sg-frontend/src/routes/Graph.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..327e027b4c582689c7088105b8f2cb42307b8c87
--- /dev/null
+++ b/sg-frontend/src/routes/Graph.svelte
@@ -0,0 +1,3 @@
+<div>
+    Hello
+</div>
\ No newline at end of file
diff --git a/sg-frontend/src/routes/Index.svelte b/sg-frontend/src/routes/Index.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..ce615dfb443beb6b87c396dfee9bb8032245ce3e
--- /dev/null
+++ b/sg-frontend/src/routes/Index.svelte
@@ -0,0 +1,28 @@
+<script lang="ts">
+	import SoftwareMerger from "../components/SoftwareMerger.svelte";
+</script>
+
+<div>
+	<h1>Software Merger</h1>
+	<p>Find alternatives that have similar features between two softwares.</p>
+	<br />
+	<br />
+	<SoftwareMerger />
+</div>
+
+<style>
+	.logo {
+		height: 6em;
+		padding: 1.5em;
+		will-change: filter;
+	}
+	.logo:hover {
+		filter: drop-shadow(0 0 2em #646cffaa);
+	}
+	.logo.svelte:hover {
+		filter: drop-shadow(0 0 2em #ff3e00aa);
+	}
+	.read-the-docs {
+		color: #888;
+	}
+</style>
\ No newline at end of file
diff --git a/sg-frontend/src/routes/NotFound.svelte b/sg-frontend/src/routes/NotFound.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..c678e375b97ef72ecf7208194772948ef1d3a00b
--- /dev/null
+++ b/sg-frontend/src/routes/NotFound.svelte
@@ -0,0 +1 @@
+<p>Not found</p>
\ No newline at end of file