From 723e7572cc8d570986a0d6ce735ce4af4d21f0c8 Mon Sep 17 00:00:00 2001
From: Leon van Kammen This draft offers a specification for 4D URLs & navigation, to link 3D scenes and text together with- or without a network-connection. This draft is a specification for 4D URLs & navigation, which links together space, time & text together, for hypermedia browsers with- or without a network-connection. XR Fragments strives to serve (nontechnical/fuzzy) humans first, and machine(implementations) later, by ensuring hasslefree text-vs-thought feedback loops.Abstract
-
-The specification promotes spatial addressibility, sharing, navigation, query-ing and tagging interactive (text)objects across for (XR) Browsers.
+
+The specification promotes spatial addressibility, sharing, navigation, query-ing and annotating interactive (text)objects across for (XR) Browsers.
XR Fragments allows us to enrich existing dataformats, by recursive use of existing proven technologies like URI Fragments and BibTags notation.
@@ -97,7 +97,8 @@ XR Fragments allows us to enrich/connect existing dataformats, by recursive use
@@ -107,25 +108,112 @@ XR Fragments allows us to enrich/connect existing dataformats, by recursive use
Core principle
-This also means that the repair-ability of machine-matters should be human friendly too (not too complex).
+XR Fragments tries to seek to connect the world of text (semantical web / RDF), and the world of pixels.
+Instead of combining them (in a game-editor e.g.), XR Fragments is opting for a more integrated path towards them, by describing how to make browsers 4D URL-ready:
principle | +XR 4D URL | +HTML 2D URL | +
---|---|---|
the XRWG | +wordgraph (collapses 3D scene to tags) | +Ctrl-F (find) | +
the hashbus | +hashtags map to camera/scene-projections | +hashtags map to document positions | +
spacetime hashtags | +positions camera, triggers scene-preset/time | +jumps/scrolls to chapter | +
--“When a car breaks down, the ones without turbosupercharger are easier to fix”
+XR Fragments does not look at XR (or the web) thru the lens of HTML.
But approaches things from a higherlevel browser-perspective:
Let’s always focus on average humans: our fuzzy symbolical mind must be served first, before serving a greater categorized typesafe RDF hive mind).
+ +----------------------------------------------------------------------------------------------+
+ | |
+ | the soul of any URL: ://macro /meso ?micro #nano |
+ | |
+ | 2D URL: ://library.com /document ?search #chapter |
+ | |
+ | 4D URL: ://park.com /4Dscene.fbx --> ?search --> #view ---> hashbus |
+ | │ | |
+ | XRWG <---------------------<------------+ |
+ | │ | |
+ | ├─ objects --------------->------------| |
+ | └─ text --------------->------------+ |
+ | |
+ | |
+ +----------------------------------------------------------------------------------------------+
-
-Humans first, machines (AI) later.
-
+
-Thererfore, XR Fragments does not look at XR (or the web) thru the lens of HTML.
-XR Fragments itself is HTML-agnostic, though pseudo-XR Fragment browsers can be implemented on top of HTML/Javascript.
Traditional webbrowsers can become 4D document-ready by:
+ +XR Fragments itself is HTML-agnostic, though pseudo-XR Fragment browsers can be implemented on top of HTML/Javascript.
See appendix below in case certain terms are not clear.
+reserved = gen-delims / sub-delims
+gen-delims = "#" / "&"
+sub-delims = "," / "="
+
+
+++ +Example:
+://foo.com/my3d.gltf#pos=1,0,0&prio=-5&t=0,100
Demo | +Explanation | +
---|---|
pos=1,2,3 |
+vector/coordinate argument e.g. | +
pos=1,2,3&rot=0,90,0&q=.foo |
+combinators | +
++this is already implemented in all browsers
+
vector3 | #pos=0.5,0,0 |
-positions camera to xyz-coord 0.5,0,0 | +positions camera (or XR floor) to xyz-coord 0.5,0,0, |
string | #.cubes #cube |
-object(s) of interest (fragment to object name or class mapping) | +predefined views, XRWG fragments and ID fragments |
class
tag
"class": "cubes"
"tag": "cubes geo"
src
"src": "#q=cube"
"src": "#cube"
buttonA
the end-user will be teleported to another locat
| │ └ src: painting.png | | ├─ ◻ bass |
| │ | | └─ ◻ tuna |
| ├── ◻ aquariumcube | | |
- | │ └ src: ://rescue.com/fish.gltf#q=bass%20tuna | +-------------------------+
+ | │ └ src: ://rescue.com/fish.gltf#bass%20tuna | +-------------------------+
| │ |
| ├── ◻ bedroom |
- | │ └ src: #q=canvas |
+ | │ └ src: #canvas |
| │ |
| └── ◻ livingroom |
- | └ src: #q=canvas |
+ | └ src: #canvas |
| |
+--------------------------------------------------------+
@@ -270,33 +358,49 @@ In case of buttonA
the end-user will be teleported to another locat
Also, after lazy-loading ocean.com/aquarium.gltf
, only the queried objects bass
and tuna
will be instanced inside aquariumcube
.aquariumcube
, see chapter Scaling.++Instead of cherrypicking objects with
+#bass&tuna
thrusrc
, queries can be used to import the whole scene (and filter out certain objects). See next chapter below.
Include, exclude, hide/shows objects using space-separated strings:
-#q=cube
#q=cube -ball_inside_cube
#q=* -sky
#q=-.language .english
#q=cube&rot=0,90,0
#q=price:>2 price:<5
example | +outcome | +
---|---|
#q=-sky |
+show everything except object named sky |
+
#q=-.language .english |
+hide everything with tag language , but show all tag english objects |
+
#q=price:>2 price:<5 |
+of all objects with property price , show only objects with value between 2 and 5 |
+
It’s simple but powerful syntax which allows css-like tag/id-selectors with a searchengine prompt-style feeling:
src
value (prevents sharing of scene-tampered URL’s).cube
and foo
in #q=cube foo
are matched against 3D object names or custom metadata-key(values)cube
and foo
in #q=cube foo
are matched against tags (BibTeX) inside plaintext src
values like @cube{redcube, ...
e.g.#
equals #q=*
.
like .german
match class-metadata of 3D objects like "class":"german"
.
like .german
match class-metadata of (BibTeX) tags in XR Text objects like @german{KarlHeinz, ...
e.g..
like .german
match tag-metadata of 3D objects like "tag":"german"
.
like .german
match tag-metadata of (BibTeX) tags in XR Text objects like @german{KarlHeinz, ...
e.g.-For example:
+#q=.foo
is a shorthand for#q=class:foo
, which will select objects with custom propertyclass
:foo
. Just a simple#q=cube
will simply select an object namedcube
.For example:
#q=.foo
is a shorthand for#q=tag:foo
, which will select objects with custom propertytag
:foo
. Just a simple#q=cube
will simply select an object namedcube
.
aquariumcube
-
-*
-select all objects (only useful in src
custom property)
-
-
-
removes/hides object(s)
@@ -331,7 +430,7 @@ Resizing will be happen accordingly to its placeholder object aquariumcube
.
-alias for "class" :".foo"
equals class:foo
+alias for "tag" :".foo"
equals tag:foo
@@ -363,9 +462,9 @@ Resizing will be happen accordingly to its placeholder object aquariumcube
- detect object id’s & properties
foo:1
and foo
(reference regex: /^.*:[><=!]?/
)
- detect excluders like
-foo
,-foo:1
,-.foo
,-/foo
(reference regex: /^-/
)
- detect root selectors like
/foo
(reference regex: /^[-]?\//
)
-- detect class selectors like
.foo
(reference regex: /^[-]?class$/
)
+- detect tag selectors like
.foo
(reference regex: /^[-]?tag$/
)
- detect number values like
foo:1
(reference regex: /^[0-9\.]+$/
)
-- expand aliases like
.foo
into class:foo
+- expand aliases like
.foo
into tag:foo
- for every query token split string on
:
- create an empty array
rules
- then strip key-operator: convert “-foo” into “foo”
@@ -380,137 +479,285 @@ Resizing will be happen accordingly to its placeholder object aquariumcube
An example query-parser (which compiles to many languages) can be found here
-XR Fragment URI Grammar
+Embedding content (src-instancing)
-reserved = gen-delims / sub-delims
-gen-delims = "#" / "&"
-sub-delims = "," / "="
-
-
-
-Example: ://foo.com/my3d.gltf#pos=1,0,0&prio=-5&t=0,100
-
+src
is the 3D version of the iframe.
+It instances content (in objects) in the current scene/asset.
-Demo
-Explanation
+fragment
+type
+example value
-pos=1,2,3
-vector/coordinate argument e.g.
-
-
-
-pos=1,2,3&rot=0,90,0&q=.foo
-combinators
+src
+string (uri or [[predefined view
+predefined_view]] or [[query
+
+- local/remote content is instanced by the
src
(query) value (and attaches it to the placeholder mesh containing the src
property)
+- local
src
values (URL starting with #
, like #cube&foo
) means only the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors). (example code)
+- local
src
values indicating a query (#q=
), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors). (example code)
+- the instanced scene (from a
src
value) should be scaled accordingly to its placeholder object or scaled relatively based on the scale-property (of a geometry-less placeholder, an ‘empty’-object in blender e.g.). For more info see Chapter Scaling.
+- external
src
(file) values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are:
+- when the placeholder object is a 2D plane, but the mimetype is 3D, then render the spatial content on that plane via a stencil buffer.
+- when only one object was cherrypicked (
#cube
e.g.), set its position to 0,0,0
+
+
+
+model/gltf+json
+image/png
+image/jpg
+text/plain;charset=utf-8;bib=^@
+
+
+» example implementation
+» example 3D asset
+» discussion
+
+Referencing content (href portals)
+
+navigation, portals & mutations
+
+
+
+
+fragment
+type
+example value
+
+
+
+
+
+href
+string (uri or predefined view)
+#pos=1,1,0
#pos=1,1,0&rot=90,0,0
://somefile.gltf#pos=1,1,0
+
+
+
+
+
+clicking an “external”- or “file URI” fully replaces the current scene and assumes pos=0,0,0&rot=0,0,0
by default (unless specified)
+
+relocation/reorientation should happen locally for local URI’s (#pos=....
)
+
+navigation should not happen “immediately” when user is more than 2 meter away from the portal/object containing the href (to prevent accidental navigation e.g.)
+
+URL navigation should always be reflected in the client (in case of javascript: see [here for an example navigator).
+
+In XR mode, the navigator back/forward-buttons should be always visible (using a wearable e.g., see [here for an example wearable)
+
+in case of navigating to a new [[pos)ition, “first” navigate to the “current position” so that the “back-button” of the “browser-history” always refers to the previous position (see [here)
+
+portal-rendering: a 2:1 ratio texture-material indicates an equirectangular projection
+
+
+» example implementation
+» example 3D asset
+» discussion
+
+Scaling instanced content
+
+Sometimes embedded properties (like [[href|href]] or [[src|src]]) instance new objects.
+But what about their scale?
+How does the scale of the object (with the embedded properties) impact the scale of the referenced content?
+
+
+Rule of thumb: visible placeholder objects act as a ‘3D canvas’ for the referenced scene (a plane acts like a 2D canvas for images e, a cube as a 3D canvas e.g.).
+
+
+
+- IF an embedded property (
src
e.g.) is set on an non-empty placeholder object (geometry of >2 vertices):
+
+
+
+- calculate the bounding box of the “placeholder” object (maxsize=1.4 e.g.)
+- hide the “placeholder” object (material e.g.)
+- instance the
src
scene as a child of the existing object
+- calculate the bounding box of the instanced scene, and scale it accordingly (to 1.4 e.g.)
+
+
+
+REASON: non-empty placeholder object can act as a protective bounding-box (for remote content of which might grow over time e.g.)
+
+
+
+- ELSE multiply the scale-vector of the instanced scene with the scale-vector of the placeholder object.
+
+
+
+TODO: needs intermediate visuals to make things more obvious
+
+
Text in XR (tagging,linking to spatial objects)
-We still think and speak in simple text, not in HTML or RDF.
-The most advanced human will probably not shout <h1>FIRE!</h1>
in case of emergency.
-Given the new dawn of (non-keyboard) XR interfaces, keeping text as is (not obscuring with markup) is preferred.
-Ideally metadata must come with text, but not obfuscate the text, or in another file.
-
-This way:
-
-
-- XR Fragments allows hasslefree spatial tagging, by detecting BibTeX metadata at the end of content of text (see default mimetype & Data URI)
-- XR Fragments allows hasslefree spatial tagging, by treating 3D object name/class-pairs as BibTeX tags.
-- XR Fragments allows hasslefree textual tagging, spatial tagging, and supra tagging, by mapping 3D/text object (class)names using BibTeX ‘tags’
-- BibTex & Hashtagbibs are the first-choice requestless metadata-layer for XR text, HTML/RDF/JSON is great (but fits better in the application-layer)
-- Default font (unless specified otherwise) is a modern monospace font, for maximized tabular expressiveness (see the core principle).
-- anti-pattern: hardcoupling a mandatory obtrusive markuplanguage or framework with an XR browsers (HTML/VRML/Javascript) (see the core principle)
-- anti-pattern: limiting human introspection, by immediately funneling human thought into typesafe, precise, pre-categorized metadata like RDF (see the core principle)
-
-
-This allows recursive connections between text itself, as well as 3D objects and vice versa, using BibTags :
-
- http://y.io/z.fbx | (Evaluated) BibTex/ 'wires' / tags |
- ----------------------------------------------------------------------------+-------------------------------------
- | @house{castle,
- +-[src: data:.....]----------------------+ +-[3D mesh]-+ | url = {https://y.io/z.fbx#castle}
- | My Notes | | / \ | | }
- | | | / \ | | @baroque{castle,
- | The houses are built in baroque style. | | / \ | | url = {https://y.io/z.fbx#castle}
- | | | |_____| | | }
- | @house{baroque, | +-----│-----+ | @house{baroque,
- | description = {classic} | ├─ name: castle | description = {classic}
- | } | └─ class: house baroque | }
- +----------------------------------------+ | @house{contactowner,
- | }
- +-[remotestorage.io / localstorage]------+ | @todo{contactowner,
- | #contactowner@todo@house | | }
- | ... | |
- +----------------------------------------+ |
-
-
-BibTex (generated from 3D objects), can be extended by the enduser with personal BiBTex or hashtagbibs.
+How does XR Fragments interlink text with objects?
-hashtagbibs allows the enduser to add ‘postit’ connections (compressed BibTex) by speaking/typing/scanning text, which the XR Browser saves to remotestorage (or localStorage per toplevel URL). As well as, referencing BibTags per URI later on: https://y.io/z.fbx#@baroque@todo
e.g.
+The XR Fragments does this by collapsing space into a Word Graph (the XRWG), augmented by Bib(s)Tex.
-Obviously, expressing the relationships above in XML/JSON instead of BibTeX, would cause instant cognitive overload.
-The This allows instant realtime filtering of relationships at various levels:
+Instead of just throwing together all kinds media types into one experience (games), what about the intrinsic connections between them?
+Why is HTML adopted less in games outside the browser?
+Through the lens of game-making, ideally metadata must come with that text, but not obfuscate the text, or spawning another request to fetch it.
+XR Fragments does this by detecting Bib(s)Tex, without introducing a new language or fileformat
+
+
+Why Bib(s)Tex? Because its seems to be the lowest common denominator for an human-curated XRWG (extendable by speech/scanner/writing/typing e.g, see further motivation here)
+
+
+Hence:
+
+
+- XR Fragments promotes (de)serializing a scene to the XRWG
+- XR Fragments primes the XRWG, by collecting words from the
tag
and name-property of 3D objects.
+- XR Fragments primes the XRWG, by collecting words from optional metadata at the end of content of text (see default mimetype & Data URI)
+- Bib’s and BibTex are first tag citizens for priming the XRWG with words (from XR text)
+- Like Bibs, XR Fragments generalizes the BibTex author/title-semantics (
author{title}
) into this points to that (this{that}
)
+- The XRWG should be recalculated when textvalues (in
src
) change
+- HTML/RDF/JSON is still great, but is beyond the XRWG-scope (they fit better in the application-layer)
+- Applications don’t have to be able to access the XRWG programmatically, as they can easily generate one themselves by traversing the scene-nodes.
+- The XR Fragment focuses on fast and easy-to-generate end-user controllable word graphs (instead of complex implementations that try to defeat word ambiguity)
+
+
+Example:
+
+ http://y.io/z.fbx | Derived XRWG (shown as BibTex)
+ ----------------------------------------------------------------------------+--------------------------------------
+ | @house{castle,
+ +-[src: data:.....]----------------------+ +-[3D mesh]-+ | url = {https://y.io/z.fbx#castle}
+ | Chapter one | | / \ | | }
+ | | | / \ | | @baroque{castle,
+ | John built houses in baroque style. | | / \ | | url = {https://y.io/z.fbx#castle}
+ | | | |_____| | | }
+ | #john@baroque | +-----│-----+ | @baroque{john}
+ | | │ |
+ | | ├─ name: castle |
+ | | └─ tag: house baroque |
+ +----------------------------------------+ |
+ [3D mesh ] |
+ | O ├─ name: john |
+ | /|\ | |
+ | / \ | |
+ +--------+ |
+
+
+
+the #john@baroque
-bib associates both text John
and objectname john
, with tag baroque
+
+
+Another example:
+
+ http://y.io/z.fbx | Derived XRWG (printed as BibTex)
+ ----------------------------------------------------------------------------+--------------------------------------
+ |
+ +-[src: data:.....]----------------------+ +-[3D mesh]-+ | @house{castle,
+ | Chapter one | | / \ | | url = {https://y.io/z.fbx#castle}
+ | | | / \ | | }
+ | John built houses in baroque style. | | / \ | | @baroque{castle,
+ | | | |_____| | | url = {https://y.io/z.fbx#castle}
+ | #john@baroque | +-----│-----+ | }
+ | @baroque{john} | │ | @baroque{john}
+ | | ├─ name: castle |
+ | | └─ tag: house baroque |
+ +----------------------------------------+ | @house{baroque}
+ [3D mesh ] | @todo{baroque}
+ +-[remotestorage.io / localstorage]------+ | O + name: john |
+ | #baroque@todo@house | | /|\ | |
+ | ... | | / \ | |
+ +----------------------------------------+ +--------+ |
+
+
+
+both #john@baroque
-bib and BibTex @baroque{john}
result in the same XRWG, however on top of that 2 tages (house
and todo
) are now associated with text/objectname/tag ‘baroque’.
+
+
+As seen above, the XRWG can expand bibs (and the whole scene) to BibTeX.
+This allows hasslefree authoring and copy-paste of associations for and by humans, but also makes these URLs possible:
-scope
-matching algo
+URL example
+Result
-textual
-text containing ‘baroque’ is now automatically tagged with ‘house’ (incl. plaintext src
child nodes)
+https://my.com/foo.gltf#.baroque
+highlights mesh john
, 3D mesh castle
, text John built(..)
-spatial
-spatial object(s) with name baroque
or "class":"house"
are now automatically tagged with ‘house’ (incl. child nodes)
+https://my.com/foo.gltf#john
+highlights mesh john
, and the text John built (..)
-supra
-text- or spatial-object(s) (non-descendant nodes) elsewhere, (class)named ‘baroque’ or ‘house’, are automatically tagged with ‘house’ (current node to root nodes)
-
-
-
-omni
-text- or spatial-object(s) (non-descendant nodes) elsewhere, (class)named ‘baroque’ or ‘house’, are automatically tagged with ‘house’ (too node to all nodes)
-
-
-
-infinite
-text- or spatial-object(s) (non-descendant nodes) elsewhere, (class)named ‘baroque’ or ‘house’, are automatically tagged with ‘house’ (too node to all nodes)
+https://my.com/foo.gltf#house
+highlights mesh castle
, and other objects with tag house
or todo
-BibTex allows the enduser to adjust different levels of associations (see the core principle): spatial wires can be rendered, words can be highlighted, spatial objects can be highlighted/moved/scaled, links can be manipulated by the user.
-NOTE: infinite matches both ‘baroque’ and ‘style’-occurences in text, as well as spatial objects with "class":"style"
or name “baroque”. This multiplexing of id/category is deliberate because of the core principle.
+hashtagbibs potentially allow the enduser to annotate text/objects by speaking/typing/scanning associations, which the XR Browser saves to remotestorage (or localStorage per toplevel URL). As well as, referencing BibTags per URI later on: https://y.io/z.fbx#@baroque@todo
e.g.
-
+The XRWG allows XR Browsers to show/hide relationships in realtime at various levels:
+
+
+- wordmatch inside
src
text
+- wordmatch inside
href
text
+- wordmatch object-names
+- wordmatch object-tagnames
+
+
+Spatial wires can be rendered, words/objects can be highlighted/scaled etc.
+Some pointers for good UX (but not necessary to be XR Fragment compatible):
+
+
- The XR Browser needs to adjust tag-scope based on the endusers needs/focus (infinite tagging only makes sense when environment is scaled down significantly)
- The XR Browser should always allow the human to view/edit the metadata, by clicking ‘toggle metadata’ on the ‘back’ (contextmenu e.g.) of any XR text, anywhere anytime.
+- respect multi-line BiBTeX metadata in text because of the core principle
+- Default font (unless specified otherwise) is a modern monospace font, for maximized tabular expressiveness (see the core principle).
+- anti-pattern: hardcoupling an XR Browser with a mandatory markup/scripting-language which departs from onubtrusive plain text (HTML/VRML/Javascript) (see the core principle)
+- anti-pattern: limiting human introspection, by abandoning plain text as first tag citizen.
-The simplicity of appending BibTeX (and leveling the metadata-playfield between humans and machines) is also demonstrated by visual-meta in greater detail.
+The simplicity of appending metadata (and leveling the metadata-playfield between humans and machines) is also demonstrated by visual-meta in greater detail.
+Fictional chat:
+
+<John> Hey what about this: https://my.com/station.gltf#pos=0,0,1&rot=90,2,0&t=500,1000
+<Sarah> I'm checking it right now
+<Sarah> I don't see everything..where's our text from yesterday?
+<John> Ah wait, that's tagged with tag 'draft' (and hidden)..hold on, try this:
+<John> https://my.com/station.gltf#.draft&pos=0,0,1&rot=90,2,0&t=500,1000
+<Sarah> how about we link the draft to the upcoming YELLO-event?
+<John> ok I'm adding #draft@YELLO
+<Sarah> Yesterday I also came up with other usefull assocations between other texts in the scene:
+#event#YELLO
+#2025@YELLO
+<John> thanks, added.
+<Sarah> Btw. I stumbled upon this spatial book which references station.gltf in some chapters:
+<Sarah> https://thecommunity.org/forum/foo/mytrainstory.txt
+<John> interesting, I'm importing mytrainstory.txt into station.gltf
+<John> ah yes, chapter three points to trainterminal_2A in the scene, cool
+
+
Default Data URI mimetype
The src
-values work as expected (respecting mime-types), however:
@@ -527,12 +774,13 @@ The This allows instant realtime filtering of relationships at various levels:
- utf-8 is supported by default
-- hashtagbibs are expanded to bibtags
-- lines matching regex
^@
will automatically get filtered out, in order to:
-- links between textual/spatial objects can automatically be detected
-- bibtag appendices (visual-meta can be interpreted e.g.
+- lines beginning with
@
will not be rendered verbatim by default (read more)
+- the XRWG should expand bibs to BibTex occurring in text (
#contactjohn@todo@important
e.g.)
+By doing so, the XR Browser (applications-layer) can interpret microformats (visual-meta
+to connect text further with its environment ( setup links between textual/spatial objects automatically e.g.).
+
for more info on this mimetype see bibs
@@ -540,6 +788,7 @@ The This allows instant realtime filtering of relationships at various levels:
Advantages:
+- auto-expanding of hashtagbibs associations
- out-of-the-box (de)multiplex human text and metadata in one go (see the core principle)
- no network-overhead for metadata (see the core principle)
- ensuring high FPS: HTML/RDF historically is too ‘requesty’/‘parsy’ for game studios
@@ -561,193 +810,26 @@ The This allows instant realtime filtering of relationships at various levels:
| │ | | |
| ├── ◻ article_canvas | | Hello friends. |
| │ └ src: ://author.com/article.txt | | |
- | │ | | @friend{friends |
+ | │ | | @book{greatgatsby |
| └── ◻ note_canvas | | ... |
- | └ src:`data:welcome human\n@...` | | } |
+ | └ src:`data:welcome human\n@book{sunday...}` | | } |
| | +------------------------+
| |
+--------------------------------------------------------------+
-The enduser will only see welcome human
and Hello friends
rendered spatially (see mimetype).
+
The enduser will only see welcome human
and Hello friends
rendered verbatim (see mimetype).
The beauty is that text in Data URI automatically promotes rich copy-paste (retaining metadata).
In both cases, the text gets rendered immediately (onto a plane geometry, hence the name ‘_canvas’).
The XR Fragment-compatible browser can let the enduser access visual-meta(data)-fields after interacting with the object (contextmenu e.g.).
-additional tagging using bibs: to tag spatial object note_canvas
with ‘todo’, the enduser can type or speak @note_canvas@todo
+additional tagging using bibs: to tag spatial object note_canvas
with ‘todo’, the enduser can type or speak #note_canvas@todo
-Bibs & BibTeX: lowest common denominator for linking data
-
-
-“When a car breaks down, the ones without turbosupercharger are easier to fix”
-
-
-Unlike XML or JSON, BibTex is typeless, unnested, and uncomplicated, hence a great advantage for introspection.
-It’s a missing sensemaking precursor to extrospective RDF.
-BibTeX-appendices are already used in the digital AND physical world (academic books, visual-meta), perhaps due to its terseness & simplicity.
-In that sense, it’s one step up from the .ini
fileformat (which has never leaked into the physical world like BibTex):
-
-
-- frictionless copy/pasting (by humans) of (unobtrusive) content AND metadata
-- an introspective ‘sketchpad’ for metadata, which can (optionally) mature into RDF later
-
-
-
-
-
-characteristic
-UTF8 Plain Text (with BibTeX)
-RDF
-
-
-
-
-
-perspective
-introspective
-extrospective
-
-
-
-structure
-fuzzy (sensemaking)
-precise
-
-
-
-space/scope
-local
-world
-
-
-
-everything is text (string)
-yes
-no
-
-
-
-voice/paper-friendly
-bibs
-no
-
-
-
-leaves (dictated) text intact
-yes
-no
-
-
-
-markup language
-just an appendix
-~4 different
-
-
-
-polyglot format
-no
-yes
-
-
-
-easy to copy/paste content+metadata
-yes
-up to application
-
-
-
-easy to write/repair for layman
-yes
-depends
-
-
-
-easy to (de)serialize
-yes (fits on A4 paper)
-depends
-
-
-
-infrastructure
-selfcontained (plain text)
-(semi)networked
-
-
-
-freeform tagging/annotation
-yes, terse
-yes, verbose
-
-
-
-can be appended to text-content
-yes
-up to application
-
-
-
-copy-paste text preserves metadata
-yes
-up to application
-
-
-
-emoji
-yes
-depends on encoding
-
-
-
-predicates
-free
-semi pre-determined
-
-
-
-implementation/network overhead
-no
-depends
-
-
-
-used in (physical) books/PDF
-yes (visual-meta)
-no
-
-
-
-terse non-verb predicates
-yes
-no
-
-
-
-nested structures
-no (but: BibTex rulers)
-yes
-
-
-
-
-
-To keep XR Fragments a lightweight spec, BibTeX is used for rudimentary text/spatial tagging (not JSON, RDF or a scripting language because they’re harder to write/speak/repair.).
-
-
-Of course, on an application-level JSON(LD / RDF) can still be used at will, by embedding RDF-urls/data as custom properties (but is not interpreted by this spec).
-
XR Text example parser
-
-- The XR Fragments spec does not aim to harden the BiBTeX format
-- respect multi-line BibTex values because of the core principle
-- Respect hashtag(bibs) and rulers (like
${visual-meta-start}
) according to the hashtagbibs spec
-- BibTeX snippets should always start in the beginning of a line (regex: ^@), hence mimetype
text/plain;charset=utf-8;bib=^@
-
-
-Here’s an XR Text (de)multiplexer in javascript, which ticks all the above boxes:
+To prime the XRWG with text from plain text src
-values, here’s an example XR Text (de)multiplexer in javascript (which supports inline bibs & bibtex):
xrtext = {
@@ -779,6 +861,7 @@ In that sense, it’s one step up from the .ini
fileformat (whi
if( !(t = t.trim()) ) return
if( tag = t.match( pat[1] ) ) tag = tag[0]
if( tag.match( /^{.*}$/ ) ) return tags.push({ruler:tag})
+ if( tag.match( /}$/ ) ) return tags.push({k: tag.replace(/}$/,''), v: {}})
t = t.substr( tag.length )
t.split( pat[2] )
.map( kv => {
@@ -808,7 +891,7 @@ In that sense, it’s one step up from the .ini
fileformat (whi
}
-The above functions (de)multiplexe text/metadata, expands bibs, (de)serialize bibtex (and all fits more or less on one A4 paper)
+The above functions (de)multiplexe text/metadata, expands bibs, (de)serialize bibtex and vice versa
above can be used as a startingpoint for LLVM’s to translate/steelman to a more formal form/language.
@@ -856,24 +939,12 @@ here are some hashtagbibs followed by bibtex:
when an XR browser updates the human text, a quick scan for nonmatching tags (@book{nonmatchingbook
e.g.) should be performed and prompt the enduser for deleting them.
-HYPER copy/paste
-
-The previous example, offers something exciting compared to simple copy/paste of 3D objects or text.
-XR Text according to the XR Fragment spec, allows HYPER-copy/paste: time, space and text interlinked.
-Therefore, the enduser in an XR Fragment-compatible browser can copy/paste/share data in these ways:
-
-
-- time/space: 3D object (current animation-loop)
-- text: TeXt object (including BibTeX/visual-meta if any)
-- interlinked: Collected objects by visual-meta tag
-
-
Security Considerations
Since XR Text contains metadata too, the user should be able to set up tagging-rules, so the copy-paste feature can :
-- filter out sensitive data when copy/pasting (XR text with
class:secret
e.g.)
+- filter out sensitive data when copy/pasting (XR text with
tag:secret
e.g.)
IANA Considerations
@@ -924,6 +995,26 @@ Therefore, the enduser in an XR Fragment-compatible browser can copy/paste/share
URI Fragment with spatial hints like #pos=0,0,0&t=1,100
e.g.
+
+the XRWG
+wordgraph (collapses 3D scene to tags)
+
+
+
+the hashbus
+hashtags map to camera/scene-projections
+
+
+
+spacetime hashtags
+positions camera, triggers scene-preset/time
+
+
+
+placeholder object
+a 3D object which with src-metadata (which will be replaced by the src-data.)
+
+
src
(HTML-piggybacked) metadata of a 3D object which instances content
@@ -986,7 +1077,7 @@ Therefore, the enduser in an XR Fragment-compatible browser can copy/paste/share
(hashtag)bibs
-an easy to speak/type/scan tagging SDL (see here
+an easy to speak/type/scan tagging SDL (see here which expands to BibTex/JSON/XML
diff --git a/doc/RFC_XR_Fragments.md b/doc/RFC_XR_Fragments.md
index 4335384..a3f9a9f 100644
--- a/doc/RFC_XR_Fragments.md
+++ b/doc/RFC_XR_Fragments.md
@@ -30,7 +30,7 @@ fullname="L.R. van Kammen"
padding: 0% 20%;
line-height: 30px;
color:#555;
- background:#F0F0F3
+ background:#F7F7F7;
}
h1 { margin-top:40px; }
pre{ line-height:18px; }
@@ -181,10 +181,10 @@ sub-delims = "," / "="
| fragment | type | example | info |
|--------------|----------|-------------------|---------------------------------------------------------------------|
-| `#pos` | vector3 | `#pos=0.5,0,0` | positions camera to xyz-coord 0.5,0,0 |
+| `#pos` | vector3 | `#pos=0.5,0,0` | positions camera (or XR floor) to xyz-coord 0.5,0,0, |
| `#rot` | vector3 | `#rot=0,90,0` | rotates camera to xyz-coord 0.5,0,0 |
| `#t` | vector2 | `#t=500,1000` | sets animation-loop range between frame 500 and 1000 |
-| `#......` | string | `#.cubes` `#cube` | object(s) of interest (fragment-to-object-or-tagname) |
+| `#......` | string | `#.cubes` `#cube` | predefined views, XRWG fragments and ID fragments |
> xyz coordinates are similar to ones found in SVG Media Fragments
@@ -312,7 +312,7 @@ Here's how to write a query parser:
> An example query-parser (which compiles to many languages) can be [found here](https://github.com/coderofsalvation/xrfragment/blob/main/src/xrfragment/Query.hx)
-# Embedding local/remote content (instancing)
+# Embedding content (src-instancing)
`src` is the 3D version of the iframe.
It instances content (in objects) in the current scene/asset.
@@ -321,12 +321,12 @@ It instances content (in objects) in the current scene/asset.
|----------|------|---------------|
|`src`| string (uri or [[predefined view|predefined_view]] or [[query|queries]]) | `#cube`
`#q=-ball_inside_cube`
`#q=-/sky -rain`
`#q=-.language .english`
`#q=price:>2 price:<5`
`https://linux.org/penguin.png`
`https://linux.world/distrowatch.gltf#t=1,100`
`linuxapp://conference/nixworkshop/apply.gltf#q=flyer`
`androidapp://page1?tutorial#pos=0,0,1&t1,100`|
-
1. local/remote content is instanced by the `src` (query) value (and attaches it to the placeholder mesh containing the `src` property)
-1. local `src` values (URL **starting** with `#`, like `#cube&foo`) means **only** the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors). [[(example code)|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js]]
-1. local `src` values indicating a query (`#q=`), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors). [[(example code)|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js]]
+1. local `src` values (URL **starting** with `#`, like `#cube&foo`) means **only** the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors). [(example code)](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js)
+1. local `src` values indicating a query (`#q=`), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors). [(example code)](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js)
1. the instanced scene (from a `src` value) should be scaled accordingly to its placeholder object or scaled relatively based on the scale-property (of a geometry-less placeholder, an 'empty'-object in blender e.g.). For more info see Chapter Scaling.
1. external `src` (file) values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are:
+1. when the placeholder object is a 2D plane, but the mimetype is 3D, then render the spatial content on that plane via a stencil buffer.
1. when only one object was cherrypicked (`#cube` e.g.), set its position to `0,0,0`
* `model/gltf+json`
@@ -334,8 +334,56 @@ It instances content (in objects) in the current scene/asset.
* `image/jpg`
* `text/plain;charset=utf-8;bib=^@`
+[» example implementation](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js)
+[» example 3D asset](https://github.com/coderofsalvation/xrfragment/blob/main/example/assets/src.gltf#L192)
+[» discussion](https://github.com/coderofsalvation/xrfragment/issues/4)
+
+## Referencing content (href portals)
+
+navigation, portals & mutations
+
+| fragment | type | example value |
+|----------|---------------------------------|---------------------------------------------------------------------------------------------------------------------------|
+|`href` | string (uri or predefined view) | `#pos=1,1,0`
`#pos=1,1,0&rot=90,0,0`
`://somefile.gltf#pos=1,1,0`
|
+
+1. clicking an ''external''- or ''file URI'' fully replaces the current scene and assumes `pos=0,0,0&rot=0,0,0` by default (unless specified)
+
+2. relocation/reorientation should happen locally for local URI's (`#pos=....`)
+
+3. navigation should not happen ''immediately'' when user is more than 2 meter away from the portal/object containing the href (to prevent accidental navigation e.g.)
+
+4. URL navigation should always be reflected in the client (in case of javascript: see [[here](https://github.com/coderofsalvation/xrfragment/blob/dev/src/3rd/js/three/navigator.js) for an example navigator).
+
+5. In XR mode, the navigator back/forward-buttons should be always visible (using a wearable e.g., see [[here](https://github.com/coderofsalvation/xrfragment/blob/dev/example/aframe/sandbox/index.html#L26-L29) for an example wearable)
+
+6. in case of navigating to a new [[pos)ition, ''first'' navigate to the ''current position'' so that the ''back-button'' of the ''browser-history'' always refers to the previous position (see [[here](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/href.js#L97))
+
+7. portal-rendering: a 2:1 ratio texture-material indicates an equirectangular projection
+
+[» example implementation](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/href.js)
+[» example 3D asset](https://github.com/coderofsalvation/xrfragment/blob/main/example/assets/href.gltf#L192)
+[» discussion](https://github.com/coderofsalvation/xrfragment/issues/1)
+
## Scaling instanced content
+Sometimes embedded properties (like [[href|href]] or [[src|src]]) instance new objects.
+But what about their scale?
+How does the scale of the object (with the embedded properties) impact the scale of the referenced content?
+
+> Rule of thumb: visible placeholder objects act as a '3D canvas' for the referenced scene (a plane acts like a 2D canvas for images e, a cube as a 3D canvas e.g.).
+
+1. IF an embedded property (`src` e.g.) is set on an non-empty placeholder object (geometry of >2 vertices):
+
+* calculate the bounding box of the ''placeholder'' object (maxsize=1.4 e.g.)
+* hide the ''placeholder'' object (material e.g.)
+* instance the `src` scene as a child of the existing object
+* calculate the bounding box of the instanced scene, and scale it accordingly (to 1.4 e.g.)
+
+> REASON: non-empty placeholder object can act as a protective bounding-box (for remote content of which might grow over time e.g.)
+
+2. ELSE multiply the scale-vector of the instanced scene with the scale-vector of the placeholder object.
+
+> TODO: needs intermediate visuals to make things more obvious
# Text in XR (tagging,linking to spatial objects)
@@ -388,7 +436,6 @@ Example:
> the `#john@baroque`-bib associates both text `John` and objectname `john`, with tag `baroque`
-```
Another example:
@@ -663,6 +710,7 @@ This document has no IANA actions.
|the XRWG | wordgraph (collapses 3D scene to tags) |
|the hashbus | hashtags map to camera/scene-projections |
|spacetime hashtags | positions camera, triggers scene-preset/time |
+|placeholder object | a 3D object which with src-metadata (which will be replaced by the src-data.) |
|src | (HTML-piggybacked) metadata of a 3D object which instances content |
|href | (HTML-piggybacked) metadata of a 3D object which links to content |
|query | an URI Fragment-operator which queries object(s) from a scene like `#q=cube` |
diff --git a/doc/RFC_XR_Fragments.txt b/doc/RFC_XR_Fragments.txt
index e3af33b..cf45c7f 100644
--- a/doc/RFC_XR_Fragments.txt
+++ b/doc/RFC_XR_Fragments.txt
@@ -3,7 +3,7 @@
Internet Engineering Task Force L.R. van Kammen
-Internet-Draft 9 September 2023
+Internet-Draft 18 September 2023
Intended status: Informational
@@ -13,10 +13,11 @@ Intended status: Informational
Abstract
- This draft offers a specification for 4D URLs & navigation, to link
- 3D scenes and text together with- or without a network-connection.
+ This draft is a specification for 4D URLs & navigation, which links
+ together space, time & text together, for hypermedia browsers with-
+ or without a network-connection.
The specification promotes spatial addressibility, sharing,
- navigation, query-ing and tagging interactive (text)objects across
+ navigation, query-ing and annotating interactive (text)objects across
for (XR) Browsers.
XR Fragments allows us to enrich existing dataformats, by recursive
use of existing proven technologies like URI Fragments
@@ -40,24 +41,26 @@ Status of This Memo
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
- This Internet-Draft will expire on 12 March 2024.
+ This Internet-Draft will expire on 21 March 2024.
Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the
document authors. All rights reserved.
- This document is subject to BCP 78 and the IETF Trust's Legal
- Provisions Relating to IETF Documents (https://trustee.ietf.org/
- license-info) in effect on the date of publication of this document.
-van Kammen Expires 12 March 2024 [Page 1]
+
+
+van Kammen Expires 21 March 2024 [Page 1]
Internet-Draft XR Fragments September 2023
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents (https://trustee.ietf.org/
+ license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
@@ -68,26 +71,26 @@ Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Core principle . . . . . . . . . . . . . . . . . . . . . . . 3
- 3. Conventions and Definitions . . . . . . . . . . . . . . . . . 3
- 4. List of URI Fragments . . . . . . . . . . . . . . . . . . . . 3
- 5. List of metadata for 3D nodes . . . . . . . . . . . . . . . . 4
- 6. Navigating 3D . . . . . . . . . . . . . . . . . . . . . . . . 4
- 7. Embedding 3D content . . . . . . . . . . . . . . . . . . . . 5
- 8. XR Fragment queries . . . . . . . . . . . . . . . . . . . . . 5
- 8.1. including/excluding . . . . . . . . . . . . . . . . . . . 6
- 8.2. Query Parser . . . . . . . . . . . . . . . . . . . . . . 7
- 8.3. XR Fragment URI Grammar . . . . . . . . . . . . . . . . . 7
- 9. Text in XR (tagging,linking to spatial objects) . . . . . . . 8
- 9.1. Default Data URI mimetype . . . . . . . . . . . . . . . . 11
- 9.2. URL and Data URI . . . . . . . . . . . . . . . . . . . . 12
- 9.3. Bibs & BibTeX: lowest common denominator for linking
- data . . . . . . . . . . . . . . . . . . . . . . . . . . 13
- 9.4. XR Text example parser . . . . . . . . . . . . . . . . . 15
- 10. HYPER copy/paste . . . . . . . . . . . . . . . . . . . . . . 17
- 11. Security Considerations . . . . . . . . . . . . . . . . . . . 17
- 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17
- 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17
- 14. Appendix: Definitions . . . . . . . . . . . . . . . . . . . . 18
+ 3. Conventions and Definitions . . . . . . . . . . . . . . . . . 4
+ 3.1. XR Fragment URI Grammar . . . . . . . . . . . . . . . . . 4
+ 4. List of URI Fragments . . . . . . . . . . . . . . . . . . . . 5
+ 5. List of metadata for 3D nodes . . . . . . . . . . . . . . . . 5
+ 6. Navigating 3D . . . . . . . . . . . . . . . . . . . . . . . . 6
+ 7. Embedding 3D content . . . . . . . . . . . . . . . . . . . . 6
+ 8. XR Fragment queries . . . . . . . . . . . . . . . . . . . . . 7
+ 8.1. including/excluding . . . . . . . . . . . . . . . . . . . 8
+ 8.2. Query Parser . . . . . . . . . . . . . . . . . . . . . . 9
+ 9. Embedding content (src-instancing) . . . . . . . . . . . . . 9
+ 9.1. Referencing content (href portals) . . . . . . . . . . . 11
+ 9.2. Scaling instanced content . . . . . . . . . . . . . . . . 12
+ 10. Text in XR (tagging,linking to spatial objects) . . . . . . . 13
+ 10.1. Default Data URI mimetype . . . . . . . . . . . . . . . 16
+ 10.2. URL and Data URI . . . . . . . . . . . . . . . . . . . . 17
+ 10.3. XR Text example parser . . . . . . . . . . . . . . . . . 18
+ 11. Security Considerations . . . . . . . . . . . . . . . . . . . 20
+ 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21
+ 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21
+ 14. Appendix: Definitions . . . . . . . . . . . . . . . . . . . . 21
1. Introduction
@@ -102,18 +105,23 @@ Table of Contents
1. addressibility and navigation of 3D scenes/objects: URI Fragments
(https://en.wikipedia.org/wiki/URI_fragment) + src/href spatial
metadata
- 2. hasslefree tagging across text and spatial objects using bibs
- (https://github.com/coderofsalvation/tagbibs) / BibTags
- (https://en.wikipedia.org/wiki/BibTeX) appendices (see visual-
- meta (https://visual-meta.info) e.g.)
-van Kammen Expires 12 March 2024 [Page 2]
+
+van Kammen Expires 21 March 2024 [Page 2]
Internet-Draft XR Fragments September 2023
+ 2. Interlinking text/& 3D by collapsing space into a Word Graph
+ (XRWG) (and augmenting text with bibs
+ (https://github.com/coderofsalvation/tagbibs) / BibTags
+ (https://en.wikipedia.org/wiki/BibTeX) appendices (see visual-
+ meta (https://visual-meta.info) e.g.)
+ 3. extend the hashtag-to-browser-viewport paradigm beyond 2D
+ documents (XR documents)
+
| NOTE: The chapters in this document are ordered from highlevel to
| lowlevel (technical) as much as possible
@@ -124,18 +132,68 @@ Internet-Draft XR Fragments September 2023
thought feedback loops.
This also means that the repair-ability of machine-matters should be
human friendly too (not too complex).
+ XR Fragments tries to seek to connect the world of text (semantical
+ web / RDF), and the world of pixels.
+ Instead of combining them (in a game-editor e.g.), XR Fragments is
+ opting for a more integrated path *towards* them, by describing how
+ to make browsers *4D URL-ready*:
- | "When a car breaks down, the ones *without* turbosupercharger are
- | easier to fix"
+ +===========+============================+====================+
+ | principle | XR 4D URL | HTML 2D URL |
+ +===========+============================+====================+
+ | the XRWG | wordgraph (collapses 3D | Ctrl-F (find) |
+ | | scene to tags) | |
+ +-----------+----------------------------+--------------------+
+ | the | hashtags map to camera/ | hashtags map to |
+ | hashbus | scene-projections | document positions |
+ +-----------+----------------------------+--------------------+
+ | spacetime | positions camera, triggers | jumps/scrolls to |
+ | hashtags | scene-preset/time | chapter |
+ +-----------+----------------------------+--------------------+
- Let's always focus on average humans: our fuzzy symbolical mind must
- be served first, before serving a greater categorized typesafe RDF
- hive mind (https://en.wikipedia.org/wiki/Borg)).
+ Table 1
- | Humans first, machines (AI) later.
+ | XR Fragments does not look at XR (or the web) thru the lens of
+ | HTML.
+ | But approaches things from a higherlevel browser-perspective:
+
+
+
+
+
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 3]
+
+Internet-Draft XR Fragments September 2023
+
+
+ +----------------------------------------------------------------------------------------------+
+ | |
+ | the soul of any URL: ://macro /meso ?micro #nano |
+ | |
+ | 2D URL: ://library.com /document ?search #chapter |
+ | |
+ | 4D URL: ://park.com /4Dscene.fbx --> ?search --> #view ---> hashbus |
+ | │ | |
+ | XRWG <---------------------<------------+ |
+ | │ | |
+ | ├─ objects --------------->------------| |
+ | └─ text --------------->------------+ |
+ | |
+ | |
+ +----------------------------------------------------------------------------------------------+
+
+ Traditional webbrowsers can become 4D document-ready by:
+
+ * loading 3D assets (gltf/fbx e.g.) natively (not thru HTML).
+ * allowing assets to publish hashtags to themselves (the scene)
+ using the hashbus (like hashtags controlling the scrollbar).
+ * collapsing the 3D scene to an wordgraph (for essential navigation
+ purposes) controllable thru a hash(tag)bus
- Thererfore, XR Fragments does not look at XR (or the web) thru the
- lens of HTML.
XR Fragments itself is HTML-agnostic, though pseudo-XR Fragment
browsers *can* be implemented on top of HTML/Javascript.
@@ -143,60 +201,87 @@ Internet-Draft XR Fragments September 2023
See appendix below in case certain terms are not clear.
-4. List of URI Fragments
+3.1. XR Fragment URI Grammar
- +==========+=========+==============+============================+
- | fragment | type | example | info |
- +==========+=========+==============+============================+
- | #pos | vector3 | #pos=0.5,0,0 | positions camera to xyz- |
- | | | | coord 0.5,0,0 |
- +----------+---------+--------------+----------------------------+
- | #rot | vector3 | #rot=0,90,0 | rotates camera to xyz- |
- | | | | coord 0.5,0,0 |
- +----------+---------+--------------+----------------------------+
- | #t | vector2 | #t=500,1000 | sets animation-loop range |
- | | | | between frame 500 and 1000 |
- +----------+---------+--------------+----------------------------+
- | #...... | string | #.cubes | object(s) of interest |
- | | | #cube | (fragment to object name |
- | | | | or class mapping) |
- +----------+---------+--------------+----------------------------+
+ reserved = gen-delims / sub-delims
+ gen-delims = "#" / "&"
+ sub-delims = "," / "="
+
+ | Example: ://foo.com/my3d.gltf#pos=1,0,0&prio=-5&t=0,100
+
+ +=============================+=================================+
+ | Demo | Explanation |
+ +=============================+=================================+
+ | pos=1,2,3 | vector/coordinate argument e.g. |
+ +-----------------------------+---------------------------------+
+ | pos=1,2,3&rot=0,90,0&q=.foo | combinators |
+ +-----------------------------+---------------------------------+
+
+ Table 2
-
-van Kammen Expires 12 March 2024 [Page 3]
+van Kammen Expires 21 March 2024 [Page 4]
Internet-Draft XR Fragments September 2023
- Table 1
+ | this is already implemented in all browsers
+
+4. List of URI Fragments
+
+ +==========+=========+==============+==============================+
+ | fragment | type | example | info |
+ +==========+=========+==============+==============================+
+ | #pos | vector3 | #pos=0.5,0,0 | positions camera (or XR |
+ | | | | floor) to xyz-coord 0.5,0,0, |
+ +----------+---------+--------------+------------------------------+
+ | #rot | vector3 | #rot=0,90,0 | rotates camera to xyz-coord |
+ | | | | 0.5,0,0 |
+ +----------+---------+--------------+------------------------------+
+ | #t | vector2 | #t=500,1000 | sets animation-loop range |
+ | | | | between frame 500 and 1000 |
+ +----------+---------+--------------+------------------------------+
+ | #...... | string | #.cubes | predefined views, XRWG |
+ | | | #cube | fragments and ID fragments |
+ +----------+---------+--------------+------------------------------+
+
+ Table 3
| xyz coordinates are similar to ones found in SVG Media Fragments
5. List of metadata for 3D nodes
- +=======+========+================+============================+
- | key | type | example (JSON) | info |
- +=======+========+================+============================+
- | name | string | "name": "cube" | available in all 3D |
- | | | | fileformats & scenes |
- +-------+--------+----------------+----------------------------+
- | class | string | "class": | available through custom |
- | | | "cubes" | property in 3D fileformats |
- +-------+--------+----------------+----------------------------+
- | href | string | "href": | available through custom |
- | | | "b.gltf" | property in 3D fileformats |
- +-------+--------+----------------+----------------------------+
- | src | string | "src": | available through custom |
- | | | "#q=cube" | property in 3D fileformats |
- +-------+--------+----------------+----------------------------+
+ +======+========+================+============================+
+ | key | type | example (JSON) | info |
+ +======+========+================+============================+
+ | name | string | "name": "cube" | available in all 3D |
+ | | | | fileformats & scenes |
+ +------+--------+----------------+----------------------------+
+ | tag | string | "tag": "cubes | available through custom |
+ | | | geo" | property in 3D fileformats |
+ +------+--------+----------------+----------------------------+
+ | href | string | "href": | available through custom |
+ | | | "b.gltf" | property in 3D fileformats |
+ +------+--------+----------------+----------------------------+
+ | src | string | "src": "#cube" | available through custom |
+ | | | | property in 3D fileformats |
+ +------+--------+----------------+----------------------------+
- Table 2
+ Table 4
Popular compatible 3D fileformats: .gltf, .obj, .fbx, .usdz, .json
(THREE.js), .dae and so on.
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 5]
+
+Internet-Draft XR Fragments September 2023
+
+
| NOTE: XR Fragments are file-agnostic, which means that the
| metadata exist in programmatic 3D scene(nodes) too.
@@ -217,15 +302,6 @@ Internet-Draft XR Fragments September 2023
| |
+--------------------------------------------------------+
-
-
-
-
-van Kammen Expires 12 March 2024 [Page 4]
-
-Internet-Draft XR Fragments September 2023
-
-
An XR Fragment-compatible browser viewing this scene, allows the end-
user to interact with the buttonA and buttonB.
In case of buttonA the end-user will be teleported to another
@@ -238,6 +314,30 @@ Internet-Draft XR Fragments September 2023
◻ which embeds remote & local 3D objects ◻ with/out using
queries:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 6]
+
+Internet-Draft XR Fragments September 2023
+
+
+--------------------------------------------------------+ +-------------------------+
| | | |
| index.gltf | | ocean.com/aquarium.fbx |
@@ -246,13 +346,13 @@ Internet-Draft XR Fragments September 2023
| │ └ src: painting.png | | ├─ ◻ bass |
| │ | | └─ ◻ tuna |
| ├── ◻ aquariumcube | | |
- | │ └ src: ://rescue.com/fish.gltf#q=bass%20tuna | +-------------------------+
+ | │ └ src: ://rescue.com/fish.gltf#bass%20tuna | +-------------------------+
| │ |
| ├── ◻ bedroom |
- | │ └ src: #q=canvas |
+ | │ └ src: #canvas |
| │ |
| └── ◻ livingroom |
- | └ src: #q=canvas |
+ | └ src: #canvas |
| |
+--------------------------------------------------------+
@@ -264,44 +364,48 @@ Internet-Draft XR Fragments September 2023
Resizing will be happen accordingly to its placeholder object
aquariumcube, see chapter Scaling.
+ | Instead of cherrypicking objects with #bass&tuna thru src, queries
+ | can be used to import the whole scene (and filter out certain
+ | objects). See next chapter below.
+
8. XR Fragment queries
Include, exclude, hide/shows objects using space-separated strings:
- * #q=cube
- * #q=cube -ball_inside_cube
- * #q=* -sky
- * #q=-.language .english
- * #q=cube&rot=0,90,0
- * #q=price:>2 price:<5
+ +========================+==========================================+
+ | example | outcome |
+ +========================+==========================================+
+ | #q=-sky | show everything except object named sky |
+ +------------------------+------------------------------------------+
+ | #q=-.language | hide everything with tag language, but |
+ | .english | show all tag english objects |
+ +------------------------+------------------------------------------+
+ | #q=price:>2 | of all objects with property price, show |
+ | price:<5 | only objects with value between 2 and 5 |
+ +------------------------+------------------------------------------+
+
+ Table 5
-van Kammen Expires 12 March 2024 [Page 5]
+
+van Kammen Expires 21 March 2024 [Page 7]
Internet-Draft XR Fragments September 2023
- It's simple but powerful syntax which allows css-like class/
- id-selectors with a searchengine prompt-style feeling:
+ It's simple but powerful syntax which allows css-like tag/id-
+ selectors with a searchengine prompt-style feeling:
- 1. queries are showing/hiding objects *only* when defined as src
- value (prevents sharing of scene-tampered URL's).
- 2. queries are highlighting objects when defined in the top-Level
- (browser) URL (bar).
- 3. search words like cube and foo in #q=cube foo are matched against
- 3D object names or custom metadata-key(values)
- 4. search words like cube and foo in #q=cube foo are matched against
- tags (BibTeX) inside plaintext src values like @cube{redcube, ...
- e.g.
- 5. # equals #q=*
- 6. words starting with . like .german match class-metadata of 3D
- objects like "class":"german"
- 7. words starting with . like .german match class-metadata of
- (BibTeX) tags in XR Text objects like @german{KarlHeinz, ... e.g.
+ 1. queries are a way to traverse a scene, and filter objects based
+ on their tag- or property-values.
+ 2. words starting with . like .german match tag-metadata of 3D
+ objects like "tag":"german"
+ 3. words starting with . like .german match tag-metadata of (BibTeX)
+ tags in XR Text objects like @german{KarlHeinz, ... e.g.
- | *For example*: #q=.foo is a shorthand for #q=class:foo, which will
- | select objects with custom property class:foo. Just a simple
+ | *For example*: #q=.foo is a shorthand for #q=tag:foo, which will
+ | select objects with custom property tag:foo. Just a simple
| #q=cube will simply select an object named cube.
* see an example video here
@@ -312,15 +416,12 @@ Internet-Draft XR Fragments September 2023
+==========+=================================================+
| operator | info |
+==========+=================================================+
- | * | select all objects (only useful in src custom |
- | | property) |
- +----------+-------------------------------------------------+
| - | removes/hides object(s) |
+----------+-------------------------------------------------+
| : | indicates an object-embedded custom property |
| | key/value |
+----------+-------------------------------------------------+
- | . | alias for "class" :".foo" equals class:foo |
+ | . | alias for "tag" :".foo" equals tag:foo |
+----------+-------------------------------------------------+
| > < | compare float or int number |
+----------+-------------------------------------------------+
@@ -329,20 +430,26 @@ Internet-Draft XR Fragments September 2023
| | objects in nested scenes (instanced by src) (*) |
+----------+-------------------------------------------------+
- Table 3
-
-
-
-van Kammen Expires 12 March 2024 [Page 6]
-
-Internet-Draft XR Fragments September 2023
-
+ Table 6
| * = #q=-/cube hides object cube only in the root-scene (not nested
| cube objects)
| #q=-cube hides both object cube in the root-scene AND
| nested skybox objects |
+
+
+
+
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 8]
+
+Internet-Draft XR Fragments September 2023
+
+
» example implementation
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/xrf/q.js) » example 3D asset
@@ -361,10 +468,9 @@ Internet-Draft XR Fragments September 2023
3. detect excluders like -foo,-foo:1,-.foo,-/foo (reference regex:
/^-/ )
4. detect root selectors like /foo (reference regex: /^[-]?\// )
- 5. detect class selectors like .foo (reference regex: /^[-]?class$/
- )
+ 5. detect tag selectors like .foo (reference regex: /^[-]?tag$/ )
6. detect number values like foo:1 (reference regex: /^[0-9\.]+$/ )
- 7. expand aliases like .foo into class:foo
+ 7. expand aliases like .foo into tag:foo
8. for every query token split string on :
9. create an empty array rules
10. then strip key-operator: convert "-foo" into "foo"
@@ -381,204 +487,396 @@ Internet-Draft XR Fragments September 2023
| (https://github.com/coderofsalvation/xrfragment/blob/main/src/
| xrfragment/Query.hx)
-8.3. XR Fragment URI Grammar
+9. Embedding content (src-instancing)
- reserved = gen-delims / sub-delims
- gen-delims = "#" / "&"
- sub-delims = "," / "="
+ src is the 3D version of the iframe.
+ It instances content (in objects) in the current scene/asset.
-van Kammen Expires 12 March 2024 [Page 7]
+
+
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 9]
Internet-Draft XR Fragments September 2023
- | Example: ://foo.com/my3d.gltf#pos=1,0,0&prio=-5&t=0,100
+ +==========+==================================+===================+
+ | fragment | type | example value |
+ +==========+==================================+===================+
+ | src | string (uri or [[predefined view | predefined_view]] |
+ | | | or [[query |
+ +----------+----------------------------------+-------------------+
- +=============================+=================================+
- | Demo | Explanation |
- +=============================+=================================+
- | pos=1,2,3 | vector/coordinate argument e.g. |
- +-----------------------------+---------------------------------+
- | pos=1,2,3&rot=0,90,0&q=.foo | combinators |
- +-----------------------------+---------------------------------+
+ Table 7
- Table 4
+ 1. local/remote content is instanced by the src (query) value (and
+ attaches it to the placeholder mesh containing the src property)
+ 2. local src values (URL *starting* with #, like #cube&foo)
+ means *only* the mentioned objectnames will be copied to the
+ instanced scene (from the current scene) while preserving their
+ names (to support recursive selectors). (example code) (https://g
+ ithub.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/
+ xrf/src.js)
+ 3. local src values indicating a query (#q=), means that all
+ included objects (from the current scene) will be copied to the
+ instanced scene (before applying the query) while preserving
+ their names (to support recursive selectors). (example code) (htt
+ ps://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
+ three/xrf/src.js)
+ 4. the instanced scene (from a src value) should be scaled
+ accordingly to its placeholder object or scaled
+ relatively based on the scale-property (of a geometry-less
+ placeholder, an 'empty'-object in blender e.g.). For more info
+ see Chapter Scaling.
+ 5. external src (file) values should be served with
+ appropriate mimetype (so the XR Fragment-compatible browser will
+ now how to render it). The bare minimum supported mimetypes are:
+ 6. when the placeholder object is a 2D plane, but the mimetype is
+ 3D, then render the spatial content on that plane via a stencil
+ buffer.
+ 7. when only one object was cherrypicked (#cube e.g.), set its
+ position to 0,0,0
-9. Text in XR (tagging,linking to spatial objects)
-
- We still think and speak in simple text, not in HTML or RDF.
- The most advanced human will probably not shout FIRE!
in
- case of emergency.
- Given the new dawn of (non-keyboard) XR interfaces, keeping text as
- is (not obscuring with markup) is preferred.
- Ideally metadata must come *with* text, but not *obfuscate* the text,
- or *in another* file.
-
- This way:
-
- 1. XR Fragments allows hasslefree spatial
- tagging, by detecting BibTeX metadata *at the end of content*
- of text (see default mimetype & Data URI)
- 2. XR Fragments allows hasslefree spatial
- tagging, by treating 3D object name/class-pairs as BibTeX
- tags.
- 3. XR Fragments allows hasslefree textual
- tagging, spatial tagging, and supra tagging, by mapping 3D/text
- object (class)names using BibTeX 'tags'
- 4. BibTex & Hashtagbibs are the first-choice *requestless metadata*-
- layer for XR text, HTML/RDF/JSON is great (but fits better in the
- application-layer)
- 5. Default font (unless specified otherwise) is a modern monospace
- font, for maximized tabular expressiveness (see the core
- principle (#core-principle)).
- 6. anti-pattern: hardcoupling a mandatory *obtrusive markuplanguage*
- or framework with an XR browsers (HTML/VRML/Javascript) (see the
- core principle (#core-principle))
- 7. anti-pattern: limiting human introspection, by immediately
- funneling human thought into typesafe, precise, pre-categorized
- metadata like RDF (see the core principle (#core-principle))
+ * model/gltf+json
+ * image/png
+ * image/jpg
+ * text/plain;charset=utf-8;bib=^@
-van Kammen Expires 12 March 2024 [Page 8]
+
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 10]
Internet-Draft XR Fragments September 2023
- This allows recursive connections between text itself, as well as 3D
- objects and vice versa, using *BibTags* :
+ » example implementation
+ (https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
+ three/xrf/src.js)
+ » example 3D asset
+ (https://github.com/coderofsalvation/xrfragment/blob/main/example/
+ assets/src.gltf#L192)
+ » discussion (https://github.com/coderofsalvation/xrfragment/
+ issues/4)
- http://y.io/z.fbx | (Evaluated) BibTex/ 'wires' / tags |
- ----------------------------------------------------------------------------+-------------------------------------
+9.1. Referencing content (href portals)
+
+ navigation, portals & mutations
+
+ +==========+==================+============================+
+ | fragment | type | example value |
+ +==========+==================+============================+
+ | href | string (uri or | #pos=1,1,0 |
+ | | predefined view) | #pos=1,1,0&rot=90,0,0 |
+ | | | ://somefile.gltf#pos=1,1,0 |
+ +----------+------------------+----------------------------+
+
+ Table 8
+
+ 1. clicking an ''external''- or ''file URI'' fully replaces the
+ current scene and assumes pos=0,0,0&rot=0,0,0 by default (unless
+ specified)
+
+ 2. relocation/reorientation should happen locally for local URI's
+ (#pos=....)
+
+ 3. navigation should not happen ''immediately'' when user is more
+ than 2 meter away from the portal/object containing the href (to
+ prevent accidental navigation e.g.)
+
+ 4. URL navigation should always be reflected in the client (in case
+ of javascript: see [here
+ (https://github.com/coderofsalvation/xrfragment/blob/dev/src/3rd/
+ js/three/navigator.js) for an example navigator).
+
+ 5. In XR mode, the navigator back/forward-buttons should be always
+ visible (using a wearable e.g., see [here
+ (https://github.com/coderofsalvation/xrfragment/blob/dev/example/
+ aframe/sandbox/index.html#L26-L29) for an example wearable)
+
+
+
+
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 11]
+
+Internet-Draft XR Fragments September 2023
+
+
+ 6. in case of navigating to a new [[pos)ition, ''first'' navigate to
+ the ''current position'' so that the ''back-button'' of the
+ ''browser-history'' always refers to the previous position (see
+ [here (https://github.com/coderofsalvation/xrfragment/blob/main/s
+ rc/3rd/js/three/xrf/href.js#L97))
+
+ 7. portal-rendering: a 2:1 ratio texture-material indicates an
+ equirectangular projection
+
+ » example implementation
+ (https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
+ three/xrf/href.js)
+ » example 3D asset
+ (https://github.com/coderofsalvation/xrfragment/blob/main/example/
+ assets/href.gltf#L192)
+ » discussion (https://github.com/coderofsalvation/xrfragment/
+ issues/1)
+
+9.2. Scaling instanced content
+
+ Sometimes embedded properties (like [[href|href]] or [[src|src]])
+ instance new objects.
+ But what about their scale?
+ How does the scale of the object (with the embedded properties)
+ impact the scale of the referenced content?
+
+ | Rule of thumb: visible placeholder objects act as a '3D canvas'
+ | for the referenced scene (a plane acts like a 2D canvas for images
+ | e, a cube as a 3D canvas e.g.).
+
+ 1. IF an embedded property (src e.g.) is set on an non-empty
+ placeholder object (geometry of >2 vertices):
+
+ * calculate the bounding box of the ''placeholder'' object
+ (maxsize=1.4 e.g.)
+ * hide the ''placeholder'' object (material e.g.)
+ * instance the src scene as a child of the existing object
+ * calculate the bounding box of the instanced scene, and
+ scale it accordingly (to 1.4 e.g.)
+
+ | REASON: non-empty placeholder object can act as a protective
+ | bounding-box (for remote content of which might grow over time
+ | e.g.)
+
+ 2. ELSE multiply the scale-vector of the instanced scene with the
+ scale-vector of the placeholder object.
+
+ | TODO: needs intermediate visuals to make things more obvious
+
+
+
+van Kammen Expires 21 March 2024 [Page 12]
+
+Internet-Draft XR Fragments September 2023
+
+
+10. Text in XR (tagging,linking to spatial objects)
+
+ How does XR Fragments interlink text with objects?
+
+ | The XR Fragments does this by collapsing space into a *Word Graph*
+ | (the *XRWG*), augmented by Bib(s)Tex.
+
+ Instead of just throwing together all kinds media types into one
+ experience (games), what about the intrinsic connections between
+ them?
+ Why is HTML adopted less in games outside the browser? Through the
+ lens of game-making, ideally metadata must come *with* that text, but
+ not *obfuscate* the text, or *spawning another request* to fetch it.
+ XR Fragments does this by detecting Bib(s)Tex, without introducing a
+ new language or fileformat
+
+ | Why Bib(s)Tex? Because its seems to be the lowest common
+ | denominator for an human-curated XRWG (extendable by
+ | speech/scanner/writing/typing e.g, see further motivation here
+ | (https://github.com/coderofsalvation/hashtagbibs#bibs--bibtex-
+ | combo-lowest-common-denominator-for-linking-data))
+
+ Hence:
+
+ 1. XR Fragments promotes (de)serializing a scene to the XRWG
+ 2. XR Fragments primes the XRWG, by collecting words from the tag
+ and name-property of 3D objects.
+ 3. XR Fragments primes the XRWG, by collecting words from *optional*
+ metadata *at the end of content* of text (see default mimetype &
+ Data URI)
+ 4. Bib's (https://github.com/coderofsalvation/hashtagbibs) and
+ BibTex are first tag citizens for priming the XRWG with words
+ (from XR text)
+ 5. Like Bibs, XR Fragments generalizes the BibTex author/title-
+ semantics (author{title}) into *this* points to *that*
+ (this{that})
+ 6. The XRWG should be recalculated when textvalues (in src) change
+ 7. HTML/RDF/JSON is still great, but is beyond the XRWG-scope (they
+ fit better in the application-layer)
+ 8. Applications don't have to be able to access the XRWG
+ programmatically, as they can easily generate one themselves by
+ traversing the scene-nodes.
+ 9. The XR Fragment focuses on fast and easy-to-generate end-user
+ controllable word graphs (instead of complex implementations that
+ try to defeat word ambiguity)
+
+ Example:
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 13]
+
+Internet-Draft XR Fragments September 2023
+
+
+ http://y.io/z.fbx | Derived XRWG (shown as BibTex)
+ ----------------------------------------------------------------------------+--------------------------------------
| @house{castle,
+-[src: data:.....]----------------------+ +-[3D mesh]-+ | url = {https://y.io/z.fbx#castle}
- | My Notes | | / \ | | }
+ | Chapter one | | / \ | | }
| | | / \ | | @baroque{castle,
- | The houses are built in baroque style. | | / \ | | url = {https://y.io/z.fbx#castle}
+ | John built houses in baroque style. | | / \ | | url = {https://y.io/z.fbx#castle}
| | | |_____| | | }
- | @house{baroque, | +-----│-----+ | @house{baroque,
- | description = {classic} | ├─ name: castle | description = {classic}
- | } | └─ class: house baroque | }
- +----------------------------------------+ | @house{contactowner,
- | }
- +-[remotestorage.io / localstorage]------+ | @todo{contactowner,
- | #contactowner@todo@house | | }
- | ... | |
+ | #john@baroque | +-----│-----+ | @baroque{john}
+ | | │ |
+ | | ├─ name: castle |
+ | | └─ tag: house baroque |
+----------------------------------------+ |
+ [3D mesh ] |
+ | O ├─ name: john |
+ | /|\ | |
+ | / \ | |
+ +--------+ |
- BibTex (generated from 3D objects), can be extended by the enduser
- with personal BiBTex or hashtagbibs
- (https://github.com/coderofsalvation/hashtagbibs).
+ | the #john@baroque-bib associates both text John and objectname
+ | john, with tag baroque
+
+ Another example:
+
+ http://y.io/z.fbx | Derived XRWG (printed as BibTex)
+ ----------------------------------------------------------------------------+--------------------------------------
+ |
+ +-[src: data:.....]----------------------+ +-[3D mesh]-+ | @house{castle,
+ | Chapter one | | / \ | | url = {https://y.io/z.fbx#castle}
+ | | | / \ | | }
+ | John built houses in baroque style. | | / \ | | @baroque{castle,
+ | | | |_____| | | url = {https://y.io/z.fbx#castle}
+ | #john@baroque | +-----│-----+ | }
+ | @baroque{john} | │ | @baroque{john}
+ | | ├─ name: castle |
+ | | └─ tag: house baroque |
+ +----------------------------------------+ | @house{baroque}
+ [3D mesh ] | @todo{baroque}
+ +-[remotestorage.io / localstorage]------+ | O + name: john |
+ | #baroque@todo@house | | /|\ | |
+ | ... | | / \ | |
+ +----------------------------------------+ +--------+ |
+
+ | both #john@baroque-bib and BibTex @baroque{john} result in the
+ | same XRWG, however on top of that 2 tages (house and todo) are now
+ | associated with text/objectname/tag 'baroque'.
+
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 14]
+
+Internet-Draft XR Fragments September 2023
+
+
+ As seen above, the XRWG can expand bibs
+ (https://github.com/coderofsalvation/hashtagbibs) (and the whole
+ scene) to BibTeX.
+ This allows hasslefree authoring and copy-paste of associations *for
+ and by humans*, but also makes these URLs possible:
+
+ +===================+===================================+
+ | URL example | Result |
+ +===================+===================================+
+ | https://my.com/ | highlights mesh john, 3D mesh |
+ | foo.gltf#.baroque | castle, text John built(..) |
+ +-------------------+-----------------------------------+
+ | https://my.com/ | highlights mesh john, and the |
+ | foo.gltf#john | text John built (..) |
+ +-------------------+-----------------------------------+
+ | https://my.com/ | highlights mesh castle, and other |
+ | foo.gltf#house | objects with tag house or todo |
+ +-------------------+-----------------------------------+
+
+ Table 9
| hashtagbibs (https://github.com/coderofsalvation/hashtagbibs)
- | allows the enduser to add 'postit' connections (compressed BibTex)
- | by speaking/typing/scanning text, which the XR Browser saves to
- | remotestorage (or localStorage per toplevel URL). As well as,
- | referencing BibTags per URI later on: https://y.io/
+ | potentially allow the enduser to annotate text/objects by
+ | *speaking/typing/scanning associations*, which the XR Browser
+ | saves to remotestorage (or localStorage per toplevel URL). As
+ | well as, referencing BibTags per URI later on: https://y.io/
| z.fbx#@baroque@todo e.g.
- Obviously, expressing the relationships above in XML/JSON instead of
- BibTeX, would cause instant cognitive overload.
- The This allows instant realtime filtering of relationships at
+ The XRWG allows XR Browsers to show/hide relationships in realtime at
various levels:
+ * wordmatch *inside* src text
+ * wordmatch *inside* href text
+ * wordmatch object-names
+ * wordmatch object-tagnames
+ Spatial wires can be rendered, words/objects can be highlighted/
+ scaled etc.
+ Some pointers for good UX (but not necessary to be XR Fragment
+ compatible):
-
-
-
-
-
-
-
-
-
-
-
-
-van Kammen Expires 12 March 2024 [Page 9]
-
-Internet-Draft XR Fragments September 2023
-
-
- +====================================+============================+
- | scope | matching algo |
- +====================================+============================+
- | textual | is now automatically |
- | | tagged with 'house' (incl. |
- | | plaintext src child nodes) |
- +------------------------------------+----------------------------+
- | spatial | name baroque or |
- | | "class":"house" are now |
- | | automatically tagged with |
- | | 'house' (incl. child |
- | | nodes) |
- +------------------------------------+----------------------------+
- | supra | text- or spatial-object(s) |
- | | (non-descendant nodes) |
- | | elsewhere, (class)named |
- | | 'baroque' or 'house', are |
- | | automatically tagged with |
- | | 'house' (current node to |
- | | root nodes) |
- +------------------------------------+----------------------------+
- | omni | text- or spatial-object(s) |
- | | (non-descendant nodes) |
- | | elsewhere, (class)named |
- | | 'baroque' or 'house', are |
- | | automatically tagged with |
- | | 'house' (too node to all |
- | | nodes) |
- +------------------------------------+----------------------------+
- | infinite | (non-descendant nodes) |
- | | elsewhere, (class)named |
- | | 'baroque' or 'house', are |
- | | automatically tagged with |
- | | 'house' (too node to all |
- | | nodes) |
- +------------------------------------+----------------------------+
-
- Table 5
-
- BibTex allows the enduser to adjust different levels of associations
- (see the core principle (#core-principle)): spatial wires can be
- rendered, words can be highlighted, spatial objects can be
- highlighted/moved/scaled, links can be manipulated by the user.
-
-
-
-
-
-van Kammen Expires 12 March 2024 [Page 10]
-
-Internet-Draft XR Fragments September 2023
-
-
- | NOTE: infinite matches both 'baroque' and 'style'-occurences in
- | text, as well as spatial objects with "class":"style" or name
- | "baroque". This multiplexing of id/category is deliberate because
- | of the core principle (#core-principle).
-
- 8. The XR Browser needs to adjust tag-scope based on the endusers
+ 9. The XR Browser needs to adjust tag-scope based on the endusers
needs/focus (infinite tagging only makes sense when environment
is scaled down significantly)
- 9. The XR Browser should always allow the human to view/edit the
+ 10. The XR Browser should always allow the human to view/edit the
metadata, by clicking 'toggle metadata' on the 'back'
(contextmenu e.g.) of any XR text, anywhere anytime.
- | The simplicity of appending BibTeX (and leveling the metadata-
+
+
+
+van Kammen Expires 21 March 2024 [Page 15]
+
+Internet-Draft XR Fragments September 2023
+
+
+ 11. respect multi-line BiBTeX metadata in text because of the core
+ principle (#core-principle)
+ 12. Default font (unless specified otherwise) is a modern monospace
+ font, for maximized tabular expressiveness (see the core
+ principle (#core-principle)).
+ 13. anti-pattern: hardcoupling an XR Browser with a mandatory
+ *markup/scripting-language* which departs from onubtrusive plain
+ text (HTML/VRML/Javascript) (see the core principle (#core-
+ principle))
+ 14. anti-pattern: limiting human introspection, by abandoning plain
+ text as first tag citizen.
+
+ | The simplicity of appending metadata (and leveling the metadata-
| playfield between humans and machines) is also demonstrated by
| visual-meta (https://visual-meta.info) in greater detail.
-9.1. Default Data URI mimetype
+ Fictional chat:
+
+ Hey what about this: https://my.com/station.gltf#pos=0,0,1&rot=90,2,0&t=500,1000
+ I'm checking it right now
+ I don't see everything..where's our text from yesterday?
+ Ah wait, that's tagged with tag 'draft' (and hidden)..hold on, try this:
+ https://my.com/station.gltf#.draft&pos=0,0,1&rot=90,2,0&t=500,1000
+ how about we link the draft to the upcoming YELLO-event?
+ ok I'm adding #draft@YELLO
+ Yesterday I also came up with other usefull assocations between other texts in the scene:
+#event#YELLO
+#2025@YELLO
+ thanks, added.
+ Btw. I stumbled upon this spatial book which references station.gltf in some chapters:
+ https://thecommunity.org/forum/foo/mytrainstory.txt
+ interesting, I'm importing mytrainstory.txt into station.gltf
+ ah yes, chapter three points to trainterminal_2A in the scene, cool
+
+10.1. Default Data URI mimetype
The src-values work as expected (respecting mime-types), however:
@@ -593,31 +891,34 @@ Internet-Draft XR Fragments September 2023
This indicates that:
+
+
+van Kammen Expires 21 March 2024 [Page 16]
+
+Internet-Draft XR Fragments September 2023
+
+
* utf-8 is supported by default
- * hashtagbibs (https://github.com/coderofsalvation/hashtagbibs) are
- expanded to bibtags (https://en.wikipedia.org/wiki/BibTeX)
- * lines matching regex ^@ will automatically get filtered out, in
- order to:
- * links between textual/spatial objects can automatically be
- detected
- * bibtag appendices (visual-meta (https://visual-meta.info) can be
- interpreted e.g.
+ * lines beginning with @ will not be rendered verbatim by default
+ (read more (https://github.com/coderofsalvation/
+ hashtagbibs#hashtagbib-mimetypes))
+ * the XRWG should expand bibs to BibTex occurring in text
+ (#contactjohn@todo@important e.g.)
+
+ By doing so, the XR Browser (applications-layer) can interpret
+ microformats (visual-meta (https://visual-meta.info) to connect text
+ further with its environment ( setup links between textual/spatial
+ objects automatically e.g.).
| for more info on this mimetype see bibs
| (https://github.com/coderofsalvation/hashtagbibs)
Advantages:
+ * auto-expanding of hashtagbibs
+ (https://github.com/coderofsalvation/hashtagbibs) associations
* out-of-the-box (de)multiplex human text and metadata in one go
(see the core principle (#core-principle))
-
-
-
-van Kammen Expires 12 March 2024 [Page 11]
-
-Internet-Draft XR Fragments September 2023
-
-
* no network-overhead for metadata (see the core principle (#core-
principle))
* ensuring high FPS: HTML/RDF historically is too 'requesty'/'parsy'
@@ -635,7 +936,23 @@ Internet-Draft XR Fragments September 2023
For all other purposes, regular mimetypes can be used (but are not
required by the spec).
-9.2. URL and Data URI
+10.2. URL and Data URI
+
+
+
+
+
+
+
+
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 17]
+
+Internet-Draft XR Fragments September 2023
+
+--------------------------------------------------------------+ +------------------------+
| | | author.com/article.txt |
@@ -643,15 +960,15 @@ Internet-Draft XR Fragments September 2023
| │ | | |
| ├── ◻ article_canvas | | Hello friends. |
| │ └ src: ://author.com/article.txt | | |
- | │ | | @friend{friends |
+ | │ | | @book{greatgatsby |
| └── ◻ note_canvas | | ... |
- | └ src:`data:welcome human\n@...` | | } |
+ | └ src:`data:welcome human\n@book{sunday...}` | | } |
| | +------------------------+
| |
+--------------------------------------------------------------+
The enduser will only see welcome human and Hello friends rendered
- spatially (see mimetype). The beauty is that text in Data URI
+ verbatim (see mimetype). The beauty is that text in Data URI
automatically promotes rich copy-paste (retaining metadata). In both
cases, the text gets rendered immediately (onto a plane geometry,
hence the name '_canvas'). The XR Fragment-compatible browser can
@@ -661,144 +978,13 @@ Internet-Draft XR Fragments September 2023
| additional tagging using bibs
| (https://github.com/coderofsalvation/hashtagbibs): to tag spatial
| object note_canvas with 'todo', the enduser can type or speak
- | @note_canvas@todo
+ | #note_canvas@todo
+10.3. XR Text example parser
-
-
-
-
-
-van Kammen Expires 12 March 2024 [Page 12]
-
-Internet-Draft XR Fragments September 2023
-
-
-9.3. Bibs & BibTeX: lowest common denominator for linking data
-
- | "When a car breaks down, the ones *without* turbosupercharger are
- | easier to fix"
-
- Unlike XML or JSON, BibTex is typeless, unnested, and uncomplicated,
- hence a great advantage for introspection.
- It's a missing sensemaking precursor to extrospective RDF.
- BibTeX-appendices are already used in the digital AND physical world
- (academic books, visual-meta (https://visual-meta.info)), perhaps due
- to its terseness & simplicity.
- In that sense, it's one step up from the .ini fileformat (which has
- never leaked into the physical world like BibTex):
-
- 1. frictionless copy/pasting (by
- humans) of (unobtrusive) content AND metadata
- 2. an introspective 'sketchpad' for metadata, which can (optionally)
- mature into RDF later
-
- +================+=====================================+===============+
- |characteristic |UTF8 Plain Text (with BibTeX) |RDF |
- +================+=====================================+===============+
- |perspective |introspective |extrospective |
- +----------------+-------------------------------------+---------------+
- |structure |fuzzy (sensemaking) |precise |
- +----------------+-------------------------------------+---------------+
- |space/scope |local |world |
- +----------------+-------------------------------------+---------------+
- |everything is |yes |no |
- |text (string) | | |
- +----------------+-------------------------------------+---------------+
- |voice/paper- |bibs |no |
- |friendly |(https://github.com/coderofsalvation/| |
- | |hashtagbibs) | |
- +----------------+-------------------------------------+---------------+
- |leaves |yes |no |
- |(dictated) text | | |
- |intact | | |
- +----------------+-------------------------------------+---------------+
- |markup language |just an appendix |~4 different |
- +----------------+-------------------------------------+---------------+
- |polyglot format |no |yes |
- +----------------+-------------------------------------+---------------+
- |easy to copy/ |yes |up to |
- |paste | |application |
- |content+metadata| | |
- +----------------+-------------------------------------+---------------+
- |easy to write/ |yes |depends |
-
-
-
-van Kammen Expires 12 March 2024 [Page 13]
-
-Internet-Draft XR Fragments September 2023
-
-
- |repair for | | |
- |layman | | |
- +----------------+-------------------------------------+---------------+
- |easy to |yes (fits on A4 paper) |depends |
- |(de)serialize | | |
- +----------------+-------------------------------------+---------------+
- |infrastructure |selfcontained (plain text) |(semi)networked|
- +----------------+-------------------------------------+---------------+
- |freeform |yes, terse |yes, verbose |
- |tagging/ | | |
- |annotation | | |
- +----------------+-------------------------------------+---------------+
- |can be appended |yes |up to |
- |to text-content | |application |
- +----------------+-------------------------------------+---------------+
- |copy-paste text |yes |up to |
- |preserves | |application |
- |metadata | | |
- +----------------+-------------------------------------+---------------+
- |emoji |yes |depends on |
- | | |encoding |
- +----------------+-------------------------------------+---------------+
- |predicates |free |semi pre- |
- | | |determined |
- +----------------+-------------------------------------+---------------+
- |implementation/ |no |depends |
- |network overhead| | |
- +----------------+-------------------------------------+---------------+
- |used in |yes (visual-meta) |no |
- |(physical) | | |
- |books/PDF | | |
- +----------------+-------------------------------------+---------------+
- |terse non-verb |yes |no |
- |predicates | | |
- +----------------+-------------------------------------+---------------+
- |nested |no (but: BibTex rulers) |yes |
- |structures | | |
- +----------------+-------------------------------------+---------------+
-
- Table 6
-
- | To keep XR Fragments a lightweight spec, BibTeX is used for
- | rudimentary text/spatial tagging (not JSON, RDF or a scripting
- | language because they're harder to write/speak/repair.).
-
- Of course, on an application-level JSON(LD / RDF) can still be used
- at will, by embedding RDF-urls/data as custom properties (but is not
- interpreted by this spec).
-
-
-
-van Kammen Expires 12 March 2024 [Page 14]
-
-Internet-Draft XR Fragments September 2023
-
-
-9.4. XR Text example parser
-
- 1. The XR Fragments spec does not aim to harden the BiBTeX format
- 2. respect multi-line BibTex values because of the core principle
- (#core-principle)
- 3. Respect hashtag(bibs) and rulers (like ${visual-meta-start})
- according to the hashtagbibs spec
- (https://github.com/coderofsalvation/hashtagbibs)
- 4. BibTeX snippets should always start in the beginning of a line
- (regex: ^@), hence mimetype text/plain;charset=utf-8;bib=^@
-
- Here's an XR Text (de)multiplexer in javascript, which ticks all the
- above boxes:
+ To prime the XRWG with text from plain text src-values, here's an
+ example XR Text (de)multiplexer in javascript (which supports inline
+ bibs & bibtex):
xrtext = {
@@ -816,6 +1002,14 @@ xrtext = {
},
decode: (str) => {
+
+
+
+van Kammen Expires 21 March 2024 [Page 18]
+
+Internet-Draft XR Fragments September 2023
+
+
// bibtex: ↓@ ↓ ↓property ↓end
let pat = [ /@/, /^\S+[,{}]/, /},/, /}/ ]
let tags = [], text='', i=0, prop=''
@@ -830,18 +1024,11 @@ xrtext = {
if( !(t = t.trim()) ) return
if( tag = t.match( pat[1] ) ) tag = tag[0]
if( tag.match( /^{.*}$/ ) ) return tags.push({ruler:tag})
+ if( tag.match( /}$/ ) ) return tags.push({k: tag.replace(/}$/,''), v: {}})
t = t.substr( tag.length )
t.split( pat[2] )
.map( kv => {
if( !(kv = kv.trim()) || kv == "}" ) return
-
-
-
-van Kammen Expires 12 March 2024 [Page 15]
-
-Internet-Draft XR Fragments September 2023
-
-
v[ kv.match(/\s?(\S+)\s?=/)[1] ] = kv.substr( kv.indexOf("{")+1 )
})
tags.push( { k:tag, v } )
@@ -867,11 +1054,18 @@ Internet-Draft XR Fragments September 2023
}
The above functions (de)multiplexe text/metadata, expands bibs,
- (de)serialize bibtex (and all fits more or less on one A4 paper)
+ (de)serialize bibtex and vice versa
| above can be used as a startingpoint for LLVM's to translate/
| steelman to a more formal form/language.
+
+
+van Kammen Expires 21 March 2024 [Page 19]
+
+Internet-Draft XR Fragments September 2023
+
+
str = `
hello world
here are some hashtagbibs followed by bibtex:
@@ -890,14 +1084,6 @@ tags.find( (t) => t.k == 'flap{' ).v.asdf = 1 // edit tag
tags.push({ k:'bar{', v:{abc:123} }) // add tag
console.log( xrtext.encode(text,tags) ) // multiplex text & bibtex back together
-
-
-
-van Kammen Expires 12 March 2024 [Page 16]
-
-Internet-Draft XR Fragments September 2023
-
-
This expands to the following (hidden by default) BibTex appendix:
hello world
@@ -920,25 +1106,21 @@ Internet-Draft XR Fragments September 2023
| nonmatching tags (@book{nonmatchingbook e.g.) should be performed
| and prompt the enduser for deleting them.
-10. HYPER copy/paste
-
- The previous example, offers something exciting compared to simple
- copy/paste of 3D objects or text. XR Text according to the XR
- Fragment spec, allows HYPER-copy/paste: time, space and text
- interlinked. Therefore, the enduser in an XR Fragment-compatible
- browser can copy/paste/share data in these ways:
-
- 1. time/space: 3D object (current animation-loop)
- 2. text: TeXt object (including BibTeX/visual-meta if any)
- 3. interlinked: Collected objects by visual-meta tag
-
11. Security Considerations
Since XR Text contains metadata too, the user should be able to set
up tagging-rules, so the copy-paste feature can :
* filter out sensitive data when copy/pasting (XR text with
- class:secret e.g.)
+ tag:secret e.g.)
+
+
+
+
+van Kammen Expires 21 March 2024 [Page 20]
+
+Internet-Draft XR Fragments September 2023
+
12. IANA Considerations
@@ -946,92 +1128,94 @@ Internet-Draft XR Fragments September 2023
13. Acknowledgments
-
-
-
-van Kammen Expires 12 March 2024 [Page 17]
-
-Internet-Draft XR Fragments September 2023
-
-
* NLNET (https://nlnet.nl)
* Future of Text (https://futureoftext.org)
* visual-meta.info (https://visual-meta.info)
14. Appendix: Definitions
- +===============+==============================================+
- | definition | explanation |
- +===============+==============================================+
- | human | a sentient being who thinks fuzzy, absorbs, |
- | | and shares thought (by plain text, not |
- | | markuplanguage) |
- +---------------+----------------------------------------------+
- | scene | a (local/remote) 3D scene or 3D file |
- | | (index.gltf e.g.) |
- +---------------+----------------------------------------------+
- | 3D object | an object inside a scene characterized by |
- | | vertex-, face- and customproperty data. |
- +---------------+----------------------------------------------+
- | metadata | custom properties of text, 3D Scene or |
- | | Object(nodes), relevant to machines and a |
- | | human minority (academics/developers) |
- +---------------+----------------------------------------------+
- | XR fragment | URI Fragment with spatial hints like |
- | | #pos=0,0,0&t=1,100 e.g. |
- +---------------+----------------------------------------------+
- | src | (HTML-piggybacked) metadata of a 3D object |
- | | which instances content |
- +---------------+----------------------------------------------+
- | href | (HTML-piggybacked) metadata of a 3D object |
- | | which links to content |
- +---------------+----------------------------------------------+
- | query | an URI Fragment-operator which queries |
- | | object(s) from a scene like #q=cube |
- +---------------+----------------------------------------------+
- | visual-meta | visual-meta (https://visual.meta.info) data |
- | | appended to text/books/papers which is |
- | | indirectly visible/editable in XR. |
- +---------------+----------------------------------------------+
- | requestless | metadata which never spawns new requests |
- | metadata | (unlike RDF/HTML, which can cause framerate- |
- | | dropping, hence not used a lot in games) |
- +---------------+----------------------------------------------+
- | FPS | frames per second in spatial experiences |
- | | (games,VR,AR e.g.), should be as high as |
- | | possible |
- +---------------+----------------------------------------------+
- | introspective | inward sensemaking ("I feel this belongs to |
+ +===============+===============================================+
+ | definition | explanation |
+ +===============+===============================================+
+ | human | a sentient being who thinks fuzzy, absorbs, |
+ | | and shares thought (by plain text, not |
+ | | markuplanguage) |
+ +---------------+-----------------------------------------------+
+ | scene | a (local/remote) 3D scene or 3D file |
+ | | (index.gltf e.g.) |
+ +---------------+-----------------------------------------------+
+ | 3D object | an object inside a scene characterized by |
+ | | vertex-, face- and customproperty data. |
+ +---------------+-----------------------------------------------+
+ | metadata | custom properties of text, 3D Scene or |
+ | | Object(nodes), relevant to machines and a |
+ | | human minority (academics/developers) |
+ +---------------+-----------------------------------------------+
+ | XR fragment | URI Fragment with spatial hints like |
+ | | #pos=0,0,0&t=1,100 e.g. |
+ +---------------+-----------------------------------------------+
+ | the XRWG | wordgraph (collapses 3D scene to tags) |
+ +---------------+-----------------------------------------------+
+ | the hashbus | hashtags map to camera/scene-projections |
+ +---------------+-----------------------------------------------+
+ | spacetime | positions camera, triggers scene-preset/time |
+ | hashtags | |
+ +---------------+-----------------------------------------------+
+ | placeholder | a 3D object which with src-metadata (which |
+ | object | will be replaced by the src-data.) |
+ +---------------+-----------------------------------------------+
+ | src | (HTML-piggybacked) metadata of a 3D object |
+ | | which instances content |
+ +---------------+-----------------------------------------------+
+ | href | (HTML-piggybacked) metadata of a 3D object |
+ | | which links to content |
+ +---------------+-----------------------------------------------+
-van Kammen Expires 12 March 2024 [Page 18]
+van Kammen Expires 21 March 2024 [Page 21]
Internet-Draft XR Fragments September 2023
- | | that") |
- +---------------+----------------------------------------------+
- | extrospective | outward sensemaking ("I'm fairly sure John |
- | | is a person who lives in oklahoma") |
- +---------------+----------------------------------------------+
- | ◻ | ascii representation of an 3D object/mesh |
- +---------------+----------------------------------------------+
- | (un)obtrusive | obtrusive: wrapping human text/thought in |
- | | XML/HTML/JSON obfuscates human text into a |
- | | salad of machine-symbols and words |
- +---------------+----------------------------------------------+
- | BibTeX | simple tagging/citing/referencing standard |
- | | for plaintext |
- +---------------+----------------------------------------------+
- | BibTag | a BibTeX tag |
- +---------------+----------------------------------------------+
- | (hashtag)bibs | an easy to speak/type/scan tagging SDL (see |
- | | here (https://github.com/coderofsalvation/ |
- | | hashtagbibs) |
- +---------------+----------------------------------------------+
+ | query | an URI Fragment-operator which queries |
+ | | object(s) from a scene like #q=cube |
+ +---------------+-----------------------------------------------+
+ | visual-meta | visual-meta (https://visual.meta.info) data |
+ | | appended to text/books/papers which is |
+ | | indirectly visible/editable in XR. |
+ +---------------+-----------------------------------------------+
+ | requestless | metadata which never spawns new requests |
+ | metadata | (unlike RDF/HTML, which can cause framerate- |
+ | | dropping, hence not used a lot in games) |
+ +---------------+-----------------------------------------------+
+ | FPS | frames per second in spatial experiences |
+ | | (games,VR,AR e.g.), should be as high as |
+ | | possible |
+ +---------------+-----------------------------------------------+
+ | introspective | inward sensemaking ("I feel this belongs to |
+ | | that") |
+ +---------------+-----------------------------------------------+
+ | extrospective | outward sensemaking ("I'm fairly sure John is |
+ | | a person who lives in oklahoma") |
+ +---------------+-----------------------------------------------+
+ | ◻ | ascii representation of an 3D object/mesh |
+ +---------------+-----------------------------------------------+
+ | (un)obtrusive | obtrusive: wrapping human text/thought in |
+ | | XML/HTML/JSON obfuscates human text into a |
+ | | salad of machine-symbols and words |
+ +---------------+-----------------------------------------------+
+ | BibTeX | simple tagging/citing/referencing standard |
+ | | for plaintext |
+ +---------------+-----------------------------------------------+
+ | BibTag | a BibTeX tag |
+ +---------------+-----------------------------------------------+
+ | (hashtag)bibs | an easy to speak/type/scan tagging SDL (see |
+ | | here (https://github.com/coderofsalvation/ |
+ | | hashtagbibs) which expands to BibTex/JSON/XML |
+ +---------------+-----------------------------------------------+
- Table 7
+ Table 10
@@ -1045,20 +1229,4 @@ Internet-Draft XR Fragments September 2023
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-van Kammen Expires 12 March 2024 [Page 19]
+van Kammen Expires 21 March 2024 [Page 22]
diff --git a/doc/RFC_XR_Fragments.xml b/doc/RFC_XR_Fragments.xml
index e69de29..fc80088 100644
--- a/doc/RFC_XR_Fragments.xml
+++ b/doc/RFC_XR_Fragments.xml
@@ -0,0 +1,945 @@
+
+
+
+
+
+XR Fragments
+
+
+Internet
+Internet Engineering Task Force
+
+
+This draft is a specification for 4D URLs & navigation, which links together space, time & text together, for hypermedia browsers with- or without a network-connection.
+
+The specification promotes spatial addressibility, sharing, navigation, query-ing and annotating interactive (text)objects across for (XR) Browsers.
+
+XR Fragments allows us to enrich existing dataformats, by recursive use of existing proven technologies like URI Fragments and BibTags notation.
+
+Almost every idea in this document is demonstrated at https://xrfragment.org
+
+
+
+
+
+
+Introduction
+How can we add more features to existing text & 3D scenes, without introducing new dataformats?
+
+Historically, there's many attempts to create the ultimate markuplanguage or 3D fileformat.
+
+Their lowest common denominator is: (co)authoring using plain text.
+
+XR Fragments allows us to enrich/connect existing dataformats, by recursive use of existing technologies:
+
+
+
+- addressibility and navigation of 3D scenes/objects:
URI Fragments + src/href spatial metadata
+- Interlinking text/& 3D by collapsing space into a Word Graph (XRWG) (and augmenting text with
bibs / BibTags appendices (see visual-meta e.g.)
+- extend the hashtag-to-browser-viewport paradigm beyond 2D documents (XR documents)
+
+NOTE: The chapters in this document are ordered from highlevel to lowlevel (technical) as much as possible
+
+
+Core principle
+XR Fragments strives to serve (nontechnical/fuzzy) humans first, and machine(implementations) later, by ensuring hasslefree text-vs-thought feedback loops.
+
+This also means that the repair-ability of machine-matters should be human friendly too (not too complex).
+
+XR Fragments tries to seek to connect the world of text (semantical web / RDF), and the world of pixels.
+
+Instead of combining them (in a game-editor e.g.), XR Fragments is opting for a more integrated path towards them, by describing how to make browsers 4D URL-ready:
+
+
+
+principle
+XR 4D URL
+HTML 2D URL
+
+
+
+
+
+the XRWG
+wordgraph (collapses 3D scene to tags)
+Ctrl-F (find)
+
+
+
+the hashbus
+hashtags map to camera/scene-projections
+hashtags map to document positions
+
+
+
+spacetime hashtags
+positions camera, triggers scene-preset/time
+jumps/scrolls to chapter
+
+
+
XR Fragments does not look at XR (or the web) thru the lens of HTML.
+But approaches things from a higherlevel browser-perspective:
+
+ +----------------------------------------------------------------------------------------------+
+ | |
+ | the soul of any URL: ://macro /meso ?micro #nano |
+ | |
+ | 2D URL: ://library.com /document ?search #chapter |
+ | |
+ | 4D URL: ://park.com /4Dscene.fbx --> ?search --> #view ---> hashbus |
+ | │ | |
+ | XRWG <---------------------<------------+ |
+ | │ | |
+ | ├─ objects --------------->------------| |
+ | └─ text --------------->------------+ |
+ | |
+ | |
+ +----------------------------------------------------------------------------------------------+
+
+
+Traditional webbrowsers can become 4D document-ready by:
+
+
+- loading 3D assets (gltf/fbx e.g.) natively (not thru HTML).
+- allowing assets to publish hashtags to themselves (the scene) using the hashbus (like hashtags controlling the scrollbar).
+- collapsing the 3D scene to an wordgraph (for essential navigation purposes) controllable thru a hash(tag)bus
+
+XR Fragments itself is HTML-agnostic, though pseudo-XR Fragment browsers can be implemented on top of HTML/Javascript.
+
+
+Conventions and Definitions
+See appendix below in case certain terms are not clear.
+
+XR Fragment URI Grammar
+
+reserved = gen-delims / sub-delims
+gen-delims = "#" / "&"
+sub-delims = "," / "="
+
+Example: ://foo.com/my3d.gltf#pos=1,0,0&prio=-5&t=0,100
+
+
+
+Demo
+Explanation
+
+
+
+
+
+pos=1,2,3
+vector/coordinate argument e.g.
+
+
+
+pos=1,2,3&rot=0,90,0&q=.foo
+combinators
+
+
+
this is already implemented in all browsers
+
+
+
+List of URI Fragments
+
+
+
+fragment
+type
+example
+info
+
+
+
+
+
+#pos
+vector3
+#pos=0.5,0,0
+positions camera (or XR floor) to xyz-coord 0.5,0,0,
+
+
+
+#rot
+vector3
+#rot=0,90,0
+rotates camera to xyz-coord 0.5,0,0
+
+
+
+#t
+vector2
+#t=500,1000
+sets animation-loop range between frame 500 and 1000
+
+
+
+#......
+string
+#.cubes #cube
+predefined views, XRWG fragments and ID fragments
+
+
+
xyz coordinates are similar to ones found in SVG Media Fragments
+
+
+List of metadata for 3D nodes
+
+
+
+key
+type
+example (JSON)
+info
+
+
+
+
+
+name
+string
+"name": "cube"
+available in all 3D fileformats & scenes
+
+
+
+tag
+string
+"tag": "cubes geo"
+available through custom property in 3D fileformats
+
+
+
+href
+string
+"href": "b.gltf"
+available through custom property in 3D fileformats
+
+
+
+src
+string
+"src": "#cube"
+available through custom property in 3D fileformats
+
+
+
Popular compatible 3D fileformats: .gltf, .obj, .fbx, .usdz, .json (THREE.js), .dae and so on.
+NOTE: XR Fragments are file-agnostic, which means that the metadata exist in programmatic 3D scene(nodes) too.
+
+
+Navigating 3D
+Here's an ascii representation of a 3D scene-graph which contains 3D objects ◻ and their metadata:
+
+ +--------------------------------------------------------+
+ | |
+ | index.gltf |
+ | │ |
+ | ├── ◻ buttonA |
+ | │ └ href: #pos=1,0,1&t=100,200 |
+ | │ |
+ | └── ◻ buttonB |
+ | └ href: other.fbx | <-- file-agnostic (can be .gltf .obj etc)
+ | |
+ +--------------------------------------------------------+
+
+
+An XR Fragment-compatible browser viewing this scene, allows the end-user to interact with the buttonA and buttonB.
+
+In case of buttonA the end-user will be teleported to another location and time in the current loaded scene, but buttonB will
+ replace the current scene with a new one, like other.fbx.
+
+
+Embedding 3D content
+Here's an ascii representation of a 3D scene-graph with 3D objects ◻ which embeds remote & local 3D objects ◻ with/out using queries:
+
+ +--------------------------------------------------------+ +-------------------------+
+ | | | |
+ | index.gltf | | ocean.com/aquarium.fbx |
+ | │ | | │ |
+ | ├── ◻ canvas | | └── ◻ fishbowl |
+ | │ └ src: painting.png | | ├─ ◻ bass |
+ | │ | | └─ ◻ tuna |
+ | ├── ◻ aquariumcube | | |
+ | │ └ src: ://rescue.com/fish.gltf#bass%20tuna | +-------------------------+
+ | │ |
+ | ├── ◻ bedroom |
+ | │ └ src: #canvas |
+ | │ |
+ | └── ◻ livingroom |
+ | └ src: #canvas |
+ | |
+ +--------------------------------------------------------+
+
+An XR Fragment-compatible browser viewing this scene, lazy-loads and projects painting.png onto the (plane) object called canvas (which is copy-instanced in the bed and livingroom).
+
+Also, after lazy-loading ocean.com/aquarium.gltf, only the queried objects bass and tuna will be instanced inside aquariumcube.
+
+Resizing will be happen accordingly to its placeholder object aquariumcube, see chapter Scaling.
+
+Instead of cherrypicking objects with #bass&tuna thru src, queries can be used to import the whole scene (and filter out certain objects). See next chapter below.
+
+
+XR Fragment queries
+Include, exclude, hide/shows objects using space-separated strings:
+
+
+
+example
+outcome
+
+
+
+
+
+#q=-sky
+show everything except object named sky
+
+
+
+#q=-.language .english
+hide everything with tag language, but show all tag english objects
+
+
+
+#q=price:>2 price:<5
+of all objects with property price, show only objects with value between 2 and 5
+
+
+
It's simple but powerful syntax which allows <b>css</b>-like tag/id-selectors with a searchengine prompt-style feeling:
+
+
+- queries are a way to traverse a scene, and filter objects based on their tag- or property-values.
+- words starting with . like .german match tag-metadata of 3D objects like "tag":"german"
+- words starting with . like .german match tag-metadata of (BibTeX) tags in XR Text objects like @german{KarlHeinz, ... e.g.
+
+For example: #q=.foo is a shorthand for #q=tag:foo, which will select objects with custom property tag:foo. Just a simple #q=cube will simply select an object named cube.
+
+
+- see
an example video here
+
+
+including/excluding
+
+
+
+operator
+info
+
+
+
+
+
+-
+removes/hides object(s)
+
+
+
+:
+indicates an object-embedded custom property key/value
+
+
+
+.
+alias for "tag" :".foo" equals tag:foo
+
+
+
+> <
+compare float or int number
+
+
+
+/
+reference to root-scene.
+Useful in case of (preventing) showing/hiding objects in nested scenes (instanced by src) (*)
+
+
+
* = #q=-/cube hides object cube only in the root-scene (not nested cube objects)
+ #q=-cube hides both object cube in the root-scene <b>AND</b> nested skybox objects |
+
» example implementation
+» example 3D asset
+» discussion
+
+
+Query Parser
+Here's how to write a query parser:
+
+
+- create an associative array/object to store query-arguments as objects
+- detect object id's & properties foo:1 and foo (reference regex: /^.*:[><=!]?/ )
+- detect excluders like -foo,-foo:1,-.foo,-/foo (reference regex: /^-/ )
+- detect root selectors like /foo (reference regex: /^[-]?\// )
+- detect tag selectors like .foo (reference regex: /^[-]?tag$/ )
+- detect number values like foo:1 (reference regex: /^[0-9\.]+$/ )
+- expand aliases like .foo into tag:foo
+- for every query token split string on :
+- create an empty array rules
+- then strip key-operator: convert "-foo" into "foo"
+- add operator and value to rule-array
+- therefore we we set id to true or false (false=excluder -)
+- and we set root to true or false (true=/ root selector is present)
+- we convert key '/foo' into 'foo'
+- finally we add the key/value to the store like store.foo = {id:false,root:true} e.g.
+
+An example query-parser (which compiles to many languages) can be found here
+
+
+
+Embedding content (src-instancing)
+src is the 3D version of the <a target="_blank" href="https://www.w3.org/html/wiki/Elements/iframe">iframe</a>.
+
+It instances content (in objects) in the current scene/asset.
+
+
+
+fragment
+type
+example value
+
+
+
+
+
+src
+string (uri or [[predefined view
+predefined_view]] or [[query
+
+
+
+
+- local/remote content is instanced by the src (query) value (and attaches it to the placeholder mesh containing the src property)
+- <b>local</b> src values (URL starting with #, like #cube&foo) means only the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors).
(example code)
+- <b>local</b> src values indicating a query (#q=), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors).
(example code)
+- the instanced scene (from a src value) should be <b>scaled accordingly</b> to its placeholder object or <b>scaled relatively</b> based on the scale-property (of a geometry-less placeholder, an 'empty'-object in blender e.g.). For more info see Chapter Scaling.
+- <b>external</b> src (file) values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are:
+- when the placeholder object is a 2D plane, but the mimetype is 3D, then render the spatial content on that plane via a stencil buffer.
+- when only one object was cherrypicked (#cube e.g.), set its position to 0,0,0
+
+
+
+- model/gltf+json
+- image/png
+- image/jpg
+- text/plain;charset=utf-8;bib=^@
+
+» example implementation
+
+» example 3D asset
+
+» discussion
+
+
+Referencing content (href portals)
+navigation, portals & mutations
+
+
+
+fragment
+type
+example value
+
+
+
+
+
+href
+string (uri or predefined view)
+#pos=1,1,0
+#pos=1,1,0&rot=90,0,0
+://somefile.gltf#pos=1,1,0
+
+
+
+
+
+clicking an ''external''- or ''file URI'' fully replaces the current scene and assumes pos=0,0,0&rot=0,0,0 by default (unless specified)
+
+relocation/reorientation should happen locally for local URI's (#pos=....)
+
+navigation should not happen ''immediately'' when user is more than 2 meter away from the portal/object containing the href (to prevent accidental navigation e.g.)
+
+URL navigation should always be reflected in the client (in case of javascript: see [here for an example navigator).
+
+In XR mode, the navigator back/forward-buttons should be always visible (using a wearable e.g., see [here for an example wearable)
+
+in case of navigating to a new [[pos)ition, ''first'' navigate to the ''current position'' so that the ''back-button'' of the ''browser-history'' always refers to the previous position (see [here )
+
+portal-rendering: a 2:1 ratio texture-material indicates an equirectangular projection
+
+
+» example implementation
+
+» example 3D asset
+
+» discussion
+
+
+
+Scaling instanced content
+Sometimes embedded properties (like [[href|href]] or [[src|src]]) instance new objects.
+
+But what about their scale?
+
+How does the scale of the object (with the embedded properties) impact the scale of the referenced content?
+
+Rule of thumb: visible placeholder objects act as a '3D canvas' for the referenced scene (a plane acts like a 2D canvas for images e, a cube as a 3D canvas e.g.).
+
+
+- <b>IF</b> an embedded property (src e.g.) is set on an non-empty placeholder object (geometry of >2 vertices):
+
+
+
+- calculate the <b>bounding box</b> of the ''placeholder'' object (maxsize=1.4 e.g.)
+- hide the ''placeholder'' object (material e.g.)
+- instance the src scene as a child of the existing object
+- calculate the <b>bounding box</b> of the instanced scene, and scale it accordingly (to 1.4 e.g.)
+
+REASON: non-empty placeholder object can act as a protective bounding-box (for remote content of which might grow over time e.g.)
+
+
+- ELSE multiply the scale-vector of the instanced scene with the scale-vector of the <b>placeholder</b> object.
+
+TODO: needs intermediate visuals to make things more obvious
+
+
+
+Text in XR (tagging,linking to spatial objects)
+How does XR Fragments interlink text with objects?
+The XR Fragments does this by collapsing space into a Word Graph (the XRWG), augmented by Bib(s)Tex.
+
Instead of just throwing together all kinds media types into one experience (games), what about the intrinsic connections between them?
+
+Why is HTML adopted less in games outside the browser?
+Through the lens of game-making, ideally metadata must come with that text, but not obfuscate the text, or spawning another request to fetch it.
+
+XR Fragments does this by detecting Bib(s)Tex, without introducing a new language or fileformat
+
+Why Bib(s)Tex? Because its seems to be the lowest common denominator for an human-curated XRWG (extendable by speech/scanner/writing/typing e.g, see further motivation here )
+
Hence:
+
+
+- XR Fragments promotes (de)serializing a scene to the XRWG
+- XR Fragments primes the XRWG, by collecting words from the tag and name-property of 3D objects.
+- XR Fragments primes the XRWG, by collecting words from optional metadata at the end of content of text (see default mimetype & Data URI)
+Bib's and BibTex are first tag citizens for priming the XRWG with words (from XR text)
+- Like Bibs, XR Fragments generalizes the BibTex author/title-semantics (author{title}) into this points to that (this{that})
+- The XRWG should be recalculated when textvalues (in src) change
+- HTML/RDF/JSON is still great, but is beyond the XRWG-scope (they fit better in the application-layer)
+- Applications don't have to be able to access the XRWG programmatically, as they can easily generate one themselves by traversing the scene-nodes.
+- The XR Fragment focuses on fast and easy-to-generate end-user controllable word graphs (instead of complex implementations that try to defeat word ambiguity)
+
+Example:
+
+ http://y.io/z.fbx | Derived XRWG (shown as BibTex)
+ ----------------------------------------------------------------------------+--------------------------------------
+ | @house{castle,
+ +-[src: data:.....]----------------------+ +-[3D mesh]-+ | url = {https://y.io/z.fbx#castle}
+ | Chapter one | | / \ | | }
+ | | | / \ | | @baroque{castle,
+ | John built houses in baroque style. | | / \ | | url = {https://y.io/z.fbx#castle}
+ | | | |_____| | | }
+ | #john@baroque | +-----│-----+ | @baroque{john}
+ | | │ |
+ | | ├─ name: castle |
+ | | └─ tag: house baroque |
+ +----------------------------------------+ |
+ [3D mesh ] |
+ | O ├─ name: john |
+ | /|\ | |
+ | / \ | |
+ +--------+ |
+
+the #john@baroque-bib associates both text John and objectname john, with tag baroque
+
Another example:
+
+ http://y.io/z.fbx | Derived XRWG (printed as BibTex)
+ ----------------------------------------------------------------------------+--------------------------------------
+ |
+ +-[src: data:.....]----------------------+ +-[3D mesh]-+ | @house{castle,
+ | Chapter one | | / \ | | url = {https://y.io/z.fbx#castle}
+ | | | / \ | | }
+ | John built houses in baroque style. | | / \ | | @baroque{castle,
+ | | | |_____| | | url = {https://y.io/z.fbx#castle}
+ | #john@baroque | +-----│-----+ | }
+ | @baroque{john} | │ | @baroque{john}
+ | | ├─ name: castle |
+ | | └─ tag: house baroque |
+ +----------------------------------------+ | @house{baroque}
+ [3D mesh ] | @todo{baroque}
+ +-[remotestorage.io / localstorage]------+ | O + name: john |
+ | #baroque@todo@house | | /|\ | |
+ | ... | | / \ | |
+ +----------------------------------------+ +--------+ |
+
+both #john@baroque-bib and BibTex @baroque{john} result in the same XRWG, however on top of that 2 tages (house and todo) are now associated with text/objectname/tag 'baroque'.
+
As seen above, the XRWG can expand bibs (and the whole scene) to BibTeX.
+
+This allows hasslefree authoring and copy-paste of associations for and by humans, but also makes these URLs possible:
+
+
+
+URL example
+Result
+
+
+
+
+
+https://my.com/foo.gltf#.baroque
+highlights mesh john, 3D mesh castle, text John built(..)
+
+
+
+https://my.com/foo.gltf#john
+highlights mesh john, and the text John built (..)
+
+
+
+https://my.com/foo.gltf#house
+highlights mesh castle, and other objects with tag house or todo
+
+
+
hashtagbibs potentially allow the enduser to annotate text/objects by speaking/typing/scanning associations, which the XR Browser saves to remotestorage (or localStorage per toplevel URL). As well as, referencing BibTags per URI later on: https://y.io/z.fbx#@baroque@todo e.g.
+
The XRWG allows XR Browsers to show/hide relationships in realtime at various levels:
+
+
+- wordmatch inside src text
+- wordmatch inside href text
+- wordmatch object-names
+- wordmatch object-tagnames
+
+Spatial wires can be rendered, words/objects can be highlighted/scaled etc.
+
+Some pointers for good UX (but not necessary to be XR Fragment compatible):
+
+
+- The XR Browser needs to adjust tag-scope based on the endusers needs/focus (infinite tagging only makes sense when environment is scaled down significantly)
+- The XR Browser should always allow the human to view/edit the metadata, by clicking 'toggle metadata' on the 'back' (contextmenu e.g.) of any XR text, anywhere anytime.
+- respect multi-line BiBTeX metadata in text because of
the core principle
+- Default font (unless specified otherwise) is a modern monospace font, for maximized tabular expressiveness (see
the core principle ).
+- anti-pattern: hardcoupling an XR Browser with a mandatory markup/scripting-language which departs from onubtrusive plain text (HTML/VRML/Javascript) (see
the core principle )
+- anti-pattern: limiting human introspection, by abandoning plain text as first tag citizen.
+
+The simplicity of appending metadata (and leveling the metadata-playfield between humans and machines) is also demonstrated by visual-meta in greater detail.
+
Fictional chat:
+
+<John> Hey what about this: https://my.com/station.gltf#pos=0,0,1&rot=90,2,0&t=500,1000
+<Sarah> I'm checking it right now
+<Sarah> I don't see everything..where's our text from yesterday?
+<John> Ah wait, that's tagged with tag 'draft' (and hidden)..hold on, try this:
+<John> https://my.com/station.gltf#.draft&pos=0,0,1&rot=90,2,0&t=500,1000
+<Sarah> how about we link the draft to the upcoming YELLO-event?
+<John> ok I'm adding #draft@YELLO
+<Sarah> Yesterday I also came up with other usefull assocations between other texts in the scene:
+#event#YELLO
+#2025@YELLO
+<John> thanks, added.
+<Sarah> Btw. I stumbled upon this spatial book which references station.gltf in some chapters:
+<Sarah> https://thecommunity.org/forum/foo/mytrainstory.txt
+<John> interesting, I'm importing mytrainstory.txt into station.gltf
+<John> ah yes, chapter three points to trainterminal_2A in the scene, cool
+
+
+Default Data URI mimetype
+The src-values work as expected (respecting mime-types), however:
+The XR Fragment specification bumps the traditional default browser-mimetype
+text/plain;charset=US-ASCII
+to a hashtagbib(tex)-friendly one:
+text/plain;charset=utf-8;bib=^@
+This indicates that:
+
+
+- utf-8 is supported by default
+- lines beginning with @ will not be rendered verbatim by default (
read more )
+- the XRWG should expand bibs to BibTex occurring in text (#contactjohn@todo@important e.g.)
+
+By doing so, the XR Browser (applications-layer) can interpret microformats (visual-meta
+to connect text further with its environment ( setup links between textual/spatial objects automatically e.g.).
+for more info on this mimetype see bibs
+
Advantages:
+
+
+- auto-expanding of
hashtagbibs associations
+- out-of-the-box (de)multiplex human text and metadata in one go (see
the core principle )
+- no network-overhead for metadata (see
the core principle )
+- ensuring high FPS: HTML/RDF historically is too 'requesty'/'parsy' for game studios
+- rich send/receive/copy-paste everywhere by default, metadata being retained (see
the core principle )
+- netto result: less webservices, therefore less servers, and overall better FPS in XR
+
+This significantly expands expressiveness and portability of human tagged text, by postponing machine-concerns to the end of the human text in contrast to literal interweaving of content and markupsymbols (or extra network requests, webservices e.g.).
+
For all other purposes, regular mimetypes can be used (but are not required by the spec).
+
+
+
+URL and Data URI
+
+ +--------------------------------------------------------------+ +------------------------+
+ | | | author.com/article.txt |
+ | index.gltf | +------------------------+
+ | │ | | |
+ | ├── ◻ article_canvas | | Hello friends. |
+ | │ └ src: ://author.com/article.txt | | |
+ | │ | | @book{greatgatsby |
+ | └── ◻ note_canvas | | ... |
+ | └ src:`data:welcome human\n@book{sunday...}` | | } |
+ | | +------------------------+
+ | |
+ +--------------------------------------------------------------+
+
+The enduser will only see welcome human and Hello friends rendered verbatim (see mimetype).
+The beauty is that text in Data URI automatically promotes rich copy-paste (retaining metadata).
+In both cases, the text gets rendered immediately (onto a plane geometry, hence the name '_canvas').
+The XR Fragment-compatible browser can let the enduser access visual-meta(data)-fields after interacting with the object (contextmenu e.g.).
+additional tagging using bibs : to tag spatial object note_canvas with 'todo', the enduser can type or speak #note_canvas@todo
+
+
+XR Text example parser
+To prime the XRWG with text from plain text src-values, here's an example XR Text (de)multiplexer in javascript (which supports inline bibs & bibtex):
+
+xrtext = {
+
+ expandBibs: (text) => {
+ let bibs = { regex: /(#[a-zA-Z0-9_+@\-]+(#)?)/g, tags: {}}
+ text.replace( bibs.regex , (m,k,v) => {
+ tok = m.substr(1).split("@")
+ match = tok.shift()
+ if( tok.length ) tok.map( (t) => bibs.tags[t] = `@${t}{${match},\n}` )
+ else if( match.substr(-1) == '#' )
+ bibs.tags[match] = `@{${match.replace(/#/,'')}}`
+ else bibs.tags[match] = `@${match}{${match},\n}`
+ })
+ return text.replace( bibs.regex, '') + Object.values(bibs.tags).join('\n')
+ },
+
+ decode: (str) => {
+ // bibtex: ↓@ ↓<tag|tag{phrase,|{ruler}> ↓property ↓end
+ let pat = [ /@/, /^\S+[,{}]/, /},/, /}/ ]
+ let tags = [], text='', i=0, prop=''
+ let lines = xrtext.expandBibs(str).replace(/\r?\n/g,'\n').split(/\n/)
+ for( let i = 0; i < lines.length && !String(lines[i]).match( /^@/ ); i++ )
+ text += lines[i]+'\n'
+
+ bibtex = lines.join('\n').substr( text.length )
+ bibtex.split( pat[0] ).map( (t) => {
+ try{
+ let v = {}
+ if( !(t = t.trim()) ) return
+ if( tag = t.match( pat[1] ) ) tag = tag[0]
+ if( tag.match( /^{.*}$/ ) ) return tags.push({ruler:tag})
+ if( tag.match( /}$/ ) ) return tags.push({k: tag.replace(/}$/,''), v: {}})
+ t = t.substr( tag.length )
+ t.split( pat[2] )
+ .map( kv => {
+ if( !(kv = kv.trim()) || kv == "}" ) return
+ v[ kv.match(/\s?(\S+)\s?=/)[1] ] = kv.substr( kv.indexOf("{")+1 )
+ })
+ tags.push( { k:tag, v } )
+ }catch(e){ console.error(e) }
+ })
+ return {text, tags}
+ },
+
+ encode: (text,tags) => {
+ let str = text+"\n"
+ for( let i in tags ){
+ let item = tags[i]
+ if( item.ruler ){
+ str += `@${item.ruler}\n`
+ continue;
+ }
+ str += `@${item.k}\n`
+ for( let j in item.v ) str += ` ${j} = {${item.v[j]}}\n`
+ str += `}\n`
+ }
+ return str
+ }
+}
+
+The above functions (de)multiplexe text/metadata, expands bibs, (de)serialize bibtex and vice versa
+above can be used as a startingpoint for LLVM's to translate/steelman to a more formal form/language.
+
+str = `
+hello world
+here are some hashtagbibs followed by bibtex:
+
+#world
+#hello@greeting
+#another-section#
+
+@{some-section}
+@flap{
+ asdf = {23423}
+}`
+
+var {tags,text} = xrtext.decode(str) // demultiplex text & bibtex
+tags.find( (t) => t.k == 'flap{' ).v.asdf = 1 // edit tag
+tags.push({ k:'bar{', v:{abc:123} }) // add tag
+console.log( xrtext.encode(text,tags) ) // multiplex text & bibtex back together
+
+This expands to the following (hidden by default) BibTex appendix:
+
+hello world
+here are some hashtagbibs followed by bibtex:
+
+@{some-section}
+@flap{
+ asdf = {1}
+}
+@world{world,
+}
+@greeting{hello,
+}
+@{another-section}
+@bar{
+ abc = {123}
+}
+
+when an XR browser updates the human text, a quick scan for nonmatching tags (@book{nonmatchingbook e.g.) should be performed and prompt the enduser for deleting them.
+
+
+
+Security Considerations
+Since XR Text contains metadata too, the user should be able to set up tagging-rules, so the copy-paste feature can :
+
+
+- filter out sensitive data when copy/pasting (XR text with tag:secret e.g.)
+
+
+
+IANA Considerations
+This document has no IANA actions.
+
+
+Acknowledgments
+
+
+NLNET
+Future of Text
+visual-meta.info
+
+
+
+Appendix: Definitions
+
+
+
+definition
+explanation
+
+
+
+
+
+human
+a sentient being who thinks fuzzy, absorbs, and shares thought (by plain text, not markuplanguage)
+
+
+
+scene
+a (local/remote) 3D scene or 3D file (index.gltf e.g.)
+
+
+
+3D object
+an object inside a scene characterized by vertex-, face- and customproperty data.
+
+
+
+metadata
+custom properties of text, 3D Scene or Object(nodes), relevant to machines and a human minority (academics/developers)
+
+
+
+XR fragment
+URI Fragment with spatial hints like #pos=0,0,0&t=1,100 e.g.
+
+
+
+the XRWG
+wordgraph (collapses 3D scene to tags)
+
+
+
+the hashbus
+hashtags map to camera/scene-projections
+
+
+
+spacetime hashtags
+positions camera, triggers scene-preset/time
+
+
+
+placeholder object
+a 3D object which with src-metadata (which will be replaced by the src-data.)
+
+
+
+src
+(HTML-piggybacked) metadata of a 3D object which instances content
+
+
+
+href
+(HTML-piggybacked) metadata of a 3D object which links to content
+
+
+
+query
+an URI Fragment-operator which queries object(s) from a scene like #q=cube
+
+
+
+visual-meta
+visual-meta data appended to text/books/papers which is indirectly visible/editable in XR.
+
+
+
+requestless metadata
+metadata which never spawns new requests (unlike RDF/HTML, which can cause framerate-dropping, hence not used a lot in games)
+
+
+
+FPS
+frames per second in spatial experiences (games,VR,AR e.g.), should be as high as possible
+
+
+
+introspective
+inward sensemaking ("I feel this belongs to that")
+
+
+
+extrospective
+outward sensemaking ("I'm fairly sure John is a person who lives in oklahoma")
+
+
+
+◻
+ascii representation of an 3D object/mesh
+
+
+
+(un)obtrusive
+obtrusive: wrapping human text/thought in XML/HTML/JSON obfuscates human text into a salad of machine-symbols and words
+
+
+
+BibTeX
+simple tagging/citing/referencing standard for plaintext
+
+
+
+BibTag
+a BibTeX tag
+
+
+
+(hashtag)bibs
+an easy to speak/type/scan tagging SDL (see here which expands to BibTex/JSON/XML
+
+
+
+
+
+
+
diff --git a/index.html b/index.html
index e86ee3f..0d17525 100644
--- a/index.html
+++ b/index.html
@@ -628,8 +628,6 @@ Error message and password prompt
- conflict.jpg
-- Draft 2 of '$:/webxr-notebook/boot.css'
-
- Draft of '↪ URI.parse(url,flags)'
- Draft of '📜 XR fragments'
@@ -800,7 +798,7 @@ Error message and password prompt
{"created":"20151007165524815","text":"yes","bag":"default","revision":"0","type":"text/vnd.tiddlywiki","title":"$:/config/HideSidebarOnStartup","tags":"","modified":"20230504174422977","creator":"Tobias Beer"},
{"created":"20230424093821723","text":"yes","tags":"","title":"$:/config/HtmlParser/DisableSandbox","modified":"20230424142930452"},
{"created":"20230424140117603","text":"allowvr allowfullscreen allow-scripts","tags":"","title":"$:/config/HtmlParser/SandboxTokens","modified":"20230424142737213"},
-{"created":"20230423174843715","title":"$:/config/Manager/Filter","text":"Home","modified":"20230808120107311"},
+{"created":"20230423174843715","title":"$:/config/Manager/Filter","text":"css","modified":"20230918084303392"},
{"created":"20230423164137536","text":"","title":"$:/config/Manager/System","modified":"20230424140109138"},
{"created":"20230425162854560","title":"$:/config/Navigation/UpdateAddressBar","text":"permalink","modified":"20230427180247389"},
{"created":"20230424152601270","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/control-panel","modified":"20230424152601270"},
@@ -843,14 +841,14 @@ Error message and password prompt
{"created":"20230425164931250","title":"$:/state/folded/GLSL shader template","text":"show","modified":"20230425164939576"},
{"created":"20230424142403302","text":"checked","title":"$:/state/import/select-all","modified":"20230424142404392"},
{"created":"20230423163640468","title":"$:/state/notebook-sidebar","text":"yes","modified":"20230530131828376"},
-{"created":"20230423163641722","title":"$:/state/notebook-sidebar-section","text":"Reference","modified":"20230830160259760"},
+{"created":"20230423163641722","title":"$:/state/notebook-sidebar-section","text":"Reference","modified":"20230918090109697"},
{"created":"20230427102758222","title":"$:/state/plugin-info--1887569658-$:/plugins/ihm/tidgraph--50210113","text":"documentation","modified":"20230427102759911"},
{"created":"20230427092525294","title":"$:/state/plugin-info--391242618-$:/plugins/tiddlywiki/browser-storage","text":"yes","modified":"20230427092525375"},
{"created":"20230427093219686","title":"$:/state/plugin-info--391242618-$:/plugins/tiddlywiki/browser-storage--605768392","text":"settings","modified":"20230427094141558"},
{"created":"20230424092949812","title":"$:/state/plugin-info-1024395336-$:/plugins/tiddlywiki/codemirror--1574138004","text":"contents","modified":"20230425143706081"},
{"created":"20230424093627704","title":"$:/state/plugin-info-833095967-Draft of '$:/core'---1604322978","text":"readme","modified":"20230424093629208"},
-{"created":"20230423163649566","title":"$:/state/showeditpreview","text":"yes","modified":"20230804100235310"},
-{"created":"20230504174435745","title":"$:/state/sidebar","text":"no","modified":"20230830151615988"},
+{"created":"20230423163649566","title":"$:/state/showeditpreview","text":"yes","modified":"20230918084028315"},
+{"created":"20230504174435745","title":"$:/state/sidebar","text":"no","modified":"20230913133628192"},
{"created":"20230423163453188","title":"$:/state/tab--1963855381","text":"$:/themes/nico/notebook/themetweaks","modified":"20230523124919651"},
{"created":"20230427092954391","title":"$:/state/tab--2112689675","text":"$:/core/ui/ControlPanel/Basics","modified":"20230523124903522"},
{"created":"20230424093058379","title":"$:/state/tab--697582678","text":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20230427093030201"},
@@ -865,11 +863,11 @@ Error message and password prompt
{"created":"20230622104314194","title":"$:/state/toc/Reference-js/AFRAME--403145756","text":"open","modified":"20230622104328631"},
{"created":"20230602141817951","title":"$:/state/toc/Reference-js/THREE.js--403145756","text":"open","modified":"20230622104317372"},
{"created":"20230830155416228","title":"$:/state/toc/Reference-The Future--403145756","text":"open","modified":"20230830155526096"},
-{"created":"20230622111757807","title":"$:/state/toc/Reference-The parser--403145756","text":"close","modified":"20230830155419156"},
+{"created":"20230622111757807","title":"$:/state/toc/Reference-The parser--403145756","text":"open","modified":"20230914082217997"},
{"created":"20230622104329622","title":"$:/state/toc/Reference/js/AFRAME-THREE.js--403145756","text":"open","modified":"20230622104329622"},
{"created":"20230622111759784","title":"$:/state/toc/Reference/The parser-THREE.js--403145756","text":"open","modified":"20230622111759784"},
{"title":"$:/status/RequireReloadDueToPluginChange","text":"no"},
-{"title":"$:/StoryList","created":"20230830151745735","text":"","list":"[[XR Fragments]]","modified":"20230830163434969"},
+{"title":"$:/StoryList","created":"20230918083912934","text":"","list":"[[XR Fragments]]","modified":"20230918090113208"},
{"created":"20230423163445948","title":"$:/theme","text":"$:/themes/nico/notebook","modified":"20230423163445948"},
{"text":"{\n \"tiddlers\": {\n \"$:/themes/nico/notebook/LICENSE\": {\n \"title\": \"$:/themes/nico/notebook/LICENSE\",\n \"created\": \"20200419141443144\",\n \"modified\": \"20210118213330307\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\nMIT License Copyright (c) 2020 [[Nicolas Petton|https://nicolas.petton.fr]] nicolas@petton.fr\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is furnished\\nto do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice (including the next\\nparagraph) shall be included in all copies or substantial portions of the\\nSoftware.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\\nOR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF\\nOR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\"\n },\n \"$:/themes/nico/notebook/themetweaks\": {\n \"title\": \"$:/themes/nico/notebook/themetweaks\",\n \"created\": \"20201217172915960\",\n \"modified\": \"20210123211851680\",\n \"tags\": \"$:/tags/ControlPanel/Appearance\",\n \"caption\": \"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\n \"text\": \"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\nYou can tweak certain aspects of the ''Notebook'' theme.\\n\\n! \u003C\u003Clingo Options>>\\n\\n|\u003C$link to=\\\"$:/themes/nico/notebook/options/stickytitles\\\">\u003C\u003Clingo Options/StickyTitles>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Options/StickyTitles/Hint>>// |\u003C$select tiddler=\\\"$:/themes/nico/notebook/options/stickytitles\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003C\u003Clingo Options/CodeWrapping>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003Coption value=\\\"pre\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"pre-wrap\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\">Reveal tiddler controls on mouseover\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n\\n! \u003C\u003Clingo Settings>>\\n\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/fontfamily\\\">\u003C\u003Clingo Settings/FontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/fontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/codefontfamily\\\">\u003C\u003Clingo Settings/CodeFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/codefontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/editorfontfamily\\\">\u003C\u003Clingo Settings/EditorFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/editorfontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n\\n! \u003C\u003Clingo Metrics>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\">\u003C\u003Clingo Metrics/FontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\">\u003C\u003Clingo Metrics/LineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\\\">\u003C\u003Clingo Metrics/BodyFontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/bodyfontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\\\">\u003C\u003Clingo Metrics/BodyLineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/bodylineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\">\u003C\u003Clingo Metrics/SidebarBreakpoint>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarBreakpoint/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/metrics/sidebar-width\\\">\u003C\u003Clingo Metrics/SidebarWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/sidebar-width\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/metrics/story-width\\\">\u003C\u003Clingo Metrics/StoryWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/story-width\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n\\n\"\n },\n \"$:/themes/nico/notebook/base\": {\n \"title\": \"$:/themes/nico/notebook/base\",\n \"created\": \"20200419141443144\",\n \"modified\": \"20210120224227503\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\\n\\n\\\\define if-sidebar(text)\\n \u003C$reveal state=\\\"$:/state/notebook-sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n $text$\\n \u003C/$reveal>\\n\\\\end\\n\\n\\\\define if-reveal-tiddler-controls-on-hover(text)\\n \u003C$reveal state=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n $text$\\n \u003C/$reveal>\\n\\\\end\\n \\n/* Top and bottom bars */\\n\\n/* Hide the top-right bar */\\n.tc-topbar.tc-topbar-right {\\n display: none;\\n}\\n\\ndiv.tc-sidebar-header {\\n padding: 0;\\n min-height: 0;\\n}\\n\\n.tc-story-river {\\n padding: 6px 0 !important;\\n width: 100% !important;\\n max-width: {{$:/themes/nico/notebook/metrics/story-width}} !important;\\n margin: 0 auto !important;\\n margin-top: 34px !important;\\n}\\n\\ndiv.tc-tiddler-frame {\\n width: 100%;\\n margin: 20px 0;\\n background: \u003C\u003Ccolour tiddler-background>>;\\n box-shadow: 0 5px 20px rgba(0,0,0, 0.12);\\n border-radius: 6px;\\n padding: 42px 60px 60px 60px;\\n}\\n\\nh1.tc-site-title {\\n margin-top: 14px;\\n font-size: 1.5em !important;\\n}\\n\\n.nc-bar {\\n padding: 10px;\\n height: {{$:/themes/nico/notebook/metrics/topbar-height}};\\n background: \u003C\u003Ccolour page-background>>;\\n display: flex;\\n justify-content: space-between;\\n}\\n\\n.nc-topbar-wrapper {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\\n z-index: 501;\\n}\\n\\n.nc-bar.nc-topbar {\\n top: 0;\\n background: \u003C\u003Ccolour page-background>>ee;\\n max-width: calc({{$:/themes/nico/notebook/metrics/story-width}} + 40px);\\n padding: 10px 20px;\\n margin: 0 auto;\\n}\\n\\n.nc-bar.nc-bottombar {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\\n z-index: 501;\\n}\\n\\n.nc-bar .left svg {\\n fill: \u003C\u003Ccolour sidebar-controls-foreground>>;\\n}\\n\\n.nc-bar input[type=\\\"search\\\"] {\\n width: 200px;\\n padding: .6em 1em;\\n margin-top: -.2em;\\n background: \u003C\u003Ccolour sidebar-button-foreground>>44;\\n color: \u003C\u003Ccolour foreground>>cc;\\n transition: all ease-in .2s;\\n border: 1px solid transparent;\\n outline: 0;\\n}\\n\\n.nc-bar input[type=\\\"search\\\"]:focus {\\n width: 300px;\\n background: \u003C\u003Ccolour tiddler-background>>;\\n color: \u003C\u003Ccolour foreground>>;\\n border: 1px solid \u003C\u003Ccolour primary>>;\\n box-shadow: 0 0 .2rem 0 \u003C\u003Ccolour primary>>;\\n}\\n\\ninput[type=\\\"search\\\"]::-webkit-search-cancel-button {\\n -webkit-appearance: auto;\\n}\\n\\n.nc-bar .tc-block-dropdown.tc-search-drop-down {\\n margin-left: 0;\\n width: 400px;\\n border: 0;\\n box-shadow: 0 0 6px 0 rgba(0,0,0,.2);\\n border-radius: 6px;\\n padding: 20px 0;\\n}\\n\\n.nc-bar p {\\n margin: 0;\\n}\\n\\n.nc-bar .tc-page-controls {\\n margin-top: 0;\\n}\\n\\n.nc-bar .tc-page-controls button {\\n margin-right: .8em;\\n}\\n\\n.nc-bar .tc-page-controls button .tc-btn-text {\\n font-size: 14px;\\n}\\n\\n.nc-bar .tc-block-dropdown {\\n max-height: 70vh;\\n overflow: auto;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-topbar {\\n display: none;\\n }\\n\\n .tc-story-river {\\n padding: 0 !important;\\n margin-top: 0 !important;\\n margin-bottom: 60px !important;\\n }\\n\\n div.tc-tiddler-frame {\\n margin: 0;\\n box-shadow: none;\\n border-radius: 0;\\n border-top: 0;\\n }\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-bottombar {\\n display: none;\\n }\\n}\\n\\n@media(max-width: 1100px) {\\n .nc-bar input[type=\\\"search\\\"] {\\n width: 200px;\\n }\\n}\\n\\n/* Sidebar */\\n\\n@keyframes sidebar-appear {\\n 0% {\\n left: -{{$:/themes/nico/notebook/metrics/sidebar-width}};\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n\u003C\u003Cif-sidebar \\\"\\\"\\\"\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-sidebar {\\n animation: sidebar-appear .14s;\\n padding-top: 10px;\\n }\\n}\\n\\\"\\\"\\\">>\\n\\n.nc-sidebar {\\n background: \u003C\u003Ccolour tiddler-background>>;\\n border-right: 1px solid \u003C\u003Ccolour tiddler-border>>;\\n width: {{$:/themes/nico/notebook/metrics/sidebar-width}};\\n overflow-y: auto;\\n overflow-x: hidden;\\n z-index: 500;\\n}\\n\\n.nc-sidebar .segment {\\n border-bottom: 1px solid rgba(0,0,0,.1);\\n}\\n\\n.nc-sidebar ol {\\n margin: 0;\\n padding: 0;\\n list-style: none;\\n line-height: 1.8em;\\n}\\n\\n.nc-sidebar ol ol {\\n padding-left: 18px;\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .mobile-only {\\n display: none;\\n }\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .desktop-only {\\n display: none;\\n }\\n}\\n\\n.nc-sidebar h1.tc-site-title {\\n margin: 0;\\n}\\n\\n.nc-sidebar p {\\n margin: 6px 0;\\n}\\n\\n.nc-sidebar .tc-site-subtitle {\\n color: \u003C\u003Ccolour site-title-foreground>>;\\n}\\n\\n.nc-sidebar .section .label {\\n padding: 2px 0;\\n color: \u003C\u003Ccolour site-title-foreground>>;\\n fill: \u003C\u003Ccolour site-title-foreground>>;\\n font-weight: bold;\\n line-height: 1.6em;\\n display: block;\\n width: 100%;\\n text-align: left;\\n padding: 8px 15px;\\n border-radius: 0;\\n}\\n\\n.nc-sidebar .section:not(.open) .label:hover {\\n background: rgba(0,0,0,.06);\\n}\\n\\n.nc-sidebar .section.open .label {\\n color: \u003C\u003Ccolour tiddler-background>>;\\n fill: \u003C\u003Ccolour tiddler-background>>;\\n background: \u003C\u003Ccolour primary>>;\\n border-bottom: 1px solid rgba(0,0,0,.1);\\n}\\n\\n.nc-sidebar .section .label .caret {\\n display: inline-block;\\n width: 15px;\\n float: right;\\n}\\n\\n.nc-sidebar .content {\\n padding: 6px 15px;\\n font-size: 1em;\\n}\\n\\n.nc-sidebar .tc-tiddlylink {\\n color: \u003C\u003Ccolour primary>>;\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-sidebar {\\n position: fixed;\\n left: 0;\\n top: 0;\\n bottom: 0;\\n }\\n}\\n\\n\u003C\u003Cif-sidebar \\\"\\\"\\\"\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n @keyframes sidebar-slide {\\n 0% {\\n left: -100vw;\\n }\\n 100% {\\n left: 0;\\n }\\n }\\n .nc-sidebar {\\n overflow: auto;\\n position: fixed;\\n width: 100%;\\n left: 0;\\n top: 0;\\n bottom: 48px;\\n z-index: 3000;\\n animation: sidebar-slide ease-in .2s;\\n animation-fill-mode: forwards;\\n }\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-page-container {\\n margin-left: {{$:/themes/nico/notebook/metrics/sidebar-width}} !important;\\n }\\n\\n .nc-topbar-wrapper {\\n left: {{$:/themes/nico/notebook/metrics/sidebar-width}};\\n }\\n}\\n\\\"\\\"\\\">>\\n\\n/* Animate the hamburger button */\\n\\n@keyframes menu-bars-1 {\\n 0% {}\\n 100% {\\n transform: rotate(-45deg) translateY(-10px) translateX(-6px);\\n fill: \u003C\u003Ccolour foreground>>;\\n }\\n}\\n\\n@keyframes menu-bars-2 {\\n 0% {}\\n 100% { opacity: 0; }\\n}\\n\\n@keyframes menu-bars-3 {\\n 0% {}\\n 100% {\\n transform: rotate(45deg) translateY(6px) translateX(2px);\\n fill: \u003C\u003Ccolour foreground>>;\\n }\\n}\\n\\n.sidebar-toggle {\\n /* position: fixed; */\\n /* top: 6px; */\\n /* left: 6px; */\\n /* z-index: 600; */\\n /* padding: 4px; */\\n /* border-radius: 8px; */\\n margin-right: 10px;\\n transition: all ease-in-out .2s;\\n fill: \u003C\u003Ccolour sidebar-controls-foreground>>;\\n}\\n\\n.sidebar-toggle:hover,\\n.sidebar-toggle.open {\\n fill: \u003C\u003Ccolour sidebar-controls-foreground-hover>>;\\n}\\n\\n/* @media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { */\\n/* .sidebar-toggle { */\\n/* top: auto; */\\n/* bottom: 10px; */\\n/* left: 10px; */\\n/* } */\\n/* } */\\n\\n.sidebar-toggle .bars .bar {\\n transform: rotate(0) translateY(0) translateX(0);\\n opacity: 1;\\n transform-origin: 20px 10px;\\n transition: transform 0.4s ease-in-out, opacity 0.2s ease-in-out, fill .4s ease-in-out;\\n}\\n\\n.sidebar-toggle .bars .bar:nth-of-type(3) {\\n transform-origin: 20px 20px;\\n}\\n\\n.sidebar-toggle.open .bars .bar:nth-of-type(1) {\\n animation: menu-bars-1 .6s;\\n animation-fill-mode: forwards;\\n}\\n.sidebar-toggle.open .bars .bar:nth-of-type(2) {\\n animation: menu-bars-2 .6s;\\n animation-fill-mode: forwards;\\n}\\n.sidebar-toggle.open .bars .bar:nth-of-type(3) {\\n animation: menu-bars-3 .6s;\\n animation-fill-mode: forwards;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n div.tc-tiddler-frame {\\n padding: 14px;\\n }\\n}\\n\\n/* Inputs */\\n\\ninput, textarea {\\n transition: border .14s ease-in-out;\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n border: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n padding: .5em;\\n border-radius: 4px;\\n}\\n\\ninput:focus, textarea:focus {\\n box-shadow: 0 0 0.2rem 0 \u003C\u003Ccolour primary>>;\\n outline: 0;\\n border-color: \u003C\u003Ccolour primary>>;\\n}\\n\\nbutton {\\n border-radius: 1.5em;\\n border: 1px solid #ccc;\\n background: \u003C\u003Ccolour tiddler-background>>;\\n padding: .3em 1em;\\n cursor: pointer;\\n transition: box-shadow ease-in .1s;\\n color: \u003C\u003Ccolor foreground>>;\\n}\\n\\nbutton:focus, button:active {\\n outline: 0 none;\\n}\\n\\nbutton.tc-btn-invisible {\\n border-radius: 0;\\n}\\n\\n.tc-editor-toolbar button,\\n.tc-editor-toolbar button.tc-btn-invisible {\\n border-radius: 3px;\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n color: \u003C\u003Ccolour foreground>>;\\n fill: \u003C\u003Ccolour foreground>>;\\n border: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n}\\n\\n.tc-editor-toolbar button:hover,\\n.tc-editor-toolbar button:active {\\n border-color: \u003C\u003Ccolour primary>>;\\n background: \u003C\u003Ccolour primary>>;\\n color: \u003C\u003Ccolour background>>;\\n fill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n transition: border .14s ease-in-out;\\n border: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n padding: 4px;\\n border-radius: 4px;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor:focus,\\n.tc-tiddler-frame textarea.tc-edit-texteditor:focus,\\n.tc-tiddler-frame iframe.tc-edit-texteditor:focus {\\n box-shadow: 0 0 0.2rem 0 \u003C\u003Ccolour primary>>;\\n outline: 0;\\n border-color: \u003C\u003Ccolour primary>>;\\n}\\n\\n.tc-tiddler-controls .tc-btn-text {\\n font-size: 16px;\\n}\\n\\n\u003C\u003Cif-reveal-tiddler-controls-on-hover \\\"\\\"\\\"\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-tiddler-frame .tc-tiddler-controls svg {\\n opacity: 0;\\n transition: all .2s ease-in;\\n }\\n\\n .tc-tiddler-controls svg.tc-image-close-button,\\n .tc-tiddler-controls .py-toggle-todo-button svg,\\n .tc-tiddler-controls svg.tc-image-done-button,\\n .tc-tiddler-frame .tc-tiddler-controls:hover svg {\\n opacity: 1;\\n }\\n\\n .tc-tiddler-controls .py-toggle-todo-button .done svg {\\n fill: #2da562;\\n }\\n}\\n\\\"\\\"\\\">>\\n\\nbutton.tc-tag-label, span.tc-tag-label {\\n padding: 0.3em 1em !important;\\n}\\n\\n/* Fonts */\\n\\nhtml, body {\\n font-family: {{$:/themes/nico/notebook/settings/fontfamily}};\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n font-family: {{$:/themes/nico/notebook/settings/editorfontfamily}};\\n}\\n\\npre, code {\\n font-family: {{$:/themes/nico/notebook/settings/codefontfamily}};\\n}\\n\\n.tc-titlebar, .tc-site-title {\\n font-size: 28px !important;\\n line-height: 34px !important;\\n font-weight: 600 !important;\\n letter-spacing: -0.5px !important;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n font-weight: 600;\\n}\\n\\n.tc-tiddler-body h1,\\n.tc-tiddler-body h2,\\n.tc-tiddler-preview-preview h1,\\n.tc-tiddler-preview-preview h2 {\\n font-weight: bold;\\n}\\n\\ndiv.tc-tiddler-frame .tc-tiddler-body {\\n font-size: {{$:/themes/nico/notebook/metrics/bodyfontsize}};\\n line-height: {{$:/themes/nico/notebook/metrics/bodylineheight}};\\n}\\n\\n/* Tabs */\\n\\ndiv.tc-tab-buttons {\\n margin-bottom: -4px;\\n}\\n\\ndiv.tc-tab-buttons button {\\n font-weight: bold;\\n font-size: 1.2em;\\n line-height: 1em;\\n padding: .6em .8em .4em .8em;\\n border: 0;\\n border-radius: 0;\\n background: transparent;\\n cursor: pointer;\\n transition: background ease-in .2s;\\n}\\n\\ndiv.tc-tab-buttons button:hover {\\n background: rgba(0,0,0,.03);\\n}\\n\\ndiv.tc-tab-buttons button.tc-tab-selected {\\n border: 0;\\n background: transparent;\\n border-bottom: 4px solid \u003C\u003Ccolour primary>>;\\n}\\n\\n/* Dropdowns */\\n\\n@keyframes pop {\\n 0% {\\n transform: scale(0.8);\\n opacity: 0;\\n }\\n\\n 80% {\\n transform: scale(1.03);\\n opacity: 1;\\n }\\n\\n 100% {\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n\\n.tc-drop-down {\\n box-shadow: 0 0 10px rgba(0,0,0,.2);\\n border-radius: 6px;\\n padding: 10px 0 !important;\\n animation: pop .15s ease-in forwards;\\n}\\n\\n.tc-drop-down a, .tc-drop-down button {\\n padding: 3px 15px !important;\\n}\\n\\n.tc-search-results {\\n line-height: 2em;\\n}\\n\\n.tc-search-results em {\\n font-weight: bold;\\n font-style: normal;\\n}\\n\\n/* Draft list */\\n\\n.tc-drafts-list {\\n font-size: .9em;\\n left: auto;\\n right: 0;\\n}\\n\\n.tc-drafts-list a {\\n padding: 6px 12px;\\n font-weight: bold;\\n border-top-left-radius: 6px;\\n border-top-right-radius: 6px;\\n display: inline-block;\\n}\\n\\n.nc-refs {\\n color: #888;\\n font-size: .9em;\\n}\\n\\n.nc-refs h4 {\\n margin-bottom: 4px;\\n}\\n\\n.nc-post-created {\\n color: #acacac;\\n font-size: .8em;\\n}\\n\"\n },\n \"$:/themes/nico/notebook/changelog\": {\n \"title\": \"$:/themes/nico/notebook/changelog\",\n \"caption\": \"ChangeLog\",\n \"created\": \"20201217180707912\",\n \"modified\": \"20210202214001915\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"! 1.4.1\\n\\n!! Fixes\\n\\n* Fix the transclusion mode of sidebar sections\\n* Fix section title rendering for tiddlers without a caption field\\n* Fix the colour of links in the sidebar when using Notebook palettes with Vanilla\\n\\n! 1.4.0\\n\\n!! Features\\n\\n* New redesigned topbar layout\\n* Add a configuration setting for the story width\\n* Add support for keyboard navigation in the search dropdown\\n\\n! 1.3.6\\n\\n!! Improvements\\n\\n* Improve the style of tabs\\n* New animation for drop-downs\\n* Use a lighter page background colour in the beige palette\\n\\n!! Fixes\\n\\n* Fix the default ctrl+shift+F shortcut for focusing the search input\\n\\n! 1.3.5\\n\\n!! Features\\n\\n* Add an option to reveal tiddler controls on mouseover\\n\\n! 1.3.4\\n\\n!! Improvements\\n\\n* Add a keyboard shortcut (alt+shift+s) to toggle Notebook sidebar\\n* Add missing colours to tiddler editor fields in the dark palette\\n\\n!! Fixes\\n\\n* Fix the size of toolbar button labels when the $:/config/Toolbar/Text is set to yes\\n\\n! 1.3.3\\n\\n!! Improvements\\n\\n* Make the sidebar more generic by using the default sidebar sections\\n\\n! 1.3.2\\n\\n!! Improvements\\n\\n* Add colours for messages in the dark palette\\n* Add colours for notification in the dark palette\\n* Set colours for messages in the beige palette\\n\\n! 1.3.1\\n\\n!! Features\\n\\n* New font family settings distinct from the Vanilla theme\\n\\n!! Improvements\\n\\n* Use a slightly lighter colour as the search input background\\n* Improve contrast of sidebar buttons in the dark palette\\n\\n!! Fixes\\n\\n* Fix tiddler control button colours in all three palettes\\n* Fix tab colours in palette-dark\\n\\n! 1.3.0\\n\\n!! Improvements\\n\\n* New dark colour palette\\n* Use a darker color for tiddler subtitles\\n* Add back the WebKit search cancel button in search inputs\\n\\n!! Fixes\\n\\n* Fix the z-index of the topbar for the zoomin story view\\n* Fix the font weight of tiddler titles in edit mode\\n\\n! 1.2.0\\n\\n!! Improvements\\n\\n* Better support for dark colour palettes\\n\\n!! Fixes\\n\\n* Fix rendering of overflowing/wrapping text in the sidebar\\n\\n! 1.1.0\\n\\n!! Features\\n\\n* New theme tweaks tab dedicated to Notebook in the control panel\\n* Inputs in the edit template are now styled consistently with other inputs\\n\\n!! Fixes\\n\\n* Fixes the position of sticky tiddler titles when the option is turned on\\n\"\n },\n \"$:/config/ShortcutInfo/notebook-focus-search\": {\n \"title\": \"$:/config/ShortcutInfo/notebook-focus-search\",\n \"text\": \"Focus on the topbar search field\"\n },\n \"$:/config/shortcuts/notebook-focus-search\": {\n \"title\": \"$:/config/shortcuts/notebook-focus-search\",\n \"text\": \"ctrl+shift+F\"\n },\n \"$:/config/Search/AutoFocus\": {\n \"title\": \"$:/config/Search/AutoFocus\",\n \"text\": \"false\"\n },\n \"$:/config/shortcuts/sidebar-search\": {\n \"title\": \"$:/config/shortcuts/sidebar-search\",\n \"text\": \"\"\n },\n \"$:/themes/nico/notebook/images/bars\": {\n \"title\": \"$:/themes/nico/notebook/images/bars\",\n \"created\": \"20200428212322206\",\n \"modified\": \"20201210210231235\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg class=\\\"bars\\\" height=\\\"21pt\\\" viewBox=\\\"0 0 42 42\\\" enable-background=\\\"new 0 0 32 22.5\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n \u003Cg class=\\\"svg-menu-toggle\\\" sketch:type=\\\"MSLayerGroup\\\">\\n \u003Crect class=\\\"bar\\\" x=\\\"8\\\" y=\\\"28\\\" width=\\\"26\\\" height=\\\"4\\\">\u003C/rect>\\n \u003Crect class=\\\"bar\\\" x=\\\"8\\\" y=\\\"19\\\" width=\\\"26\\\" height=\\\"4\\\">\u003C/rect>\\n \u003Crect class=\\\"bar\\\" x=\\\"8\\\" y=\\\"10\\\" width=\\\"26\\\" height=\\\"4\\\">\u003C/rect>\\n \u003C/g>\\n\u003C/svg>\\n\"\n },\n \"$:/themes/nico/notebook/images/caret-down\": {\n \"title\": \"$:/themes/nico/notebook/images/caret-down\",\n \"created\": \"20200429194348688\",\n \"modified\": \"20201210210230919\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"6pt\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\">\u003Cpath d=\\\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\\\"/>\u003C/svg>\\n\"\n },\n \"$:/themes/nico/notebook/images/caret-right\": {\n \"title\": \"$:/themes/nico/notebook/images/caret-right\",\n \"created\": \"20200429194305719\",\n \"modified\": \"20201210210230909\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"4pt\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 192 512\\\">\u003Cpath d=\\\"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\\\"/>\u003C/svg>\\n\"\n },\n \"$:/themes/nico/notebook/images/color-switch\": {\n \"title\": \"$:/themes/nico/notebook/images/color-switch\",\n \"created\": \"20201210170859810\",\n \"creator\": \"nico\",\n \"modified\": \"20201210205606403\",\n \"modifier\": \"nico\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"20px\\\" height=\\\"20px\\\" viewBox=\\\"0 0 16 16\\\" class=\\\"bi bi-circle-half\\\" fill=\\\"currentColor\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n \u003Cpath fill-rule=\\\"evenodd\\\" d=\\\"M8 15V1a7 7 0 1 1 0 14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z\\\"/>\\n\u003C/svg\\n\"\n },\n \"$:/themes/nico/notebook/metrics/bodyfontsize\": {\n \"title\": \"$:/themes/nico/notebook/metrics/bodyfontsize\",\n \"created\": \"20200428203454207\",\n \"modified\": \"20201210205606363\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"15px\\n\"\n },\n \"$:/themes/nico/notebook/metrics/bodylineheight\": {\n \"title\": \"$:/themes/nico/notebook/metrics/bodylineheight\",\n \"created\": \"20200428203454207\",\n \"modified\": \"20201210205606363\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"22px\"\n },\n \"$:/themes/nico/notebook/metrics/sidebar-width\": {\n \"title\": \"$:/themes/nico/notebook/metrics/sidebar-width\",\n \"created\": \"20200429144554294\",\n \"modified\": \"20201210210231246\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"350px\\n\"\n },\n \"$:/themes/nico/notebook/metrics/story-width\": {\n \"title\": \"$:/themes/nico/notebook/metrics/story-width\",\n \"created\": \"20210123210054185\",\n \"modified\": \"20210123211911688\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"800px\\n\"\n },\n \"$:/themes/nico/notebook/metrics/topbar-height\": {\n \"title\": \"$:/themes/nico/notebook/metrics/topbar-height\",\n \"created\": \"20200428203454207\",\n \"modified\": \"20201210205606363\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"52px\\n\"\n },\n \"$:/themes/nico/notebook/options/stickytitles\": {\n \"title\": \"$:/themes/nico/notebook/options/stickytitles\",\n \"text\": \"no\"\n },\n \"$:/themes/nico/notebook/options/codewrapping\": {\n \"title\": \"$:/themes/nico/notebook/options/codewrapping\",\n \"text\": \"pre-wrap\"\n },\n \"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\": {\n \"title\": \"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\",\n \"text\": \"no\"\n },\n \"$:/core/ui/PageTemplate/sidebar\": {\n \"title\": \"$:/core/ui/PageTemplate/sidebar\",\n \"created\": \"20200430072116835\",\n \"modified\": \"20201217174129501\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\whitespace trim\\n\\\\define config-title()\\n$:/config/SideBarSegments/Visibility/$(listItem)$\\n\\\\end\\n\\nOverwritten by $:/themes/nico/notebook so that the default sidebar does not get rendered.\\n\"\n },\n \"$:/themes/tiddlywiki/vanilla/themetweaks\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/themetweaks\",\n \"caption\": \"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\n \"created\": \"20201217163834291\",\n \"modified\": \"20201217163914434\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Overwritten by $:/themes/nico/notebook so that the Vanilla theme tweaks do not appear in the control panel. \"\n },\n \"$:/themes/nico/notebook/palettes/palette-beige\": {\n \"title\": \"$:/themes/nico/notebook/palettes/palette-beige\",\n \"text\": \"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #c63636\\ndownload-background: #66cccc\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: #ddd\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: #da8548\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #3F3B3B\\nmessage-background: #e6f5e8\\nmessage-border: #2b5532\\nmessage-foreground: #2b5532\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #f5f5ee\\npre-background: #f6f6f6\\npre-border: #cccccc\\nprimary: #7f4bca\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: #a6a69c\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: \u003C\u003Ccolour sidebar-button-foreground>>\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #ffffff\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour primary>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour tab-foreground>>\\nsite-title-foreground: #353748\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #eeeeee\\ntab-border-selected: #cccccc\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour foreground>>\\ntab-foreground: #888888\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ffeedd\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #dbdbc7;\\ntiddler-controls-foreground-hover: #888888;\\ntiddler-controls-foreground-selected: #888888;\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: rgba(0,0,0,.2)\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #aaaaaa\\ntiddler-title-foreground: #333\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"description\": \"A beige colour palette for Notebook\",\n \"name\": \"Notebook Beige\",\n \"tags\": \"$:/tags/Palette $:/tags/notebook/Palette\"\n },\n \"$:/themes/nico/notebook/palettes/palette-dark\": {\n \"title\": \"$:/themes/nico/notebook/palettes/palette-dark\",\n \"text\": \"alert-background: #643b43\\nalert-border: #3f181f\\nalert-highlight: #881122\\nalert-muted-foreground: #bc8b94\\nbackground: #383e49\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-border:\\nbutton-foreground:\\ncode-background: #2c323b\\ncode-border: #111\\ncode-foreground: #dd1144\\ndirty-indicator: #c63636\\ndownload-background: #98be65\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: #111\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: #da8548\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #61afef\\nexternal-link-foreground: #c678dd\\nforeground: #c8ced8\\nmessage-background: #2c323e\\nmessage-border: #111\\nmessage-foreground: #d5e2f1\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #3a5e39\\nnotification-border: #192c19\\npage-background: #262b33\\npre-background: \u003C\u003Ccolour page-background>>\\npre-border: \u003C\u003Ccolour tiddler-border>>\\nprimary: #bf93ff\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: #5e646f\\nsidebar-controls-foreground-hover: #cad2e5\\nsidebar-controls-foreground: \u003C\u003Ccolour sidebar-button-foreground>>\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #cad2e5\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: \u003C\u003Ccolour tab-background-selected>>\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour primary>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour tab-foreground>>\\nsite-title-foreground: \u003C\u003Ccolour foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: \u003C\u003Ccolour background>>\\ntab-background: \u003C\u003Ccolour page-background>>\\ntab-border-selected: \u003C\u003Ccolour foreground>>\\ntab-border: #cad2e5\\ntab-divider: #cad2e5\\ntab-foreground-selected: #ecf2ff\\ntab-foreground: #cad2e5\\ntable-border: #aaaaaa\\ntable-footer-background: #a8a8a8\\ntable-header-background: #262b33\\ntag-background: #fcb671\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #111\\ntiddler-controls-foreground-hover: #cad2e5\\ntiddler-controls-foreground-selected: #cad2e5\\ntiddler-controls-foreground: #5e646f\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: rgba(255, 255, 255, 0.3)\\ntiddler-editor-fields-even: \u003C\u003Ccolour background>>\\ntiddler-editor-fields-odd: #2c323b\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #aaaaaa\\ntiddler-title-foreground: \u003C\u003Ccolour foreground>>\\ntoolbar-cancel-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-done-button:\\ntoolbar-edit-button:\\ntoolbar-info-button:\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"description\": \"A dark colour palette for Notebook\",\n \"name\": \"Notebook Dark\",\n \"tags\": \"$:/tags/Palette $:/tags/notebook/Palette\"\n },\n \"$:/themes/nico/notebook/palettes/palette-grey\": {\n \"title\": \"$:/themes/nico/notebook/palettes/palette-grey\",\n \"text\": \"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #c63636\\ndownload-background: #66cccc\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: #ddd\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: #da8548\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #283c46\\nmessage-background: #ecf2ff\\nmessage-border: #cfd6e6\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #f4f4f4\\npre-background: #f6f6f6\\npre-border: #cccccc\\nprimary: #127edd\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: #a6a69c\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: \u003C\u003Ccolour sidebar-button-foreground>>\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #ffffff\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour primary>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour tab-foreground>>\\nsite-title-foreground: #353748\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #eeeeee\\ntab-border-selected: #cccccc\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour foreground>>\\ntab-foreground: #888888\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ffeedd\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #ddd\\ntiddler-controls-foreground-hover: #888888;\\ntiddler-controls-foreground-selected: #888888;\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: rgba(0,0,0,.2)\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #aaaaaa\\ntiddler-title-foreground: #333\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"description\": \"A grey color palette for Notebook\",\n \"name\": \"Notebook Grey\",\n \"tags\": \"$:/tags/Palette $:/tags/notebook/Palette\"\n },\n \"$:/themes/nico/notebook/settings/codefontfamily\": {\n \"title\": \"$:/themes/nico/notebook/settings/codefontfamily\",\n \"created\": \"20210101213404232\",\n \"modified\": \"20210101214210227\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\"Fira Mono\\\",\\\"Liberation Mono\\\",Menlo,Courier,monospace\\n\"\n },\n \"$:/themes/nico/notebook/settings/fontfamily\": {\n \"title\": \"$:/themes/nico/notebook/settings/fontfamily\",\n \"created\": \"20210101213404232\",\n \"modified\": \"20210101213411800\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\"Segoe UI\\\",Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\"\\n\"\n },\n \"$:/themes/nico/notebook/shortcuts/notebook-focus-search\": {\n \"title\": \"$:/themes/nico/notebook/shortcuts/notebook-focus-search\",\n \"created\": \"20201210122048919\",\n \"key\": \"((notebook-focus-search))\",\n \"modified\": \"20210115130024907\",\n \"tags\": \"$:/tags/KeyboardShortcut\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\\\".nc-topbar input\\\"/>\\n\"\n },\n \"$:/themes/nico/notebook/shortcuts/toggle-sidebar\": {\n \"title\": \"$:/themes/nico/notebook/shortcuts/toggle-sidebar\",\n \"created\": \"20210115130000707\",\n \"key\": \"((toggle-sidebar))\",\n \"modified\": \"20210115130021883\",\n \"tags\": \"$:/tags/KeyboardShortcut\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$list\\n filter=\\\"[[$:/state/notebook-sidebar]is[missing]] [{$:/state/notebook-sidebar}removeprefix[yes]]\\\"\\n emptyMessage=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/state/notebook-sidebar\\\" text=\\\"yes\\\"/>\\\"\\\"\\\"\\n>\\n \u003C$action-setfield $tiddler=\\\"$:/state/notebook-sidebar\\\" text=\\\"no\\\"/>\\n\u003C/$list>\\n\"\n },\n \"$:/themes/nico/notebook/stickytitles\": {\n \"title\": \"$:/themes/nico/notebook/stickytitles\",\n \"created\": \"20201217172915960\",\n \"modified\": \"20201217180034682\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"text\": \"\u003C$reveal state=\\\"$:/themes/nico/notebook/options/stickytitles\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n\\n.tc-tiddler-title {\\n position: -webkit-sticky;\\n position: -moz-sticky;\\n position: -o-sticky;\\n position: -ms-sticky;\\n position: sticky;\\n top: {{$:/themes/nico/notebook/metrics/topbar-height}};\\n background: \u003C\u003Ccolour tiddler-background>>;\\n z-index: 500;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-tiddler-title {\\n top: 0;\\n }\\n}\\n\\n\u003C$list filter=\\\"[range[100]]\\\">\\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`\u003C$text text=\u003C\u003CcurrentTiddler>>/>`) {\\nz-index: `\u003C$text text={{{ [[200]subtract\u003CcurrentTiddler>] }}}/>`;\\n}\\n`\\n\u003C/$list>\\n\u003C/$reveal>\\n\"\n },\n \"$:/themes/nico/notebook/tags/Sidebar\": {\n \"title\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"created\": \"20200429164516951\",\n \"list\": \"$:/themes/nico/notebook/ui/Buttons/menu $:/themes/nico/notebook/ui/Sidebar/Headings $:/themes/nico/notebook/ui/Sidebar/Search $:/themes/nico/notebook/Sidebar/Sections\",\n \"modified\": \"20201210205606504\",\n \"type\": \"text/vnd.tiddlywiki\"\n },\n \"$:/themes/nico/notebook/tags/SidebarSection\": {\n \"title\": \"$:/themes/nico/notebook/tags/SidebarSection\",\n \"created\": \"20200429201017275\",\n \"list\": \"$:/themes/nico/notebook/ui/Sidebar/Open $:/themes/nico/notebook/ui/Sidebar/Recent $:/themes/nico/notebook/ui/Sidebar/Tools $:/themes/nico/notebook/ui/Sidebar/More\",\n \"modified\": \"20201210215658901\",\n \"type\": \"text/vnd.tiddlywiki\"\n },\n \"$:/themes/nico/notebook/ui/Bottombar\": {\n \"title\": \"$:/themes/nico/notebook/ui/Bottombar\",\n \"created\": \"20200429113453340\",\n \"modified\": \"20201210210230886\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal state=\\\"$:/state/notebook-bottombar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"yes\\\" retain=\\\"yes\\\" animate=\\\"yes\\\">\\n \u003Cdiv class=\\\"nc-bar nc-bottombar\\\">\\n \u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"block\\\"/>\\n \u003C/$reveal>\\n \u003C/$list>\\n \u003Cdiv class=\\\"left\\\">\\n {{$:/themes/nico/notebook/ui/Buttons/menu}}\\n \u003C/div>\\n \u003Cdiv class=\\\"right\\\">\\n {{$:/core/ui/SideBarSegments/page-controls}}\\n \u003C/div>\\n \u003C/div>\\n\u003C/$reveal>\\n\\n\"\n },\n \"$:/themes/nico/notebook/ui/Buttons/SwitchPalette\": {\n \"title\": \"$:/themes/nico/notebook/ui/Buttons/SwitchPalette\",\n \"created\": \"20201210171047824\",\n \"description\": \"Toggle between grey/beige colour palette\",\n \"modified\": \"20210118213335643\",\n \"tags\": \"$:/tags/PageControls\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cspan class=\\\"desktop-only\\\">\\n \u003C$vars\\n palettes=\\\"[all[tiddlers+shadows]tag[$:/tags/notebook/Palette]]\\\"\\n popupTiddler=\u003C\u003Cqualify \\\"$:/state/notebook/palette-dropdown\\\">>\\n >\\n \u003C$button\\n popup=\u003C\u003CpopupTiddler>>\\n tooltip=\\\"Switch colours\\\"\\n aria-label=\\\"Switch colours\\\"\\n class=\u003C\u003Ctv-config-toolbar-class>>\\n >\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n\\t{{$:/themes/nico/notebook/images/color-switch}}\\n \u003C/$list>\\n\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\\t\u003Cspan class=\\\"tc-btn-text\\\">Switch colours\u003C/span>\\n \u003C/$list>\\n\\n \u003C$reveal state=\u003C\u003CpopupTiddler>> type=\\\"popup\\\" position=\\\"belowleft\\\" class=\\\"tc-drop-down\\\">\\n\\t\u003C$list filter=\u003C\u003Cpalettes>>>\\n\\t \u003C$button class=\\\"tc-btn-invisible\\\">\\n\\t {{!!name}}\\n\\t \u003C$action-setfield $tiddler=\\\"$:/palette\\\" text={{!!title}}/>\\n\\t \u003C/$button>\\n\\t\u003C/$list>\\n \u003C/$reveal>\\n\\n \u003C/$button>\\n \u003C/$vars>\\n\u003C/span>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Buttons/menu\": {\n \"title\": \"$:/themes/nico/notebook/ui/Buttons/menu\",\n \"created\": \"20200429115248943\",\n \"modified\": \"20210124211756417\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal state=\\\"$:/state/notebook-sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"no\\\" retain=\\\"yes\\\" animate=\\\"no\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar\\\" setTo=\\\"no\\\" tooltip=\\\"Toggle menu\\\" class=\\\"tc-btn-invisible sidebar-toggle open\\\">\\n {{$:/themes/nico/notebook/images/bars}}\\n \u003C/$button>\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"nomatch\\\" state=\\\"$:/state/notebook-sidebar\\\" text=\\\"yes\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar\\\" setTo=\\\"yes\\\" tooltip=\\\"Toggle menu\\\" class=\\\"tc-btn-invisible sidebar-toggle\\\">\\n {{$:/themes/nico/notebook/images/bars}}\\n \u003C/$button>\\n\u003C/$reveal>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Search\": {\n \"title\": \"$:/themes/nico/notebook/ui/Search\",\n \"created\": \"20200429191943257\",\n \"modified\": \"20210126170723413\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define advanced-search-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/input\\\" text={{$:/temp/notebook-search}}/>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/refresh\\\" text=\\\"yes\\\"/>\\n\u003C$action-navigate $to=\\\"$:/AdvancedSearch\\\"/>\\n\\\\end\\n\\n\\\\define input-accept-actions()\\n\u003C$list filter=\\\"[\u003C__tiddler__>get[text]!is[missing]] ~[\u003C__tiddler__>get[text]is[shadow]]\\\">\\n \u003C$action-navigate $to={{{ [\u003C__tiddler__>get[text]] }}}/>\\n \u003C$action-deletetiddler $filter=\\\"[[$:/temp/search]] [\u003CsearchTiddler>] [\u003CsearchListState>]\\\"/>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define cancel-search-actions()\\n\u003C$list filter=\\\"[\u003CsearchTiddler>get[text]!match{$:/temp/search}]\\\" emptyMessage=\\\"\\\"\\\"\u003C$action-deletetiddler $filter=\\\"[[$:/temp/search]] [\u003CsearchTiddler>] [\u003CsearchListState>]\\\"/>\\\"\\\"\\\">\\n \u003C$action-setfield $tiddler=\\\"$:/temp/search\\\" text={{{ [\u003CsearchTiddler>get[text]] }}}/>\\n \u003C$action-setfield $tiddler=\\\"$:/temp/search/refresh\\\" text=\\\"yes\\\"/>\u003C/$list>\\n\\\\end\\n\\n\u003C$vars editTiddler=\\\"$:/temp/search\\\"\\n searchTiddler=\\\"$:/temp/search/input\\\"\\n searchListState=\u003C\u003Cqualify \\\"$:/state/search-list/selected-item\\\">>>\\n \u003C$macrocall $name=\\\"keyboard-driven-input\\\"\\n\\t tiddler=\u003C\u003CeditTiddler>>\\n\\t storeTitle=\u003C\u003CsearchTiddler>>\\n\\t selectionStateTitle=\u003C\u003CsearchListState>>\\n\\t refreshTitle=\\\"$:/temp/search/refresh\\\"\\n\\t type=\\\"search\\\"\\n\\t tag=\\\"input\\\"\\n\\t focus={{$:/config/Search/AutoFocus}}\\n\\t focusPopup=\\\"$:/state/popup/notebook-search\\\"\\n\\t class=\\\"tc-popup-handle\\\"\\n\\t filterMinLength={{$:/config/Search/MinLength}}\\n\\t placeholder=\\\"Search...\\\"\\n\\t inputAcceptActions=\u003C\u003Cinput-accept-actions>>\\n\\t inputCancelActions=\u003C\u003Ccancel-search-actions>>\\n\\t cancelPopups=\\\"yes\\\"\\n\\t configTiddlerFilter=\\\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\\\"\\n\\t />\\n \u003C$button\\n tooltip={{$:/language/Buttons/AdvancedSearch/Hint}}\\n aria-label={{$:/language/Buttons/AdvancedSearch/Caption}}\\n class=\\\"tc-btn-invisible tc-page-controls\\\"\\n >\\n {{$:/core/images/advanced-search-button}}\\n \u003C\u003Cadvanced-search-actions>>\\n \u003C/$button>\\n \u003C$reveal tag=\\\"div\\\" class=\\\"tc-block-dropdown-wrapper\\\" state=\\\"$:/state/popup/notebook-search\\\" type=\\\"nomatch\\\" text=\\\"\\\" default=\\\"\\\">\\n \u003C$list filter=\\\"[\u003CsearchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]\\\" emptyMessage=\\\"\\\" variable=\\\"listItem\\\">\\n \u003Cdiv class=\\\"tc-block-dropdown tc-search-drop-down\\\">\\n \u003C$tiddler tiddler=\u003C\u003CconfigTiddler>>>\\n {{$:/themes/nico/notebook/ui/Sidebar/SearchResults}}\\n \u003C/$tiddler>\\n \u003C/div>\\n \u003C/$list>\\n \u003C/$reveal>\\n\u003C/$vars>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/Headings\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/Headings\",\n \"created\": \"20200429160014174\",\n \"modified\": \"20201210210231267\",\n \"tags\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cdiv class=\\\"segment\\\">\\n \u003Cdiv class=\\\"content\\\">\\n \u003Ch1 class=\\\"tc-site-title\\\">\\n {{$:/SiteTitle}}\\n \u003C/h1>\\n \u003Cdiv class=\\\"tc-site-subtitle\\\">\\n {{$:/SiteSubtitle}}\\n \u003C/div>\\n \u003C/div>\\n\u003C/div>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/Search\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/Search\",\n \"created\": \"20200429191943257\",\n \"modified\": \"20210124220152702\",\n \"tags\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cdiv class=\\\"mobile-only\\\">\\n \u003Cdiv class=\\\"segment\\\">\\n \u003Cdiv class=\\\"content search\\\">\\n {{$:/themes/nico/notebook/ui/Search}}\\n \u003C/div>\\n \u003C/div>\\n\u003C/div>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/SearchResults\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/SearchResults\",\n \"created\": \"20200429191943257\",\n \"modified\": \"20210126164631418\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define searchResultList()\\n \u003Csmall>{{$:/language/Search/Matches/Title}}\u003C/small>\\n\\n \u003C$list filter=\\\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\\\">\\n \u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-primaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n \u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n \u003C/span>\\n \u003C/$list>\\n\\n \u003Csmall>{{$:/language/Search/Matches/All}}\u003C/small>\\n\\n \u003C$list filter=\\\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\\\">\\n \u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-secondaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n \u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n \u003C/span>\\n \u003C/$list>\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-search-results\\\">\\n \u003C\u003CsearchResultList>>\\n\u003C/div>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/SectionTemplate\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/SectionTemplate\",\n \"created\": \"20200429161226897\",\n \"modified\": \"20210202213859460\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define sidebarHeading()\\n\u003C$vars tv-wikilinks=\\\"no\\\">\\n \u003C$transclude field=\\\"caption\\\">\\n \u003C$view field=\\\"title\\\"/>\\n \u003C/$transclude>\\n\u003C/$vars>\\n\\\\end\\n\\n\u003C$reveal state=\\\"$:/state/notebook-sidebar-section\\\" type=\\\"match\\\" text=\u003C\u003CcurrentTiddler>> default=\\\"no\\\" animate=\\\"no\\\">\\n \u003Cdiv class=\\\"segment section open\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar-section\\\" setTo=\\\"\\\" class=\\\"tc-btn-invisible label\\\">\\n \u003C\u003CsidebarHeading>>\\n \u003Cspan class=\\\"caret\\\">{{$:/themes/nico/notebook/images/caret-down}}\u003C/span>\\n \u003C/$button>\\n \u003Cdiv class=\\\"content\\\">\\n \u003C$transclude $tiddler=\u003C\u003CcurrentTiddler>> mode=\\\"block\\\"/>\\n \u003C/div>\\n \u003C/div>\\n\u003C/$reveal>\\n\u003C$reveal state=\\\"$:/state/notebook-sidebar-section\\\" type=\\\"nomatch\\\" text=\u003C\u003CcurrentTiddler>> default=\\\"yes\\\" animate=\\\"no\\\">\\n \u003Cdiv class=\\\"segment section\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar-section\\\" setTo=\u003C\u003CcurrentTiddler>> class=\\\"tc-btn-invisible label\\\">\\n \u003C\u003CsidebarHeading>>\\n \u003Cspan class=\\\"caret\\\">{{$:/themes/nico/notebook/images/caret-right}}\u003C/span>\\n \u003C/$button>\\n \u003C/div>\\n\u003C/$reveal>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/Sections\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/Sections\",\n \"created\": \"20200429163239707\",\n \"modified\": \"20210112213620486\",\n \"tags\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$list filter=\\\"[all[shadows+tiddlers]!has[draft.of]tag[$:/tags/SideBar]]\\\">\\n {{||$:/themes/nico/notebook/ui/Sidebar/SectionTemplate}}\\n\u003C/$list>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar\",\n \"created\": \"20200428201218885\",\n \"modified\": \"20210112213605486\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\whitespace trim\\n\\\\define config-title()\\n$:/config/SideBarSegments/Visibility/$(listItem)$\\n\\\\end\\n\\n\u003C$reveal state=\\\"$:/state/notebook-sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"no\\\" retain=\\\"yes\\\" animate=\\\"no\\\">\\n \u003C$scrollable fallthrough=\\\"no\\\">\\n \u003Cdiv class=\\\"nc-sidebar\\\">\\n \u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/themes/nico/notebook/tags/Sidebar]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"inline\\\"/>\\n \u003C/$reveal>\\n \u003C/$list>\\n \u003C/div>\\n \u003C/$scrollable>\\n\u003C/$reveal>\\n\\n\"\n },\n \"$:/themes/nico/notebook/ui/Topbar\": {\n \"title\": \"$:/themes/nico/notebook/ui/Topbar\",\n \"created\": \"20200428203101797\",\n \"modified\": \"20210124213834458\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal state=\\\"$:/state/notebook-topbar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"yes\\\" retain=\\\"yes\\\" animate=\\\"yes\\\">\\n \u003Cdiv class=\\\"nc-topbar-wrapper\\\">\\n \u003Cdiv class=\\\"nc-bar nc-topbar tc-adjust-top-of-scroll\\\">\\n \u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"block\\\"/>\\n \u003C/$reveal>\\n \u003C/$list>\\n \u003Cdiv class=\\\"left\\\">\\n\\t{{$:/themes/nico/notebook/ui/Buttons/menu}}\\n {{$:/themes/nico/notebook/ui/Search}}\\n \u003C/div>\\n \u003Cdiv class=\\\"right\\\">\\n {{$:/core/ui/SideBarSegments/page-controls}}\\n \u003C/div>\\n \u003C/div>\\n \u003C/div>\\n\u003C/$reveal>\\n\\n\"\n }\n }\n}","bag":"default","revision":"0","version":"1.4.1","type":"application/json","title":"$:/themes/nico/notebook","source":"https://github.com/NicolasPetton/Notebook","plugin-type":"theme","name":"Notebook theme","list":"LICENSE changelog","description":"A clean, uncluttered TiddlyWiki theme","dependents":"$:/themes/tiddlywiki/vanilla $:/plugins/nico/notebook-mobile","core-version":">=5.1.22","author":"NicolasPetton"},
{"created":"20200429144554294","title":"$:/themes/nico/notebook/metrics/sidebar-width","modified":"20230423163514560","tags":"","type":"text/vnd.tiddlywiki","text":"300px"},
@@ -880,7 +878,7 @@ Error message and password prompt
{"created":"20230423163505037","title":"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint","text":"600px","modified":"20230423164234376"},
{"created":"20230423164459179","title":"$:/view","text":"zoomin","modified":"20230427151401818"},
{"created":"20230426064525527","text":"\n\u003C!-- aframe v1.4.0 -->\n\u003Cscript>\n/*! For license information please see aframe.min.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AFRAME=t():e.AFRAME=t()}(self,(()=>(()=>{var e={651:()=>{!function(){\"use strict\";var e=function(e,t){var n=function(e){for(var t=0,n=e.length;t\u003Cn;t++)i(e[t])},i=function(e){var t=e.target,n=e.attributeName,i=e.oldValue;t.attributeChangedCallback(n,i,t.getAttribute(n))};return function(r,s){var o=r.constructor.observedAttributes;return o&&e(s).then((function(){new t(n).observe(r,{attributes:!0,attributeOldValue:!0,attributeFilter:o});for(var e=0,s=o.length;e\u003Cs;e++)r.hasAttribute(o[e])&&i({target:r,attributeName:o[e],oldValue:null})})),r}};function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n\u003Ct;n++)i[n]=e[n];return i}function n(e,n){var i=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if(\"string\"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===i&&e.constructor&&(i=e.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(e):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&\"number\"==typeof e.length){i&&(e=i);var r=0,s=function(){};return{s,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:s}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,a=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==i.return||i.return()}finally{if(l)throw o}}}}var i=!0,r=!1,s=\"querySelectorAll\",o=\"querySelectorAll\",a=self,l=a.document,c=a.Element,h=a.MutationObserver,u=a.Set,d=a.WeakMap,p=function(e){return o in e},A=[].filter,f=function(e){var t=new d,a=function(n,i){var r;if(i)for(var s,o=function(e){return e.matches||e.webkitMatchesSelector||e.msMatchesSelector}(n),a=0,l=m.length;a\u003Cl;a++)o.call(n,s=m[a])&&(t.has(n)||t.set(n,new u),(r=t.get(n)).has(s)||(r.add(s),e.handle(n,i,s)));else t.has(n)&&(r=t.get(n),t.delete(n),r.forEach((function(t){e.handle(n,i,t)})))},f=function(e){for(var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=0,i=e.length;n\u003Ci;n++)a(e[n],t)},m=e.query,g=e.root||l,v=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:MutationObserver,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[\"*\"],l=function t(r,o,a,l,c,h){var u,d=n(r);try{for(d.s();!(u=d.n()).done;){var p=u.value;(h||s in p)&&(c?a.has(p)||(a.add(p),l.delete(p),e(p,c)):l.has(p)||(l.add(p),a.delete(p),e(p,c)),h||t(p[s](o),o,a,l,c,i))}}catch(e){d.e(e)}finally{d.f()}},c=new o((function(e){if(a.length){var t,s=a.join(\",\"),o=new Set,c=new Set,h=n(e);try{for(h.s();!(t=h.n()).done;){var u=t.value,d=u.addedNodes,p=u.removedNodes;l(p,s,o,c,r,r),l(d,s,o,c,i,r)}}catch(e){h.e(e)}finally{h.f()}}})),h=c.observe;return(c.observe=function(e){return h.call(c,e,{subtree:i,childList:i})})(t),c}(a,g,h,m),y=c.prototype.attachShadow;return y&&(c.prototype.attachShadow=function(e){var t=y.call(this,e);return v.observe(t),t}),m.length&&f(g[o](m)),{drop:function(e){for(var n=0,i=e.length;n\u003Ci;n++)t.delete(e[n])},flush:function(){for(var e=v.takeRecords(),t=0,n=e.length;t\u003Cn;t++)f(A.call(e[t].removedNodes,p),!1),f(A.call(e[t].addedNodes,p),!0)},observer:v,parse:f}},m=self,g=m.document,v=m.Map,y=m.MutationObserver,E=m.Object,b=m.Set,x=m.WeakMap,w=m.Element,C=m.HTMLElement,M=m.Node,_=m.Error,I=m.TypeError,B=m.Reflect,S=E.defineProperty,T=E.keys,L=E.getOwnPropertyNames,D=E.setPrototypeOf,R=!self.customElements,P=function(e){for(var t=T(e),n=[],i=t.length,r=0;r\u003Ci;r++)n[r]=e[t[r]],delete e[t[r]];return function(){for(var r=0;r\u003Ci;r++)e[t[r]]=n[r]}};if(R){var k=function(){var e=this.constructor;if(!O.has(e))throw new I(\"Illegal constructor\");var t=O.get(e);if(H)return W(H,t);var n=F.call(g,t);return W(D(n,e.prototype),t)},F=g.createElement,O=new v,Q=new v,U=new v,N=new v,G=[],z=f({query:G,handle:function(e,t,n){var i=U.get(n);if(t&&!i.isPrototypeOf(e)){var r=P(e);H=D(e,i);try{new i.constructor}finally{H=null,r()}}var s=\"\".concat(t?\"\":\"dis\",\"connectedCallback\");s in i&&e[s]()}}).parse,H=null,V=function(e){if(!Q.has(e)){var t,n=new Promise((function(e){t=e}));Q.set(e,{$:n,_:t})}return Q.get(e).$},W=e(V,y);S(self,\"customElements\",{configurable:!0,value:{define:function(e,t){if(N.has(e))throw new _('the name \"'.concat(e,'\" has already been used with this registry'));O.set(t,e),U.set(e,t.prototype),N.set(e,t),G.push(e),V(e).then((function(){z(g.querySelectorAll(e))})),Q.get(e)._(t)},get:function(e){return N.get(e)},whenDefined:V}}),S(k.prototype=C.prototype,\"constructor\",{value:k}),S(self,\"HTMLElement\",{configurable:!0,value:k}),S(g,\"createElement\",{configurable:!0,value:function(e,t){var n=t&&t.is,i=n?N.get(n):N.get(e);return i?new i:F.call(g,e)}}),\"isConnected\"in M.prototype||S(M.prototype,\"isConnected\",{configurable:!0,get:function(){return!(this.ownerDocument.compareDocumentPosition(this)&this.DOCUMENT_POSITION_DISCONNECTED)}})}else if(R=!self.customElements.get(\"extends-li\"))try{var j=function e(){return self.Reflect.construct(HTMLLIElement,[],e)};j.prototype=HTMLLIElement.prototype;var q=\"extends-li\";self.customElements.define(\"extends-li\",j,{extends:\"li\"}),R=g.createElement(\"li\",{is:q}).outerHTML.indexOf(q)\u003C0;var Y=self.customElements,X=Y.get,J=Y.whenDefined;S(self.customElements,\"whenDefined\",{configurable:!0,value:function(e){var t=this;return J.call(this,e).then((function(n){return n||X.call(t,e)}))}})}catch(e){}if(R){var K=function(e){var t=se.get(e);Ae(t.querySelectorAll(this),e.isConnected)},Z=self.customElements,$=g.createElement,ee=Z.define,te=Z.get,ne=Z.upgrade,ie=B||{construct:function(e){return e.call(this)}},re=ie.construct,se=new x,oe=new b,ae=new v,le=new v,ce=new v,he=new v,ue=[],de=[],pe=function(e){return he.get(e)||te.call(Z,e)},Ae=f({query:de,handle:function(e,t,n){var i=ce.get(n);if(t&&!i.isPrototypeOf(e)){var r=P(e);ye=D(e,i);try{new i.constructor}finally{ye=null,r()}}var s=\"\".concat(t?\"\":\"dis\",\"connectedCallback\");s in i&&e[s]()}}).parse,fe=f({query:ue,handle:function(e,t){se.has(e)&&(t?oe.add(e):oe.delete(e),de.length&&K.call(de,e))}}).parse,me=w.prototype.attachShadow;me&&(w.prototype.attachShadow=function(e){var t=me.call(this,e);return se.set(this,t),t});var ge=function(e){if(!le.has(e)){var t,n=new Promise((function(e){t=e}));le.set(e,{$:n,_:t})}return le.get(e).$},ve=e(ge,y),ye=null;L(self).filter((function(e){return/^HTML.*Element$/.test(e)})).forEach((function(e){var t=self[e];function n(){var e=this.constructor;if(!ae.has(e))throw new I(\"Illegal constructor\");var n=ae.get(e),i=n.is,r=n.tag;if(i){if(ye)return ve(ye,i);var s=$.call(g,r);return s.setAttribute(\"is\",i),ve(D(s,e.prototype),i)}return re.call(this,t,[],e)}S(n.prototype=t.prototype,\"constructor\",{value:n}),S(self,e,{value:n})})),S(g,\"createElement\",{configurable:!0,value:function(e,t){var n=t&&t.is;if(n){var i=he.get(n);if(i&&ae.get(i).tag===e)return new i}var r=$.call(g,e);return n&&r.setAttribute(\"is\",n),r}}),S(Z,\"get\",{configurable:!0,value:pe}),S(Z,\"whenDefined\",{configurable:!0,value:ge}),S(Z,\"upgrade\",{configurable:!0,value:function(e){var t=e.getAttribute(\"is\");if(t){var n=he.get(t);if(n)return void ve(D(e,n.prototype),t)}ne.call(Z,e)}}),S(Z,\"define\",{configurable:!0,value:function(e,t,n){if(pe(e))throw new _(\"'\".concat(e,\"' has already been defined as a custom element\"));var i,r=n&&n.extends;ae.set(t,r?{is:e,tag:r}:{is:\"\",tag:e}),r?(i=\"\".concat(r,'[is=\"').concat(e,'\"]'),ce.set(i,t.prototype),he.set(e,t),de.push(i)):(ee.apply(Z,arguments),ue.push(i=e)),ge(e).then((function(){r?(Ae(g.querySelectorAll(i)),oe.forEach(K,[i])):fe(g.querySelectorAll(i))})),le.get(e)._(t)}})}}()},6793:e=>{var t=Object.prototype.toString;e.exports=function(e){return e.BYTES_PER_ELEMENT&&\"[object ArrayBuffer]\"===t.call(e.buffer)||Array.isArray(e)}},3205:e=>{e.exports=function(e,t){return\"number\"==typeof e?e:\"number\"==typeof t?t:0}},6717:(e,t)=>{\"use strict\";t.byteLength=function(e){var t=l(e),n=t[0],i=t[1];return 3*(n+i)/4-i},t.toByteArray=function(e){var t,n,s=l(e),o=s[0],a=s[1],c=new r(function(e,t,n){return 3*(t+n)/4-n}(0,o,a)),h=0,u=a>0?o-4:o;for(n=0;n\u003Cu;n+=4)t=i[e.charCodeAt(n)]\u003C\u003C18|i[e.charCodeAt(n+1)]\u003C\u003C12|i[e.charCodeAt(n+2)]\u003C\u003C6|i[e.charCodeAt(n+3)],c[h++]=t>>16&255,c[h++]=t>>8&255,c[h++]=255&t;return 2===a&&(t=i[e.charCodeAt(n)]\u003C\u003C2|i[e.charCodeAt(n+1)]>>4,c[h++]=255&t),1===a&&(t=i[e.charCodeAt(n)]\u003C\u003C10|i[e.charCodeAt(n+1)]\u003C\u003C4|i[e.charCodeAt(n+2)]>>2,c[h++]=t>>8&255,c[h++]=255&t),c},t.fromByteArray=function(e){for(var t,i=e.length,r=i%3,s=[],o=16383,a=0,l=i-r;a\u003Cl;a+=o)s.push(c(e,a,a+o>l?l:a+o));return 1===r?(t=e[i-1],s.push(n[t>>2]+n[t\u003C\u003C4&63]+\"==\")):2===r&&(t=(e[i-2]\u003C\u003C8)+e[i-1],s.push(n[t>>10]+n[t>>4&63]+n[t\u003C\u003C2&63]+\"=\")),s.join(\"\")};for(var n=[],i=[],r=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,s=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",o=0,a=s.length;o\u003Ca;++o)n[o]=s[o],i[s.charCodeAt(o)]=o;function l(e){var t=e.length;if(t%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var n=e.indexOf(\"=\");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,i){for(var r,s,o=[],a=t;a\u003Ci;a+=3)r=(e[a]\u003C\u003C16&16711680)+(e[a+1]\u003C\u003C8&65280)+(255&e[a+2]),o.push(n[(s=r)>>18&63]+n[s>>12&63]+n[s>>6&63]+n[63&s]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},5286:(e,t,n)=>{var i=n(5851).lW;e.exports=function(e,t){if(i.isBuffer(e)&&i.isBuffer(t)){if(\"function\"==typeof e.equals)return e.equals(t);if(e.length!==t.length)return!1;for(var n=0;n\u003Ce.length;n++)if(e[n]!==t[n])return!1;return!0}}},5851:(e,t,n)=>{\"use strict\";const i=n(6717),r=n(9350),s=\"function\"==typeof Symbol&&\"function\"==typeof Symbol.for?Symbol.for(\"nodejs.util.inspect.custom\"):null;t.lW=l,t.h2=50;const o=2147483647;function a(e){if(e>o)throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,n){if(\"number\"==typeof e){if(\"string\"==typeof t)throw new TypeError('The \"string\" argument must be of type string. Received type number');return u(e)}return c(e,t,n)}function c(e,t,n){if(\"string\"==typeof e)return function(e,t){if(\"string\"==typeof t&&\"\"!==t||(t=\"utf8\"),!l.isEncoding(t))throw new TypeError(\"Unknown encoding: \"+t);const n=0|f(e,t);let i=a(n);const r=i.write(e,t);return r!==n&&(i=i.slice(0,r)),i}(e,t);if(ArrayBuffer.isView(e))return function(e){if(X(e,Uint8Array)){const t=new Uint8Array(e);return p(t.buffer,t.byteOffset,t.byteLength)}return d(e)}(e);if(null==e)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e);if(X(e,ArrayBuffer)||e&&X(e.buffer,ArrayBuffer))return p(e,t,n);if(\"undefined\"!=typeof SharedArrayBuffer&&(X(e,SharedArrayBuffer)||e&&X(e.buffer,SharedArrayBuffer)))return p(e,t,n);if(\"number\"==typeof e)throw new TypeError('The \"value\" argument must not be of type number. Received type number');const i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return l.from(i,t,n);const r=function(e){if(l.isBuffer(e)){const t=0|A(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}return void 0!==e.length?\"number\"!=typeof e.length||J(e.length)?a(0):d(e):\"Buffer\"===e.type&&Array.isArray(e.data)?d(e.data):void 0}(e);if(r)return r;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive](\"string\"),t,n);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e)}function h(e){if(\"number\"!=typeof e)throw new TypeError('\"size\" argument must be of type number');if(e\u003C0)throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}function u(e){return h(e),a(e\u003C0?0:0|A(e))}function d(e){const t=e.length\u003C0?0:0|A(e.length),n=a(t);for(let i=0;i\u003Ct;i+=1)n[i]=255&e[i];return n}function p(e,t,n){if(t\u003C0||e.byteLength\u003Ct)throw new RangeError('\"offset\" is outside of buffer bounds');if(e.byteLength\u003Ct+(n||0))throw new RangeError('\"length\" is outside of buffer bounds');let i;return i=void 0===t&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,t):new Uint8Array(e,t,n),Object.setPrototypeOf(i,l.prototype),i}function A(e){if(e>=o)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o.toString(16)+\" bytes\");return 0|e}function f(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||X(e,ArrayBuffer))return e.byteLength;if(\"string\"!=typeof e)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===n)return 0;let r=!1;for(;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return n;case\"utf8\":case\"utf-8\":return j(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*n;case\"hex\":return n>>>1;case\"base64\":return q(e).length;default:if(r)return i?-1:j(e).length;t=(\"\"+t).toLowerCase(),r=!0}}function m(e,t,n){let i=!1;if((void 0===t||t\u003C0)&&(t=0),t>this.length)return\"\";if((void 0===n||n>this.length)&&(n=this.length),n\u003C=0)return\"\";if((n>>>=0)\u003C=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return T(this,t,n);case\"utf8\":case\"utf-8\":return _(this,t,n);case\"ascii\":return B(this,t,n);case\"latin1\":case\"binary\":return S(this,t,n);case\"base64\":return M(this,t,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return L(this,t,n);default:if(i)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),i=!0}}function g(e,t,n){const i=e[t];e[t]=e[n],e[n]=i}function v(e,t,n,i,r){if(0===e.length)return-1;if(\"string\"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n\u003C-2147483648&&(n=-2147483648),J(n=+n)&&(n=r?0:e.length-1),n\u003C0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n\u003C0){if(!r)return-1;n=0}if(\"string\"==typeof t&&(t=l.from(t,i)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,i,r);if(\"number\"==typeof t)return t&=255,\"function\"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,i,r);throw new TypeError(\"val must be string, number or Buffer\")}function y(e,t,n,i,r){let s,o=1,a=e.length,l=t.length;if(void 0!==i&&(\"ucs2\"===(i=String(i).toLowerCase())||\"ucs-2\"===i||\"utf16le\"===i||\"utf-16le\"===i)){if(e.length\u003C2||t.length\u003C2)return-1;o=2,a/=2,l/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(r){let i=-1;for(s=n;s\u003Ca;s++)if(c(e,s)===c(t,-1===i?0:s-i)){if(-1===i&&(i=s),s-i+1===l)return i*o}else-1!==i&&(s-=s-i),i=-1}else for(n+l>a&&(n=a-l),s=n;s>=0;s--){let n=!0;for(let i=0;i\u003Cl;i++)if(c(e,s+i)!==c(t,i)){n=!1;break}if(n)return s}return-1}function E(e,t,n,i){n=Number(n)||0;const r=e.length-n;i?(i=Number(i))>r&&(i=r):i=r;const s=t.length;let o;for(i>s/2&&(i=s/2),o=0;o\u003Ci;++o){const i=parseInt(t.substr(2*o,2),16);if(J(i))return o;e[n+o]=i}return o}function b(e,t,n,i){return Y(j(t,e.length-n),e,n,i)}function x(e,t,n,i){return Y(function(e){const t=[];for(let n=0;n\u003Ce.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,i)}function w(e,t,n,i){return Y(q(t),e,n,i)}function C(e,t,n,i){return Y(function(e,t){let n,i,r;const s=[];for(let o=0;o\u003Ce.length&&!((t-=2)\u003C0);++o)n=e.charCodeAt(o),i=n>>8,r=n%256,s.push(r),s.push(i);return s}(t,e.length-n),e,n,i)}function M(e,t,n){return 0===t&&n===e.length?i.fromByteArray(e):i.fromByteArray(e.slice(t,n))}function _(e,t,n){n=Math.min(e.length,n);const i=[];let r=t;for(;r\u003Cn;){const t=e[r];let s=null,o=t>239?4:t>223?3:t>191?2:1;if(r+o\u003C=n){let n,i,a,l;switch(o){case 1:t\u003C128&&(s=t);break;case 2:n=e[r+1],128==(192&n)&&(l=(31&t)\u003C\u003C6|63&n,l>127&&(s=l));break;case 3:n=e[r+1],i=e[r+2],128==(192&n)&&128==(192&i)&&(l=(15&t)\u003C\u003C12|(63&n)\u003C\u003C6|63&i,l>2047&&(l\u003C55296||l>57343)&&(s=l));break;case 4:n=e[r+1],i=e[r+2],a=e[r+3],128==(192&n)&&128==(192&i)&&128==(192&a)&&(l=(15&t)\u003C\u003C18|(63&n)\u003C\u003C12|(63&i)\u003C\u003C6|63&a,l>65535&&l\u003C1114112&&(s=l))}}null===s?(s=65533,o=1):s>65535&&(s-=65536,i.push(s>>>10&1023|55296),s=56320|1023&s),i.push(s),r+=o}return function(e){const t=e.length;if(t\u003C=I)return String.fromCharCode.apply(String,e);let n=\"\",i=0;for(;i\u003Ct;)n+=String.fromCharCode.apply(String,e.slice(i,i+=I));return n}(i)}l.TYPED_ARRAY_SUPPORT=function(){try{const e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),l.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(l.prototype,\"parent\",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.buffer}}),Object.defineProperty(l.prototype,\"offset\",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.byteOffset}}),l.poolSize=8192,l.from=function(e,t,n){return c(e,t,n)},Object.setPrototypeOf(l.prototype,Uint8Array.prototype),Object.setPrototypeOf(l,Uint8Array),l.alloc=function(e,t,n){return function(e,t,n){return h(e),e\u003C=0?a(e):void 0!==t?\"string\"==typeof n?a(e).fill(t,n):a(e).fill(t):a(e)}(e,t,n)},l.allocUnsafe=function(e){return u(e)},l.allocUnsafeSlow=function(e){return u(e)},l.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==l.prototype},l.compare=function(e,t){if(X(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),X(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let n=e.length,i=t.length;for(let r=0,s=Math.min(n,i);r\u003Cs;++r)if(e[r]!==t[r]){n=e[r],i=t[r];break}return n\u003Ci?-1:i\u003Cn?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},l.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);let n;if(void 0===t)for(t=0,n=0;n\u003Ce.length;++n)t+=e[n].length;const i=l.allocUnsafe(t);let r=0;for(n=0;n\u003Ce.length;++n){let t=e[n];if(X(t,Uint8Array))r+t.length>i.length?(l.isBuffer(t)||(t=l.from(t)),t.copy(i,r)):Uint8Array.prototype.set.call(i,t,r);else{if(!l.isBuffer(t))throw new TypeError('\"list\" argument must be an Array of Buffers');t.copy(i,r)}r+=t.length}return i},l.byteLength=f,l.prototype._isBuffer=!0,l.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(let t=0;t\u003Ce;t+=2)g(this,t,t+1);return this},l.prototype.swap32=function(){const e=this.length;if(e%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(let t=0;t\u003Ce;t+=4)g(this,t,t+3),g(this,t+1,t+2);return this},l.prototype.swap64=function(){const e=this.length;if(e%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(let t=0;t\u003Ce;t+=8)g(this,t,t+7),g(this,t+1,t+6),g(this,t+2,t+5),g(this,t+3,t+4);return this},l.prototype.toString=function(){const e=this.length;return 0===e?\"\":0===arguments.length?_(this,0,e):m.apply(this,arguments)},l.prototype.toLocaleString=l.prototype.toString,l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){let e=\"\";const n=t.h2;return e=this.toString(\"hex\",0,n).replace(/(.{2})/g,\"$1 \").trim(),this.length>n&&(e+=\" ... \"),\"\u003CBuffer \"+e+\">\"},s&&(l.prototype[s]=l.prototype.inspect),l.prototype.compare=function(e,t,n,i,r){if(X(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t\u003C0||n>e.length||i\u003C0||r>this.length)throw new RangeError(\"out of range index\");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(this===e)return 0;let s=(r>>>=0)-(i>>>=0),o=(n>>>=0)-(t>>>=0);const a=Math.min(s,o),c=this.slice(i,r),h=e.slice(t,n);for(let e=0;e\u003Ca;++e)if(c[e]!==h[e]){s=c[e],o=h[e];break}return s\u003Co?-1:o\u003Cs?1:0},l.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},l.prototype.indexOf=function(e,t,n){return v(this,e,t,n,!0)},l.prototype.lastIndexOf=function(e,t,n){return v(this,e,t,n,!1)},l.prototype.write=function(e,t,n,i){if(void 0===t)i=\"utf8\",n=this.length,t=0;else if(void 0===n&&\"string\"==typeof t)i=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");t>>>=0,isFinite(n)?(n>>>=0,void 0===i&&(i=\"utf8\")):(i=n,n=void 0)}const r=this.length-t;if((void 0===n||n>r)&&(n=r),e.length>0&&(n\u003C0||t\u003C0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");i||(i=\"utf8\");let s=!1;for(;;)switch(i){case\"hex\":return E(this,e,t,n);case\"utf8\":case\"utf-8\":return b(this,e,t,n);case\"ascii\":case\"latin1\":case\"binary\":return x(this,e,t,n);case\"base64\":return w(this,e,t,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return C(this,e,t,n);default:if(s)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),s=!0}},l.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};const I=4096;function B(e,t,n){let i=\"\";n=Math.min(e.length,n);for(let r=t;r\u003Cn;++r)i+=String.fromCharCode(127&e[r]);return i}function S(e,t,n){let i=\"\";n=Math.min(e.length,n);for(let r=t;r\u003Cn;++r)i+=String.fromCharCode(e[r]);return i}function T(e,t,n){const i=e.length;(!t||t\u003C0)&&(t=0),(!n||n\u003C0||n>i)&&(n=i);let r=\"\";for(let i=t;i\u003Cn;++i)r+=K[e[i]];return r}function L(e,t,n){const i=e.slice(t,n);let r=\"\";for(let e=0;e\u003Ci.length-1;e+=2)r+=String.fromCharCode(i[e]+256*i[e+1]);return r}function D(e,t,n){if(e%1!=0||e\u003C0)throw new RangeError(\"offset is not uint\");if(e+t>n)throw new RangeError(\"Trying to access beyond buffer length\")}function R(e,t,n,i,r,s){if(!l.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>r||t\u003Cs)throw new RangeError('\"value\" argument is out of bounds');if(n+i>e.length)throw new RangeError(\"Index out of range\")}function P(e,t,n,i,r){z(t,i,r,e,n,7);let s=Number(t&BigInt(4294967295));e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,n}function k(e,t,n,i,r){z(t,i,r,e,n,7);let s=Number(t&BigInt(4294967295));e[n+7]=s,s>>=8,e[n+6]=s,s>>=8,e[n+5]=s,s>>=8,e[n+4]=s;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=o,o>>=8,e[n+2]=o,o>>=8,e[n+1]=o,o>>=8,e[n]=o,n+8}function F(e,t,n,i,r,s){if(n+i>e.length)throw new RangeError(\"Index out of range\");if(n\u003C0)throw new RangeError(\"Index out of range\")}function O(e,t,n,i,s){return t=+t,n>>>=0,s||F(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function Q(e,t,n,i,s){return t=+t,n>>>=0,s||F(e,0,n,8),r.write(e,t,n,i,52,8),n+8}l.prototype.slice=function(e,t){const n=this.length;(e=~~e)\u003C0?(e+=n)\u003C0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)\u003C0?(t+=n)\u003C0&&(t=0):t>n&&(t=n),t\u003Ce&&(t=e);const i=this.subarray(e,t);return Object.setPrototypeOf(i,l.prototype),i},l.prototype.readUintLE=l.prototype.readUIntLE=function(e,t,n){e>>>=0,t>>>=0,n||D(e,t,this.length);let i=this[e],r=1,s=0;for(;++s\u003Ct&&(r*=256);)i+=this[e+s]*r;return i},l.prototype.readUintBE=l.prototype.readUIntBE=function(e,t,n){e>>>=0,t>>>=0,n||D(e,t,this.length);let i=this[e+--t],r=1;for(;t>0&&(r*=256);)i+=this[e+--t]*r;return i},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]|this[e+1]\u003C\u003C8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]\u003C\u003C8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),(this[e]|this[e+1]\u003C\u003C8|this[e+2]\u003C\u003C16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),16777216*this[e]+(this[e+1]\u003C\u003C16|this[e+2]\u003C\u003C8|this[e+3])},l.prototype.readBigUInt64LE=Z((function(e){H(e>>>=0,\"offset\");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const i=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,r=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(i)+(BigInt(r)\u003C\u003CBigInt(32))})),l.prototype.readBigUInt64BE=Z((function(e){H(e>>>=0,\"offset\");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const i=t*2**24+65536*this[++e]+256*this[++e]+this[++e],r=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(i)\u003C\u003CBigInt(32))+BigInt(r)})),l.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||D(e,t,this.length);let i=this[e],r=1,s=0;for(;++s\u003Ct&&(r*=256);)i+=this[e+s]*r;return r*=128,i>=r&&(i-=Math.pow(2,8*t)),i},l.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||D(e,t,this.length);let i=t,r=1,s=this[e+--i];for(;i>0&&(r*=256);)s+=this[e+--i]*r;return r*=128,s>=r&&(s-=Math.pow(2,8*t)),s},l.prototype.readInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||D(e,2,this.length);const n=this[e]|this[e+1]\u003C\u003C8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){e>>>=0,t||D(e,2,this.length);const n=this[e+1]|this[e]\u003C\u003C8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]|this[e+1]\u003C\u003C8|this[e+2]\u003C\u003C16|this[e+3]\u003C\u003C24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]\u003C\u003C24|this[e+1]\u003C\u003C16|this[e+2]\u003C\u003C8|this[e+3]},l.prototype.readBigInt64LE=Z((function(e){H(e>>>=0,\"offset\");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const i=this[e+4]+256*this[e+5]+65536*this[e+6]+(n\u003C\u003C24);return(BigInt(i)\u003C\u003CBigInt(32))+BigInt(t+256*this[++e]+65536*this[++e]+this[++e]*2**24)})),l.prototype.readBigInt64BE=Z((function(e){H(e>>>=0,\"offset\");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const i=(t\u003C\u003C24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(i)\u003C\u003CBigInt(32))+BigInt(this[++e]*2**24+65536*this[++e]+256*this[++e]+n)})),l.prototype.readFloatLE=function(e,t){return e>>>=0,t||D(e,4,this.length),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||D(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||D(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||D(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,n,i){e=+e,t>>>=0,n>>>=0,i||R(this,e,t,n,Math.pow(2,8*n)-1,0);let r=1,s=0;for(this[t]=255&e;++s\u003Cn&&(r*=256);)this[t+s]=e/r&255;return t+n},l.prototype.writeUintBE=l.prototype.writeUIntBE=function(e,t,n,i){e=+e,t>>>=0,n>>>=0,i||R(this,e,t,n,Math.pow(2,8*n)-1,0);let r=n-1,s=1;for(this[t+r]=255&e;--r>=0&&(s*=256);)this[t+r]=e/s&255;return t+n},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigUInt64LE=Z((function(e,t=0){return P(this,e,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),l.prototype.writeBigUInt64BE=Z((function(e,t=0){return k(this,e,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),l.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);R(this,e,t,n,i-1,-i)}let r=0,s=1,o=0;for(this[t]=255&e;++r\u003Cn&&(s*=256);)e\u003C0&&0===o&&0!==this[t+r-1]&&(o=1),this[t+r]=(e/s>>0)-o&255;return t+n},l.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);R(this,e,t,n,i-1,-i)}let r=n-1,s=1,o=0;for(this[t+r]=255&e;--r>=0&&(s*=256);)e\u003C0&&0===o&&0!==this[t+r+1]&&(o=1),this[t+r]=(e/s>>0)-o&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,1,127,-128),e\u003C0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||R(this,e,t,4,2147483647,-2147483648),e\u003C0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigInt64LE=Z((function(e,t=0){return P(this,e,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),l.prototype.writeBigInt64BE=Z((function(e,t=0){return k(this,e,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),l.prototype.writeFloatLE=function(e,t,n){return O(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return O(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return Q(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return Q(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,i){if(!l.isBuffer(e))throw new TypeError(\"argument should be a Buffer\");if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i\u003Cn&&(i=n),i===n)return 0;if(0===e.length||0===this.length)return 0;if(t\u003C0)throw new RangeError(\"targetStart out of bounds\");if(n\u003C0||n>=this.length)throw new RangeError(\"Index out of range\");if(i\u003C0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),e.length-t\u003Ci-n&&(i=e.length-t+n);const r=i-n;return this===e&&\"function\"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,n,i):Uint8Array.prototype.set.call(e,this.subarray(n,i),t),r},l.prototype.fill=function(e,t,n,i){if(\"string\"==typeof e){if(\"string\"==typeof t?(i=t,t=0,n=this.length):\"string\"==typeof n&&(i=n,n=this.length),void 0!==i&&\"string\"!=typeof i)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof i&&!l.isEncoding(i))throw new TypeError(\"Unknown encoding: \"+i);if(1===e.length){const t=e.charCodeAt(0);(\"utf8\"===i&&t\u003C128||\"latin1\"===i)&&(e=t)}}else\"number\"==typeof e?e&=255:\"boolean\"==typeof e&&(e=Number(e));if(t\u003C0||this.length\u003Ct||this.length\u003Cn)throw new RangeError(\"Out of range index\");if(n\u003C=t)return this;let r;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),\"number\"==typeof e)for(r=t;r\u003Cn;++r)this[r]=e;else{const s=l.isBuffer(e)?e:l.from(e,i),o=s.length;if(0===o)throw new TypeError('The value \"'+e+'\" is invalid for argument \"value\"');for(r=0;r\u003Cn-t;++r)this[r+t]=s[r%o]}return this};const U={};function N(e,t,n){U[e]=class extends n{constructor(){super(),Object.defineProperty(this,\"message\",{value:t.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${e}]`,this.stack,delete this.name}get code(){return e}set code(e){Object.defineProperty(this,\"code\",{configurable:!0,enumerable:!0,value:e,writable:!0})}toString(){return`${this.name} [${e}]: ${this.message}`}}}function G(e){let t=\"\",n=e.length;const i=\"-\"===e[0]?1:0;for(;n>=i+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function z(e,t,n,i,r,s){if(e>n||e\u003Ct){const i=\"bigint\"==typeof t?\"n\":\"\";let r;throw r=s>3?0===t||t===BigInt(0)?`>= 0${i} and \u003C 2${i} ** ${8*(s+1)}${i}`:`>= -(2${i} ** ${8*(s+1)-1}${i}) and \u003C 2 ** ${8*(s+1)-1}${i}`:`>= ${t}${i} and \u003C= ${n}${i}`,new U.ERR_OUT_OF_RANGE(\"value\",r,e)}!function(e,t,n){H(t,\"offset\"),void 0!==e[t]&&void 0!==e[t+n]||V(t,e.length-(n+1))}(i,r,s)}function H(e,t){if(\"number\"!=typeof e)throw new U.ERR_INVALID_ARG_TYPE(t,\"number\",e)}function V(e,t,n){if(Math.floor(e)!==e)throw H(e,n),new U.ERR_OUT_OF_RANGE(n||\"offset\",\"an integer\",e);if(t\u003C0)throw new U.ERR_BUFFER_OUT_OF_BOUNDS;throw new U.ERR_OUT_OF_RANGE(n||\"offset\",`>= ${n?1:0} and \u003C= ${t}`,e)}N(\"ERR_BUFFER_OUT_OF_BOUNDS\",(function(e){return e?`${e} is outside of buffer bounds`:\"Attempt to access memory outside buffer bounds\"}),RangeError),N(\"ERR_INVALID_ARG_TYPE\",(function(e,t){return`The \"${e}\" argument must be of type number. Received type ${typeof t}`}),TypeError),N(\"ERR_OUT_OF_RANGE\",(function(e,t,n){let i=`The value of \"${e}\" is out of range.`,r=n;return Number.isInteger(n)&&Math.abs(n)>2**32?r=G(String(n)):\"bigint\"==typeof n&&(r=String(n),(n>BigInt(2)**BigInt(32)||n\u003C-(BigInt(2)**BigInt(32)))&&(r=G(r)),r+=\"n\"),i+=` It must be ${t}. Received ${r}`,i}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function j(e,t){let n;t=t||1/0;const i=e.length;let r=null;const s=[];for(let o=0;o\u003Ci;++o){if(n=e.charCodeAt(o),n>55295&&n\u003C57344){if(!r){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===i){(t-=3)>-1&&s.push(239,191,189);continue}r=n;continue}if(n\u003C56320){(t-=3)>-1&&s.push(239,191,189),r=n;continue}n=65536+(r-55296\u003C\u003C10|n-56320)}else r&&(t-=3)>-1&&s.push(239,191,189);if(r=null,n\u003C128){if((t-=1)\u003C0)break;s.push(n)}else if(n\u003C2048){if((t-=2)\u003C0)break;s.push(n>>6|192,63&n|128)}else if(n\u003C65536){if((t-=3)\u003C0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n\u003C1114112))throw new Error(\"Invalid code point\");if((t-=4)\u003C0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function q(e){return i.toByteArray(function(e){if((e=(e=e.split(\"=\")[0]).trim().replace(W,\"\")).length\u003C2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function Y(e,t,n,i){let r;for(r=0;r\u003Ci&&!(r+n>=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function X(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function J(e){return e!=e}const K=function(){const e=\"0123456789abcdef\",t=new Array(256);for(let n=0;n\u003C16;++n){const i=16*n;for(let r=0;r\u003C16;++r)t[i+r]=e[n]+e[r]}return t}();function Z(e){return\"undefined\"==typeof BigInt?$:e}function $(){throw new Error(\"BigInt not supported\")}},7705:e=>{\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=\"\",i=void 0!==t[5];return t[4]&&(n+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(n+=\"@media \".concat(t[2],\" {\")),i&&(n+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),n+=e(t),i&&(n+=\"}\"),t[2]&&(n+=\"}\"),t[4]&&(n+=\"}\"),n})).join(\"\")},t.i=function(e,n,i,r,s){\"string\"==typeof e&&(e=[[null,e,void 0]]);var o={};if(i)for(var a=0;a\u003Cthis.length;a++){var l=this[a][0];null!=l&&(o[l]=!0)}for(var c=0;c\u003Ce.length;c++){var h=[].concat(e[c]);i&&o[h[0]]||(void 0!==s&&(void 0===h[5]||(h[1]=\"@layer\".concat(h[5].length>0?\" \".concat(h[5]):\"\",\" {\").concat(h[1],\"}\")),h[5]=s),n&&(h[2]?(h[1]=\"@media \".concat(h[2],\" {\").concat(h[1],\"}\"),h[2]=n):h[2]=n),r&&(h[4]?(h[1]=\"@supports (\".concat(h[4],\") {\").concat(h[1],\"}\"),h[4]=r):h[4]=\"\".concat(r)),t.push(h))}},t}},6742:e=>{\"use strict\";e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['\"].*['\"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/[\"'() \\t\\n]|(%20)/.test(e)||t.needQuotes?'\"'.concat(e.replace(/\"/g,'\\\\\"').replace(/\\n/g,\"\\\\n\"),'\"'):e):e}},4216:e=>{\"use strict\";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if(\"function\"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(i),s=\"/*# \".concat(r,\" */\");return[t].concat([s]).join(\"\\n\")}return[t].join(\"\\n\")}},7464:()=>{!function(){if(\"undefined\"!=typeof window)try{var e=new window.CustomEvent(\"test\",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error(\"Could not prevent default\")}catch(e){var t=function(e,t){var n,i;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent(\"CustomEvent\")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i=n.preventDefault,n.preventDefault=function(){i.call(this);try{Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}()},695:(e,t,n)=>{function i(){var e;try{e=t.storage.debug}catch(e){}return e}(t=e.exports=n(4569)).log=function(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},t.formatArgs=function(){var e=arguments,t=this.useColors;if(e[0]=(t?\"%c\":\"\")+this.namespace+(t?\" %c\":\" \")+e[0]+(t?\"%c \":\" \"),!t)return e;var n=\"color: \"+this.color;e=[e[0],n,\"color: inherit\"].concat(Array.prototype.slice.call(e,1));var i=0,r=0;return e[0].replace(/%[a-z%]/g,(function(e){\"%%\"!==e&&(i++,\"%c\"===e&&(r=i))})),e.splice(r,0,n),e},t.save=function(e){try{null==e?t.storage.removeItem(\"debug\"):t.storage.debug=e}catch(e){}},t.load=i,t.useColors=function(){return\"WebkitAppearance\"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31},t.storage=\"undefined\"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"],t.formatters.j=function(e){return JSON.stringify(e)},t.enable(i())},4569:(e,t)=>{(t=e.exports=function(e){function n(){}function r(){var e=r;null==e.useColors&&(e.useColors=t.useColors()),null==e.color&&e.useColors&&(e.color=i());var n=Array.prototype.slice.call(arguments);n[0]=t.coerce(n[0]),\"string\"!=typeof n[0]&&(n=[\"%o\"].concat(n));var s=0;n[0]=n[0].replace(/%([a-z%])/g,(function(i,r){if(\"%%\"===i)return i;s++;var o=t.formatters[r];if(\"function\"==typeof o){var a=n[s];i=o.call(e,a),n.splice(s,1),s--}return i})),\"function\"==typeof t.formatArgs&&(n=t.formatArgs.apply(e,n));var o=r.log||t.log||console.log.bind(console);o.apply(e,n)}n.enabled=!1,r.enabled=!0;var s=t.enabled(e)?r:n;return s.namespace=e,s}).coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){t.enable(\"\")},t.enable=function(e){t.save(e);for(var n=(e||\"\").split(/[\\s,]+/),i=n.length,r=0;r\u003Ci;r++)n[r]&&(\"-\"===(e=n[r].replace(/\\*/g,\".*?\"))[0]?t.skips.push(new RegExp(\"^\"+e.substr(1)+\"$\")):t.names.push(new RegExp(\"^\"+e+\"$\")))},t.enabled=function(e){var n,i;for(n=0,i=t.skips.length;n\u003Ci;n++)if(t.skips[n].test(e))return!1;for(n=0,i=t.names.length;n\u003Ci;n++)if(t.names[n].test(e))return!0;return!1},t.names=[],t.skips=[],t.formatters={};var n=0;function i(){return t.colors[n++%t.colors.length]}},1900:(e,t,n)=>{\"use strict\";var i=n(445),r=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError(\"Sources cannot be null or undefined\");return Object(e)}function a(e,t,n){var s=t[n];if(null!=s){if(r.call(e,n)&&(void 0===e[n]||null===e[n]))throw new TypeError(\"Cannot convert undefined or null to object (\"+n+\")\");r.call(e,n)&&i(s)?e[n]=l(Object(e[n]),t[n]):e[n]=s}}function l(e,t){if(e===t)return e;for(var n in t=Object(t))r.call(t,n)&&a(e,t,n);if(Object.getOwnPropertySymbols)for(var i=Object.getOwnPropertySymbols(t),o=0;o\u003Ci.length;o++)s.call(t,i[o])&&a(e,t,i[o]);return e}e.exports=function(e){e=o(e);for(var t=1;t\u003Carguments.length;t++)l(e,arguments[t]);return e}},4666:e=>{e.exports=function(e){switch(e){case\"int8\":return Int8Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"uint8\":return Uint8Array;case\"uint16\":return Uint16Array;case\"uint32\":return Uint32Array;case\"float32\":return Float32Array;case\"float64\":return Float64Array;case\"array\":return Array;case\"uint8_clamped\":return Uint8ClampedArray}}},9651:(e,t,n)=>{var i=n(4666);e.exports=function(e,t,n){if(!e)throw new TypeError(\"must specify data as first parameter\");if(n=0|+(n||0),Array.isArray(e)&&e[0]&&\"number\"==typeof e[0][0]){var r,s,o,a,l=e[0].length,c=e.length*l;t&&\"string\"!=typeof t||(t=new(i(t||\"float32\"))(c+n));var h=t.length-n;if(c!==h)throw new Error(\"source length \"+c+\" (\"+l+\"x\"+e.length+\") does not match destination length \"+h);for(r=0,o=n;r\u003Ce.length;r++)for(s=0;s\u003Cl;s++)t[o++]=null===e[r][s]?NaN:e[r][s]}else if(t&&\"string\"!=typeof t)t.set(e,n);else{var u=i(t||\"float32\");if(Array.isArray(e)||\"array\"===t)for(r=0,o=n,a=(t=new u(e.length+n)).length;o\u003Ca;o++,r++)t[o]=null===e[r]?NaN:e[r];else 0===n?t=new u(e):(t=new u(e.length+n)).set(e,n)}return t}},1192:(e,t,n)=>{var i;i=\"undefined\"!=typeof window?window:void 0!==n.g?n.g:\"undefined\"!=typeof self?self:{},e.exports=i},9350:(e,t)=>{t.read=function(e,t,n,i,r){var s,o,a=8*r-i-1,l=(1\u003C\u003Ca)-1,c=l>>1,h=-7,u=n?r-1:0,d=n?-1:1,p=e[t+u];for(u+=d,s=p&(1\u003C\u003C-h)-1,p>>=-h,h+=a;h>0;s=256*s+e[t+u],u+=d,h-=8);for(o=s&(1\u003C\u003C-h)-1,s>>=-h,h+=i;h>0;o=256*o+e[t+u],u+=d,h-=8);if(0===s)s=1-c;else{if(s===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,i),s-=c}return(p?-1:1)*o*Math.pow(2,s-i)},t.write=function(e,t,n,i,r,s){var o,a,l,c=8*s-r-1,h=(1\u003C\u003Cc)-1,u=h>>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,p=i?0:s-1,A=i?1:-1,f=t\u003C0||0===t&&1/t\u003C0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=h):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))\u003C1&&(o--,l*=2),(t+=o+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(o++,l/=2),o+u>=h?(a=0,o=h):o+u>=1?(a=(t*l-1)*Math.pow(2,r),o+=u):(a=t*Math.pow(2,u-1)*Math.pow(2,r),o=0));r>=8;e[n+p]=255&a,p+=A,a/=256,r-=8);for(o=o\u003C\u003Cr|a,c+=r;c>0;e[n+p]=255&o,p+=A,o/=256,c-=8);e[n+p-A]|=128*f}},5153:e=>{\"function\"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},1826:e=>{function t(e){return!!e.constructor&&\"function\"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(t(e)||function(e){return\"function\"==typeof e.readFloatLE&&\"function\"==typeof e.slice&&t(e.slice(0,0))}(e)||!!e._isBuffer)}},6534:e=>{e.exports=function(e){if(!e)return!1;var n=t.call(e);return\"[object Function]\"===n||\"function\"==typeof e&&\"[object RegExp]\"!==n||\"undefined\"!=typeof window&&(e===window.setTimeout||e===window.alert||e===window.confirm||e===window.prompt)};var t=Object.prototype.toString},445:e=>{\"use strict\";e.exports=function(e){var t=typeof e;return null!==e&&(\"object\"===t||\"function\"===t)}},7510:(e,t,n)=>{var i=n(9443),r=n(2786),s=n(3205),o=[\"x\",\"e\",\"a\",\"o\",\"n\",\"s\",\"r\",\"c\",\"u\",\"m\",\"v\",\"w\",\"z\"],a=[\"m\",\"w\"],l=[\"H\",\"I\",\"N\",\"E\",\"F\",\"K\",\"L\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\"],c=\"\\t\".charCodeAt(0),h=\" \".charCodeAt(0);function u(e){this.glyphs=[],this._measure=this.computeMetrics.bind(this),this.update(e)}function d(e){return new Function([\"return function \"+e+\"() {\",\" return this._\"+e,\"}\"].join(\"\\n\"))()}function p(e,t){if(!e.chars||0===e.chars.length)return null;var n=f(e.chars,t);return n>=0?e.chars[n]:null}function A(e,t,n){if(!e.kernings||0===e.kernings.length)return 0;for(var i=e.kernings,r=0;r\u003Ci.length;r++){var s=i[r];if(s.first===t&&s.second===n)return s.amount}return 0}function f(e,t,n){for(var i=n=n||0;i\u003Ce.length;i++)if(e[i].id===t)return i;return-1}e.exports=function(e){return new u(e)},u.prototype.update=function(e){if(e=r({measure:this._measure},e),this._opt=e,this._opt.tabSize=s(this._opt.tabSize,4),!e.font)throw new Error(\"must provide a valid bitmap font\");var t=this.glyphs,n=e.text||\"\",a=e.font;this._setupSpaceGlyphs(a);var c=i.lines(n,e),h=e.width||0;t.length=0;var u=c.reduce((function(e,t){return Math.max(e,t.width,h)}),0),d=0,p=0,m=s(e.lineHeight,a.common.lineHeight),g=a.common.base,v=m-g,y=e.letterSpacing||0,E=m*c.length-v,b=function(e){return\"center\"===e?1:\"right\"===e?2:0}(this._opt.align);p-=E,this._width=u,this._height=E,this._descender=m-g,this._baseline=g,this._xHeight=function(e){for(var t=0;t\u003Co.length;t++){var n=o[t].charCodeAt(0),i=f(e.chars,n);if(i>=0)return e.chars[i].height}return 0}(a),this._capHeight=function(e){for(var t=0;t\u003Cl.length;t++){var n=l[t].charCodeAt(0),i=f(e.chars,n);if(i>=0)return e.chars[i].height}return 0}(a),this._lineHeight=m,this._ascender=m-v-this._xHeight;var x=this;c.forEach((function(e,i){for(var r,s=e.start,o=e.end,l=e.width,c=s;c\u003Co;c++){var h=n.charCodeAt(c),f=x.getGlyph(a,h);if(f){r&&(d+=A(a,r.id,f.id));var g=d;1===b?g+=(u-l)/2:2===b&&(g+=u-l),t.push({position:[g,p],data:f,index:c,line:i}),d+=f.xadvance+y,r=f}}p+=m,d=0})),this._linesTotal=c.length},u.prototype._setupSpaceGlyphs=function(e){if(this._fallbackSpaceGlyph=null,this._fallbackTabGlyph=null,e.chars&&0!==e.chars.length){var t=p(e,h)||function(e){for(var t=0;t\u003Ca.length;t++){var n=a[t].charCodeAt(0),i=f(e.chars,n);if(i>=0)return e.chars[i]}return 0}(e)||e.chars[0],n=this._opt.tabSize*t.xadvance;this._fallbackSpaceGlyph=t,this._fallbackTabGlyph=r(t,{x:0,y:0,xadvance:n,id:c,xoffset:0,yoffset:0,width:0,height:0})}},u.prototype.getGlyph=function(e,t){return p(e,t)||(t===c?this._fallbackTabGlyph:t===h?this._fallbackSpaceGlyph:null)},u.prototype.computeMetrics=function(e,t,n,i){var r,s=this._opt.letterSpacing||0,o=this._opt.font,a=0,l=0,c=0;if(!o.chars||0===o.chars.length)return{start:t,end:t,width:0};n=Math.min(e.length,n);for(var h=t;h\u003Cn;h++){var u,d=e.charCodeAt(h);if(u=this.getGlyph(o,d)){u.xoffset;var p=(a+=r?A(o,r.id,u.id):0)+u.xadvance+s,f=a+u.width;if(f>=i||p>=i)break;a=p,l=f,r=u}c++}return r&&(l+=r.xoffset),{start:t,end:t+c,width:l}},[\"width\",\"height\",\"descender\",\"ascender\",\"xHeight\",\"baseline\",\"capHeight\",\"lineHeight\"].forEach((function(e){Object.defineProperty(u.prototype,e,{get:d(e),configurable:!0})}))},1880:(e,t,n)=>{var i=n(5851).lW,r=n(7377),s=function(){},o=n(5551),a=n(7096),l=n(1683),c=n(7804),h=n(2786),u=self.XMLHttpRequest&&\"withCredentials\"in new XMLHttpRequest;e.exports=function(e,t){t=\"function\"==typeof t?t:s,\"string\"==typeof e?e={uri:e}:e||(e={}),e.binary&&(e=function(e){if(u)return h(e,{responseType:\"arraybuffer\"});if(void 0===self.XMLHttpRequest)throw new Error(\"your browser does not support XHR loading\");var t=new self.XMLHttpRequest;return t.overrideMimeType(\"text/plain; charset=x-user-defined\"),h({xhr:t},e)}(e)),r(e,(function(n,r,h){if(n)return t(n);if(!/^2/.test(r.statusCode))return t(new Error(\"http status code: \"+r.statusCode));if(!h)return t(new Error(\"no body result\"));var u,d,p=!1;if(u=h,\"[object ArrayBuffer]\"===Object.prototype.toString.call(u)){var A=new Uint8Array(h);h=i.from(A,\"binary\")}c(h)&&(p=!0,\"string\"==typeof h&&(h=i.from(h,\"binary\"))),p||(i.isBuffer(h)&&(h=h.toString(e.encoding)),h=h.trim());try{var f=r.headers[\"content-type\"];d=p?l(h):/json/.test(f)||\"{\"===h.charAt(0)?JSON.parse(h):/xml/.test(f)||\"\u003C\"===h.charAt(0)?a(h):o(h)}catch(e){t(new Error(\"error parsing font \"+e.message)),t=s}t(null,d)}))}},7804:(e,t,n)=>{var i=n(5851).lW,r=n(5286),s=i.from([66,77,70,3]);e.exports=function(e){return\"string\"==typeof e?\"BMF\"===e.substring(0,3):e.length>4&&r(e.slice(0,4),s)}},7347:e=>{\"use strict\";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function r(e){if(null==e)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String(\"abc\");if(e[5]=\"de\",\"5\"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n\u003C10;n++)t[\"_\"+String.fromCharCode(n)]=n;if(\"0123456789\"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(\"\"))return!1;var i={};return\"abcdefghijklmnopqrst\".split(\"\").forEach((function(e){i[e]=e})),\"abcdefghijklmnopqrst\"===Object.keys(Object.assign({},i)).join(\"\")}catch(e){return!1}}()?Object.assign:function(e,s){for(var o,a,l=r(e),c=1;c\u003Carguments.length;c++){for(var h in o=Object(arguments[c]))n.call(o,h)&&(l[h]=o[h]);if(t){a=t(o);for(var u=0;u\u003Ca.length;u++)i.call(o,a[u])&&(l[a[u]]=o[a[u]])}}return l}},5551:e=>{function t(e,t){if(!(e=e.replace(/\\t+/g,\" \").trim()))return null;var i=e.indexOf(\" \");if(-1===i)throw new Error(\"no named row at line \"+t);var r=e.substring(0,i);e=(e=(e=(e=e.substring(i+1)).replace(/letter=[\\'\\\"]\\S+[\\'\\\"]/gi,\"\")).split(\"=\")).map((function(e){return e.trim().match(/(\".*?\"|[^\"\\s]+)+(?=\\s*|\\s*$)/g)}));for(var s=[],o=0;o\u003Ce.length;o++){var a=e[o];0===o?s.push({key:a[0],data:\"\"}):o===e.length-1?s[s.length-1].data=n(a[0]):(s[s.length-1].data=n(a[0]),s.push({key:a[1],data:\"\"}))}var l={key:r,data:{}};return s.forEach((function(e){l.data[e.key]=e.data})),l}function n(e){return e&&0!==e.length?0===e.indexOf('\"')||0===e.indexOf(\"'\")?e.substring(1,e.length-1):-1!==e.indexOf(\",\")?function(e){return e.split(\",\").map((function(e){return parseInt(e,10)}))}(e):parseInt(e,10):\"\"}e.exports=function(e){if(!e)throw new Error(\"no data provided\");var n={pages:[],chars:[],kernings:[]},i=(e=e.toString().trim()).split(/\\r\\n?|\\n/g);if(0===i.length)throw new Error(\"no data in BMFont file\");for(var r=0;r\u003Ci.length;r++){var s=t(i[r],r);if(s)if(\"page\"===s.key){if(\"number\"!=typeof s.data.id)throw new Error(\"malformed file at line \"+r+\" -- needs page id=N\");if(\"string\"!=typeof s.data.file)throw new Error(\"malformed file at line \"+r+' -- needs page file=\"path\"');n.pages[s.data.id]=s.data.file}else\"chars\"===s.key||\"kernings\"===s.key||(\"char\"===s.key?n.chars.push(s.data):\"kerning\"===s.key?n.kernings.push(s.data):n[s.key]=s.data)}return n}},1683:e=>{var t=[66,77,70];function n(e,t,n){if(n>t.length-1)return 0;var r=t.readUInt8(n++),s=t.readInt32LE(n);switch(n+=4,r){case 1:e.info=function(e,t){var n={};n.size=e.readInt16LE(t);var r=e.readUInt8(t+2);return n.smooth=r>>7&1,n.unicode=r>>6&1,n.italic=r>>5&1,n.bold=r>>4&1,r>>3&1&&(n.fixedHeight=1),n.charset=e.readUInt8(t+3)||\"\",n.stretchH=e.readUInt16LE(t+4),n.aa=e.readUInt8(t+6),n.padding=[e.readInt8(t+7),e.readInt8(t+8),e.readInt8(t+9),e.readInt8(t+10)],n.spacing=[e.readInt8(t+11),e.readInt8(t+12)],n.outline=e.readUInt8(t+13),n.face=function(e,t){return i(e,t).toString(\"utf8\")}(e,t+14),n}(t,n);break;case 2:e.common=function(e,t){var n={};return n.lineHeight=e.readUInt16LE(t),n.base=e.readUInt16LE(t+2),n.scaleW=e.readUInt16LE(t+4),n.scaleH=e.readUInt16LE(t+6),n.pages=e.readUInt16LE(t+8),e.readUInt8(t+10),n.packed=0,n.alphaChnl=e.readUInt8(t+11),n.redChnl=e.readUInt8(t+12),n.greenChnl=e.readUInt8(t+13),n.blueChnl=e.readUInt8(t+14),n}(t,n);break;case 3:e.pages=function(e,t,n){for(var r=[],s=i(e,t),o=s.length+1,a=n/o,l=0;l\u003Ca;l++)r[l]=e.slice(t,t+s.length).toString(\"utf8\"),t+=o;return r}(t,n,s);break;case 4:e.chars=function(e,t,n){for(var i=[],r=n/20,s=0;s\u003Cr;s++){var o={},a=20*s;o.id=e.readUInt32LE(t+0+a),o.x=e.readUInt16LE(t+4+a),o.y=e.readUInt16LE(t+6+a),o.width=e.readUInt16LE(t+8+a),o.height=e.readUInt16LE(t+10+a),o.xoffset=e.readInt16LE(t+12+a),o.yoffset=e.readInt16LE(t+14+a),o.xadvance=e.readInt16LE(t+16+a),o.page=e.readUInt8(t+18+a),o.chnl=e.readUInt8(t+19+a),i[s]=o}return i}(t,n,s);break;case 5:e.kernings=function(e,t,n){for(var i=[],r=n/10,s=0;s\u003Cr;s++){var o={},a=10*s;o.first=e.readUInt32LE(t+0+a),o.second=e.readUInt32LE(t+4+a),o.amount=e.readInt16LE(t+8+a),i[s]=o}return i}(t,n,s)}return 5+s}function i(e,t){for(var n=t;n\u003Ce.length&&0!==e[n];n++);return e.slice(t,n)}e.exports=function(e){if(e.length\u003C6)throw new Error(\"invalid buffer length for BMFont\");var i=t.every((function(t,n){return e.readUInt8(n)===t}));if(!i)throw new Error(\"BMFont missing BMF byte header\");var r=3;if(e.readUInt8(r++)>3)throw new Error(\"Only supports BMFont Binary v3 (BMFont App v1.10)\");for(var s={kernings:[],chars:[]},o=0;o\u003C5;o++)r+=n(s,e,r);return s}},7096:(e,t,n)=>{var i=n(3102),r=n(6774),s={scaleh:\"scaleH\",scalew:\"scaleW\",stretchh:\"stretchH\",lineheight:\"lineHeight\",alphachnl:\"alphaChnl\",redchnl:\"redChnl\",greenchnl:\"greenChnl\",bluechnl:\"blueChnl\"};function o(e){var t=function(e){for(var t=[],n=0;n\u003Ce.attributes.length;n++)t.push(e.attributes[n]);return t}(e);return t.reduce((function(e,t){var n;return e[(n=t.nodeName,s[n.toLowerCase()]||n)]=t.nodeValue,e}),{})}e.exports=function(e){e=e.toString();var t=r(e),n={pages:[],chars:[],kernings:[]};[\"info\",\"common\"].forEach((function(e){var r=t.getElementsByTagName(e)[0];r&&(n[e]=i(o(r)))}));var s=t.getElementsByTagName(\"pages\")[0];if(!s)throw new Error(\"malformed file -- no \u003Cpages> element\");for(var a=s.getElementsByTagName(\"page\"),l=0;l\u003Ca.length;l++){var c=a[l],h=parseInt(c.getAttribute(\"id\"),10),u=c.getAttribute(\"file\");if(isNaN(h))throw new Error('malformed file -- page \"id\" attribute is NaN');if(!u)throw new Error('malformed file -- needs page \"file\" attribute');n.pages[parseInt(h,10)]=u}return[\"chars\",\"kernings\"].forEach((function(e){var r=t.getElementsByTagName(e)[0];if(r)for(var s=e.substring(0,e.length-1),a=r.getElementsByTagName(s),l=0;l\u003Ca.length;l++){var c=a[l];n[e].push(i(o(c)))}})),n}},3102:e=>{var t=\"chasrset\";e.exports=function(e){for(var n in t in e&&(e.charset=e[t],delete e[t]),e)\"face\"!==n&&\"charset\"!==n&&(e[n]=\"padding\"===n||\"spacing\"===n?e[n].split(\",\").map((function(e){return parseInt(e,10)})):parseInt(e[n],10));return e}},9069:e=>{var t=function(e){return e.replace(/^\\s+|\\s+$/g,\"\")};e.exports=function(e){if(!e)return{};for(var n,i={},r=t(e).split(\"\\n\"),s=0;s\u003Cr.length;s++){var o=r[s],a=o.indexOf(\":\"),l=t(o.slice(0,a)).toLowerCase(),c=t(o.slice(a+1));void 0===i[l]?i[l]=c:(n=i[l],\"[object Array]\"===Object.prototype.toString.call(n)?i[l].push(c):i[l]=[i[l],c])}return i}},9414:(e,t,n)=>{var i=n.g.performance||{},r=function(){for(var e=[\"now\",\"webkitNow\",\"msNow\",\"mozNow\",\"oNow\"];e.length;){var t=e.shift();if(t in i)return i[t].bind(i)}var n=Date.now||function(){return(new Date).getTime()},r=(i.timing||{}).navigationStart||n();return function(){return n()-r}}();r.performanceNow=i.now,r.noConflict=function(){i.now=r.performanceNow},r.conflict=function(){i.now=r},r.conflict(),e.exports=r},2790:e=>{var t,n,i=e.exports={};function r(){throw new Error(\"setTimeout has not been defined\")}function s(){throw new Error(\"clearTimeout has not been defined\")}function o(e){if(t===setTimeout)return setTimeout(e,0);if((t===r||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t=\"function\"==typeof setTimeout?setTimeout:r}catch(e){t=r}try{n=\"function\"==typeof clearTimeout?clearTimeout:s}catch(e){n=s}}();var a,l=[],c=!1,h=-1;function u(){c&&a&&(c=!1,a.length?l=a.concat(l):h=-1,l.length&&d())}function d(){if(!c){var e=o(u);c=!0;for(var t=l.length;t;){for(a=l,l=[];++h\u003Ct;)a&&a[h].run();h=-1,t=l.length}a=null,c=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===s||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function A(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n\u003Carguments.length;n++)t[n-1]=arguments[n];l.push(new p(e,t)),1!==l.length||c||o(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title=\"browser\",i.browser=!0,i.env={},i.argv=[],i.version=\"\",i.versions={},i.on=A,i.addListener=A,i.once=A,i.off=A,i.removeListener=A,i.removeAllListeners=A,i.emit=A,i.prependListener=A,i.prependOnceListener=A,i.listeners=function(e){return[]},i.binding=function(e){throw new Error(\"process.binding is not supported\")},i.cwd=function(){return\"/\"},i.chdir=function(e){throw new Error(\"process.chdir is not supported\")},i.umask=function(){return 0}},4177:function(e){!function(t){var n=setTimeout,i=\"function\"==typeof setImmediate&&setImmediate||function(e){n(e,1)};function r(e,t){return function(){e.apply(t,arguments)}}var s=Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)};function o(e){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=null,this._value=null,this._deferreds=[],d(e,r(l,this),r(c,this))}function a(e){var t=this;null!==this._state?i((function(){var n=t._state?e.onFulfilled:e.onRejected;if(null!==n){var i;try{i=n(t._value)}catch(t){return void e.reject(t)}e.resolve(i)}else(t._state?e.resolve:e.reject)(t._value)})):this._deferreds.push(e)}function l(e){try{if(e===this)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var t=e.then;if(\"function\"==typeof t)return void d(r(t,e),r(l,this),r(c,this))}this._state=!0,this._value=e,h.call(this)}catch(e){c.call(this,e)}}function c(e){this._state=!1,this._value=e,h.call(this)}function h(){for(var e=0,t=this._deferreds.length;e\u003Ct;e++)a.call(this,this._deferreds[e]);this._deferreds=null}function u(e,t,n,i){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof t?t:null,this.resolve=n,this.reject=i}function d(e,t,n){var i=!1;try{e((function(e){i||(i=!0,t(e))}),(function(e){i||(i=!0,n(e))}))}catch(e){if(i)return;i=!0,n(e)}}o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){var n=this;return new o((function(i,r){a.call(n,new u(e,t,i,r))}))},o.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&s(arguments[0])?arguments[0]:arguments);return new o((function(t,n){if(0===e.length)return t([]);var i=e.length;function r(s,o){try{if(o&&(\"object\"==typeof o||\"function\"==typeof o)){var a=o.then;if(\"function\"==typeof a)return void a.call(o,(function(e){r(s,e)}),n)}e[s]=o,0==--i&&t(e)}catch(e){n(e)}}for(var s=0;s\u003Ce.length;s++)r(s,e[s])}))},o.resolve=function(e){return e&&\"object\"==typeof e&&e.constructor===o?e:new o((function(t){t(e)}))},o.reject=function(e){return new o((function(t,n){n(e)}))},o.race=function(e){return new o((function(t,n){for(var i=0,r=e.length;i\u003Cr;i++)e[i].then(t,n)}))},o._setImmediateFn=function(e){i=e},e.exports?e.exports=o:t.Promise||(t.Promise=o)}(this)},4502:(e,t,n)=>{var i=n(4666),r=n(6793),s=n(1826),o=[0,2,3],a=[2,1,3];e.exports=function(e,t){e&&(r(e)||s(e))||(t=e||{},e=null);for(var n=\"string\"==typeof(t=\"number\"==typeof t?{count:t}:t||{}).type?t.type:\"uint16\",l=\"number\"==typeof t.count?t.count:1,c=t.start||0,h=!1!==t.clockwise?o:a,u=h[0],d=h[1],p=h[2],A=6*l,f=e||new(i(n))(A),m=0,g=0;m\u003CA;m+=6,g+=4){var v=m+c;f[v+0]=g+0,f[v+1]=g+1,f[v+2]=g+2,f[v+3]=g+u,f[v+4]=g+d,f[v+5]=g+p}return f}},2446:(e,t,n)=>{\"use strict\";n.d(t,{Z:()=>ve});var i={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:\"normal\",autoplay:!0,timelineOffset:0},r={duration:1e3,delay:0,endDelay:0,easing:\"easeOutElastic(1, .5)\",round:0},s=[\"translateX\",\"translateY\",\"translateZ\",\"rotate\",\"rotateX\",\"rotateY\",\"rotateZ\",\"scale\",\"scaleX\",\"scaleY\",\"scaleZ\",\"skew\",\"skewX\",\"skewY\",\"perspective\"],o={CSS:{},springs:{}};function a(e,t,n){return Math.min(Math.max(e,t),n)}function l(e,t){return e.indexOf(t)>-1}function c(e,t){return e.apply(null,t)}var h=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,u=/^rgb/,d=/^hsl/,p={arr:function(e){return Array.isArray(e)},obj:function(e){return l(Object.prototype.toString.call(e),\"Object\")},pth:function(e){return p.obj(e)&&e.hasOwnProperty(\"totalLength\")},svg:function(e){return e instanceof SVGElement},inp:function(e){return e instanceof HTMLInputElement},dom:function(e){return e.nodeType||p.svg(e)},str:function(e){return\"string\"==typeof e},fnc:function(e){return\"function\"==typeof e},und:function(e){return void 0===e},hex:function(e){return h.test(e)},rgb:function(e){return u.test(e)},hsl:function(e){return d.test(e)},col:function(e){return p.hex(e)||p.rgb(e)||p.hsl(e)},key:function(e){return!i.hasOwnProperty(e)&&!r.hasOwnProperty(e)&&\"targets\"!==e&&\"keyframes\"!==e}},A=/\\(([^)]+)\\)/;function f(e){var t=A.exec(e);return t?t[1].split(\",\").map((function(e){return parseFloat(e)})):[]}function m(e,t){var n=f(e),i=a(p.und(n[0])?1:n[0],.1,100),r=a(p.und(n[1])?100:n[1],.1,100),s=a(p.und(n[2])?10:n[2],.1,100),l=a(p.und(n[3])?0:n[3],.1,100),c=Math.sqrt(r/i),h=s/(2*Math.sqrt(r*i)),u=h\u003C1?c*Math.sqrt(1-h*h):0,d=h\u003C1?(h*c-l)/u:-l+c;function A(e){var n=t?t*e/1e3:e;return n=h\u003C1?Math.exp(-n*h*c)*(1*Math.cos(u*n)+d*Math.sin(u*n)):(1+d*n)*Math.exp(-n*c),0===e||1===e?e:1-n}return t?A:function(){var t=o.springs[e];if(t)return t;for(var n=1/6,i=0,r=0;;)if(1===A(i+=n)){if(++r>=16)break}else r=0;var s=i*n*1e3;return o.springs[e]=s,s}}function g(e,t){void 0===e&&(e=1),void 0===t&&(t=.5);var n=a(e,1,10),i=a(t,.1,2);return function(e){return 0===e||1===e?e:-n*Math.pow(2,10*(e-1))*Math.sin((e-1-i/(2*Math.PI)*Math.asin(1/n))*(2*Math.PI)/i)}}function v(e){return void 0===e&&(e=10),function(t){return Math.round(t*e)*(1/e)}}var y=function(){var e=.1;function t(e,t){return 1-3*t+3*e}function n(e,t){return 3*t-6*e}function i(e){return 3*e}function r(e,r,s){return((t(r,s)*e+n(r,s))*e+i(r))*e}function s(e,r,s){return 3*t(r,s)*e*e+2*n(r,s)*e+i(r)}return function(t,n,i,o){if(0\u003C=t&&t\u003C=1&&0\u003C=i&&i\u003C=1){var a=new Float32Array(11);if(t!==n||i!==o)for(var l=0;l\u003C11;++l)a[l]=r(l*e,t,i);return function(l){return t===n&&i===o||0===l||1===l?l:r(function(n){for(var o=0,l=1;10!==l&&a[l]\u003C=n;++l)o+=e;--l;var c=o+(n-a[l])/(a[l+1]-a[l])*e,h=s(c,t,i);return h>=.001?function(e,t,n,i){for(var o=0;o\u003C4;++o){var a=s(t,n,i);if(0===a)return t;t-=(r(t,n,i)-e)/a}return t}(n,c,t,i):0===h?c:function(e,t,n,i,s){var o,a,l=0;do{(o=r(a=t+(n-t)/2,i,s)-e)>0?n=a:t=a}while(Math.abs(o)>1e-7&&++l\u003C10);return a}(n,o,o+e,t,i)}(l),n,o)}}}}(),E=function(){var e=[\"Quad\",\"Cubic\",\"Quart\",\"Quint\",\"Sine\",\"Expo\",\"Circ\",\"Back\",\"Elastic\"],t={In:[[.55,.085,.68,.53],[.55,.055,.675,.19],[.895,.03,.685,.22],[.755,.05,.855,.06],[.47,0,.745,.715],[.95,.05,.795,.035],[.6,.04,.98,.335],[.6,-.28,.735,.045],g],Out:[[.25,.46,.45,.94],[.215,.61,.355,1],[.165,.84,.44,1],[.23,1,.32,1],[.39,.575,.565,1],[.19,1,.22,1],[.075,.82,.165,1],[.175,.885,.32,1.275],function(e,t){return function(n){return 1-g(e,t)(1-n)}}],InOut:[[.455,.03,.515,.955],[.645,.045,.355,1],[.77,0,.175,1],[.86,0,.07,1],[.445,.05,.55,.95],[1,0,0,1],[.785,.135,.15,.86],[.68,-.55,.265,1.55],function(e,t){return function(n){return n\u003C.5?g(e,t)(2*n)/2:1-g(e,t)(-2*n+2)/2}}]},n={linear:[.25,.25,.75,.75]};for(var i in t)for(var r=0,s=t[i].length;r\u003Cs;r++)n[\"ease\"+i+e[r]]=t[i][r];return n}();function b(e,t){if(p.fnc(e))return e;var n=e.split(\"(\")[0],i=E[n],r=f(e);switch(n){case\"spring\":return m(e,t);case\"cubicBezier\":return c(y,r);case\"steps\":return c(v,r);default:return p.fnc(i)?c(i,r):c(y,i)}}function x(e){try{return document.querySelectorAll(e)}catch(e){return}}var w=[];function C(e,t){for(var n=w,i=e.length,r=arguments.length>=2?arguments[1]:void 0,s=0;s\u003Ci;s++)if(s in e){var o=e[s];t.call(r,o,s,e)&&n.push(o)}return(w=e).length=0,n}function M(e,t){t||(t=[]);for(var n=0,i=e.length;n\u003Ci;n++){var r=e[n];Array.isArray(r)?M(r,t):t.push(r)}return t}function _(e){return p.arr(e)?e:(p.str(e)&&(e=x(e)||e),e instanceof NodeList||e instanceof HTMLCollection?[].slice.call(e):[e])}function I(e,t){return e.some((function(e){return e===t}))}function B(e){var t={};for(var n in e)t[n]=e[n];return t}function S(e,t){var n=B(e);for(var i in e)n[i]=t.hasOwnProperty(i)?t[i]:e[i];return n}function T(e,t){var n=B(e);for(var i in t)n[i]=p.und(e[i])?t[i]:e[i];return n}var L=/rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g,D=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,R=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,P=/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g,k=/hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g;var F=/([\\+\\-]?[0-9#\\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/;function O(e){var t=F.exec(e);if(t)return t[2]}function Q(e,t){return p.fnc(e)?e(t.target,t.id,t.total):e}function U(e,t){return e.getAttribute(t)}function N(e,t,n){if(I([n,\"deg\",\"rad\",\"turn\"],O(t)))return t;var i=o.CSS[t+n];if(!p.und(i))return i;var r=document.createElement(e.tagName),s=e.parentNode&&e.parentNode!==document?e.parentNode:document.body;s.appendChild(r),r.style.position=\"absolute\",r.style.width=100+n;var a=100/r.offsetWidth;s.removeChild(r);var l=a*parseFloat(t);return o.CSS[t+n]=l,l}function G(e,t,n){if(t in e.style){var i=t.replace(/([a-z])([A-Z])/g,\"$1-$2\").toLowerCase(),r=e.style[t]||getComputedStyle(e).getPropertyValue(i)||\"0\";return n?N(e,r,n):r}}function z(e,t){return p.dom(e)&&!p.inp(e)&&(U(e,t)||p.svg(e)&&e[t])?\"attribute\":p.dom(e)&&I(s,t)?\"transform\":p.dom(e)&&\"transform\"!==t&&G(e,t)?\"css\":null!=e[t]?\"object\":void 0}var H=/(\\w+)\\(([^)]*)\\)/g;function V(e){if(p.dom(e)){for(var t,n=e.style.transform||\"\",i=new Map;t=H.exec(n);)i.set(t[1],t[2]);return i}}function W(e,t,n,i){switch(z(e,t)){case\"transform\":return function(e,t,n,i){var r=l(t,\"scale\")?1:0+function(e){return l(e,\"translate\")||\"perspective\"===e?\"px\":l(e,\"rotate\")||l(e,\"skew\")?\"deg\":void 0}(t),s=V(e).get(t)||r;return n&&(n.transforms.list.set(t,s),n.transforms.last=t),i?N(e,s,i):s}(e,t,i,n);case\"css\":return G(e,t,n);case\"attribute\":return U(e,t);default:return e[t]||0}}var j=/^(\\*=|\\+=|-=)/;function q(e,t){var n=j.exec(e);if(!n)return e;var i=O(e)||0,r=parseFloat(t),s=parseFloat(e.replace(n[0],\"\"));switch(n[0][0]){case\"+\":return r+s+i;case\"-\":return r-s+i;case\"*\":return r*s+i}}var Y=/\\s/g;function X(e,t){if(p.col(e))return function(e){return p.rgb(e)?(t=e,(n=L.exec(t))?\"rgba(\"+n[1]+\",1)\":t):p.hex(e)?function(e){var t=e.replace(D,(function(e,t,n,i){return t+t+n+n+i+i})),n=R.exec(t);return\"rgba(\"+parseInt(n[1],16)+\",\"+parseInt(n[2],16)+\",\"+parseInt(n[3],16)+\",1)\"}(e):p.hsl(e)?function(e){var t,n,i,r=P.exec(e)||k.exec(e),s=parseInt(r[1],10)/360,o=parseInt(r[2],10)/100,a=parseInt(r[3],10)/100,l=r[4]||1;function c(e,t,n){return n\u003C0&&(n+=1),n>1&&(n-=1),n\u003C1/6?e+6*(t-e)*n:n\u003C.5?t:n\u003C2/3?e+(t-e)*(2/3-n)*6:e}if(0==o)t=n=i=a;else{var h=a\u003C.5?a*(1+o):a+o-a*o,u=2*a-h;t=c(u,h,s+1/3),n=c(u,h,s),i=c(u,h,s-1/3)}return\"rgba(\"+255*t+\",\"+255*n+\",\"+255*i+\",\"+l+\")\"}(e):void 0;var t,n}(e);var n=O(e),i=n?e.substr(0,e.length-n.length):e;return t&&!Y.test(e)?i+t:i}function J(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function K(e){for(var t,n=e.points,i=0,r=0;r\u003Cn.numberOfItems;r++){var s=n.getItem(r);r>0&&(i+=J(t,s)),t=s}return i}function Z(e){if(e.getTotalLength)return e.getTotalLength();switch(e.tagName.toLowerCase()){case\"circle\":return function(e){return 2*Math.PI*U(e,\"r\")}(e);case\"rect\":return function(e){return 2*U(e,\"width\")+2*U(e,\"height\")}(e);case\"line\":return function(e){return J({x:U(e,\"x1\"),y:U(e,\"y1\")},{x:U(e,\"x2\"),y:U(e,\"y2\")})}(e);case\"polyline\":return K(e);case\"polygon\":return function(e){var t=e.points;return K(e)+J(t.getItem(t.numberOfItems-1),t.getItem(0))}(e)}}function $(e,t){var n=t||{},i=n.el||function(e){for(var t=e.parentNode;p.svg(t)&&(t=t.parentNode,p.svg(t.parentNode)););return t}(e),r=i.getBoundingClientRect(),s=U(i,\"viewBox\"),o=r.width,a=r.height,l=n.viewBox||(s?s.split(\" \"):[0,0,o,a]);return{el:i,viewBox:l,x:l[0]/1,y:l[1]/1,w:o/l[2],h:a/l[3]}}function ee(e,t){function n(n){void 0===n&&(n=0);var i=t+n>=1?t+n:0;return e.el.getPointAtLength(i)}var i=$(e.el,e.svg),r=n(),s=n(-1),o=n(1);switch(e.property){case\"x\":return(r.x-i.x)*i.w;case\"y\":return(r.y-i.y)*i.h;case\"angle\":return 180*Math.atan2(o.y-s.y,o.x-s.x)/Math.PI}}var te=/-?\\d*\\.?\\d+/g;function ne(e,t){var n=X(p.pth(e)?e.totalLength:e,t)+\"\";return{original:n,numbers:n.match(te)?n.match(te).map(Number):[0],strings:p.str(e)||t?n.split(te):[]}}function ie(e){return C(e?M(p.arr(e)?e.map(_):_(e)):[],(function(e,t,n){return n.indexOf(e)===t}))}function re(e){var t=ie(e);return t.map((function(e,n){return{target:e,id:n,total:t.length,transforms:{list:V(e)}}}))}var se=/^spring/;function oe(e,t){var n=B(t);if(se.test(n.easing)&&(n.duration=m(n.easing)),p.arr(e)){var i=e.length;2!==i||p.obj(e[0])?p.fnc(t.duration)||(n.duration=t.duration/i):e={value:e}}var r=p.arr(e)?e:[e];return r.map((function(e,n){var i=p.obj(e)&&!p.pth(e)?e:{value:e};return p.und(i.delay)&&(i.delay=n?0:t.delay),p.und(i.endDelay)&&(i.endDelay=n===r.length-1?t.endDelay:0),i})).map((function(e){return T(e,n)}))}var ae={css:function(e,t,n){return e.style[t]=n},attribute:function(e,t,n){return e.setAttribute(t,n)},object:function(e,t,n){return e[t]=n},transform:function(e,t,n,i,r){if(i.list.set(t,n),t===i.last||r){var s=\"\";i.list.forEach((function(e,t){s+=t+\"(\"+e+\") \"})),e.style.transform=s}}};function le(e,t){for(var n=re(e),i=0,r=n.length;i\u003Cr;i++){var s=n[i];for(var o in t){var a=Q(t[o],s),l=s.target,c=O(a),h=W(l,o,c,s),u=q(X(a,c||O(h)),h),d=z(l,o);ae[d](l,o,u,s.transforms,!0)}}}function ce(e,t){return C(M(e.map((function(e){return t.map((function(t){return function(e,t){var n=z(e.target,t.name);if(n){var i=function(e,t){var n;return e.tweens.map((function(i){var r=function(e,t){var n={};for(var i in e){var r=Q(e[i],t);p.arr(r)&&1===(r=r.map((function(e){return Q(e,t)}))).length&&(r=r[0]),n[i]=r}return n.duration=parseFloat(n.duration),n.delay=parseFloat(n.delay),n}(i,t),s=r.value,o=p.arr(s)?s[1]:s,a=O(o),l=W(t.target,e.name,a,t),c=n?n.to.original:l,h=p.arr(s)?s[0]:c,u=O(h)||O(l),d=a||u;return p.und(o)&&(o=c),r.from=ne(h,d),r.to=ne(q(o,h),d),r.start=n?n.end:0,r.end=r.start+r.delay+r.duration+r.endDelay,r.easing=b(r.easing,r.duration),r.isPath=p.pth(s),r.isColor=p.col(r.from.original),r.isColor&&(r.round=1),n=r,r}))}(t,e),r=i[i.length-1];return{type:n,property:t.name,animatable:e,tweens:i,duration:r.end,delay:i[0].delay,endDelay:r.endDelay}}}(e,t)}))}))),(function(e){return!p.und(e)}))}function he(e,t){var n=e.length,i=function(e){return e.timelineOffset?e.timelineOffset:0},r={};return r.duration=n?Math.max.apply(Math,e.map((function(e){return i(e)+e.duration}))):t.duration,r.delay=n?Math.min.apply(Math,e.map((function(e){return i(e)+e.delay}))):t.delay,r.endDelay=n?r.duration-Math.max.apply(Math,e.map((function(e){return i(e)+e.duration-e.endDelay}))):t.endDelay,r}var ue,de=0,pe=[],Ae=[],fe=function(){function e(){ue=requestAnimationFrame(t)}function t(t){var n=pe.length;if(n){for(var i=0;i\u003Cn;){var r=pe[i];if(r.paused){var s=pe.indexOf(r);s>-1&&(pe.splice(s,1),n=pe.length)}else r.tick(t);i++}e()}else ue=cancelAnimationFrame(ue)}return e}();function me(e){void 0===e&&(e={});var t,n=0,s=0,o=0,l=0,c=null;function h(){return window.Promise&&new Promise((function(e){return c=e}))}var u=h(),d=function(e){var t=S(i,e),n=S(r,e),s=function(e,t){var n=[],i=t.keyframes;for(var r in i&&(t=T(function(e){for(var t=C(M(e.map((function(e){return Object.keys(e)}))),(function(e){return p.key(e)})).reduce((function(e,t){return e.indexOf(t)\u003C0&&e.push(t),e}),[]),n={},i=function(i){var r=t[i];n[r]=e.map((function(e){var t={};for(var n in e)p.key(n)?n==r&&(t.value=e[n]):t[n]=e[n];return t}))},r=0;r\u003Ct.length;r++)i(r);return n}(i),t)),t)p.key(r)&&n.push({name:r,tweens:oe(t[r],e)});return n}(n,e),o=re(e.targets),a=ce(o,s),l=he(a,n),c=de;return de++,T(t,{id:c,children:[],animatables:o,animations:a,duration:l.duration,delay:l.delay,endDelay:l.endDelay})}(e);function A(){d.reversed=!d.reversed;for(var e=0,n=t.length;e\u003Cn;e++)t[e].reversed=d.reversed}function f(e){return d.reversed?d.duration-e:e}function m(){n=0,s=f(d.currentTime)*(1/me.speed)}function g(e,t){t&&t.seek(e-t.timelineOffset)}function v(e){for(var t=0,n=d.animations,i=n.length;t\u003Ci;){var r=n[t],s=r.animatable,o=r.tweens,l=o.length-1,c=o[l];l&&(c=C(o,(function(t){return e\u003Ct.end}))[0]||c);for(var h=a(e-c.start-c.delay,0,c.duration)/c.duration,u=isNaN(h)?1:c.easing(h),p=c.to.strings,A=c.round,f=[],m=c.to.numbers.length,g=void 0,v=0;v\u003Cm;v++){var y=void 0,E=c.to.numbers[v],b=c.from.numbers[v]||0;y=c.isPath?ee(c.value,u*E):b+u*(E-b),A&&(c.isColor&&v>2||(y=Math.round(y*A)/A)),f.push(y)}var x=p.length;if(x){g=p[0];for(var w=0;w\u003Cx;w++){p[w];var M=p[w+1],_=f[w];isNaN(_)||(g+=M?_+M:_+\" \")}}else g=f[0];ae[r.type](s.target,r.property,g,s.transforms),r.currentValue=g,t++}}function y(e){d[e]&&!d.passThrough&&d[e](d)}function E(e){var i=d.duration,r=d.delay,p=i-d.endDelay,m=f(e);d.progress=a(m/i*100,0,100),d.reversePlayback=m\u003Cd.currentTime,t&&function(e){if(d.reversePlayback)for(var n=l;n--;)g(e,t[n]);else for(var i=0;i\u003Cl;i++)g(e,t[i])}(m),!d.began&&d.currentTime>0&&(d.began=!0,y(\"begin\"),y(\"loopBegin\")),m\u003C=r&&0!==d.currentTime&&v(0),(m>=p&&d.currentTime!==i||!i)&&v(i),m>r&&m\u003Cp?(d.changeBegan||(d.changeBegan=!0,d.changeCompleted=!1,y(\"changeBegin\")),y(\"change\"),v(m)):d.changeBegan&&(d.changeCompleted=!0,d.changeBegan=!1,y(\"changeComplete\")),d.currentTime=a(m,0,i),d.began&&y(\"update\"),e>=i&&(s=0,d.remaining&&!0!==d.remaining&&d.remaining--,d.remaining?(n=o,y(\"loopComplete\"),y(\"loopBegin\"),\"alternate\"===d.direction&&A()):(d.paused=!0,d.completed||(d.completed=!0,y(\"loopComplete\"),y(\"complete\"),\"Promise\"in window&&(c(),u=h()))))}return d.reset=function(){var e=d.direction;d.passThrough=!1,d.currentTime=0,d.progress=0,d.paused=!0,d.began=!1,d.changeBegan=!1,d.completed=!1,d.changeCompleted=!1,d.reversePlayback=!1,d.reversed=\"reverse\"===e,d.remaining=d.loop,t=d.children;for(var n=l=t.length;n--;)d.children[n].reset();(d.reversed&&!0!==d.loop||\"alternate\"===e&&1===d.loop)&&d.remaining++,v(0)},d.set=function(e,t){return le(e,t),d},d.tick=function(e){o=e,n||(n=o),E((o+(s-n))*me.speed)},d.seek=function(e){E(f(e))},d.pause=function(){d.paused=!0,m()},d.play=function(){d.paused&&(d.paused=!1,pe.push(d),m(),ue||fe())},d.reverse=function(){A(),m()},d.restart=function(){d.reset(),d.play()},d.finished=u,d.reset(),d.autoplay&&d.play(),d}function ge(e,t){for(var n=t.length;n--;)I(e,t[n].animatable.target)&&t.splice(n,1)}document.addEventListener(\"visibilitychange\",(function(){if(document.hidden){for(var e=0,t=pe.length;e\u003Ct;e++)activeInstance[e].pause();Ae=pe.slice(0),pe=[]}else for(var n=0,i=Ae.length;n\u003Ci;n++)Ae[n].play()})),me.version=\"3.0.0\",me.speed=1,me.running=pe,me.remove=function(e){for(var t=ie(e),n=pe.length;n--;){var i=pe[n],r=i.animations,s=i.children;ge(t,r);for(var o=s.length;o--;){var a=s[o],l=a.animations;ge(t,l),l.length||a.children.length||s.splice(o,1)}r.length||s.length||i.pause()}},me.get=W,me.set=le,me.convertPx=N,me.path=function(e,t){var n=p.str(e)?x(e)[0]:e,i=t||100;return function(e){return{property:e,el:n,svg:$(n),totalLength:Z(n)*(i/100)}}},me.setDashoffset=function(e){var t=Z(e);return e.setAttribute(\"stroke-dasharray\",t),t},me.stagger=function(e,t){void 0===t&&(t={});var n=t.direction||\"normal\",i=t.easing?b(t.easing):null,r=t.grid,s=t.axis,o=t.from||0,a=\"first\"===o,l=\"center\"===o,c=\"last\"===o,h=p.arr(e),u=h?parseFloat(e[0]):parseFloat(e),d=h?parseFloat(e[1]):0,A=O(h?e[1]:e)||0,f=t.start||0+(h?u:0),m=[],g=0;return function(e,t,p){if(a&&(o=0),l&&(o=(p-1)/2),c&&(o=p-1),!m.length){for(var v=0;v\u003Cp;v++){if(r){var y=l?(r[0]-1)/2:o%r[0],E=l?(r[1]-1)/2:Math.floor(o/r[0]),b=y-v%r[0],x=E-Math.floor(v/r[0]),w=Math.sqrt(b*b+x*x);\"x\"===s&&(w=-b),\"y\"===s&&(w=-x),m.push(w)}else m.push(Math.abs(o-v));g=Math.max.apply(Math,m)}i&&(m=m.map((function(e){return i(e/g)*g}))),\"reverse\"===n&&(m=m.map((function(e){return s?e\u003C0?-1*e:-e:Math.abs(g-e)})))}return f+(h?(d-u)/g:u)*(Math.round(100*m[t])/100)+A}},me.timeline=function(e){void 0===e&&(e={});var t=me(e);return t.duration=0,t.add=function(n,i){var s=pe.indexOf(t),o=t.children;function a(e){e.passThrough=!0}s>-1&&pe.splice(s,1);for(var l=0;l\u003Co.length;l++)a(o[l]);var c=T(n,S(r,e));c.targets=c.targets||e.targets;var h=t.duration;c.autoplay=!1,c.direction=t.direction,c.timelineOffset=p.und(i)?h:q(i,h),a(t),t.seek(c.timelineOffset);var u=me(c);a(u),o.push(u);var d=he(o,e);return t.delay=d.delay,t.endDelay=d.endDelay,t.duration=d.duration,t.seek(0),t.reset(),t.autoplay&&t.play(),t},t},me.easing=b,me.penner=E,me.random=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};const ve=me},6559:(e,t,n)=>{var i=n(7510),r=(n(5153),n(4502)),s=n(9154),o=n(7347),a=n(83),l=n(2259);e.exports=function(e){return new c(e)};class c extends THREE.BufferGeometry{constructor(e){super(),\"string\"==typeof e&&(e={text:e}),this._opt=o({},e),e&&this.update(e)}update(e){if(\"string\"==typeof e&&(e={text:e}),!(e=o({},this._opt,e)).font)throw new TypeError(\"must specify a { font } in options\");this.layout=i(e);var t=!1!==e.flipY,n=e.font,l=n.common.scaleW,c=n.common.scaleH,h=this.layout.glyphs.filter((function(e){var t=e.data;return t.width*t.height>0}));this.visibleGlyphs=h;var u=a.positions(h),d=a.uvs(h,l,c,t),p=r({clockwise:!0,type:\"uint16\",count:h.length});if(s.index(this,p,1,\"uint16\"),s.attr(this,\"position\",u,2),s.attr(this,\"uv\",d,2),!e.multipage&&\"page\"in this.attributes)this.removeAttribute(\"page\");else if(e.multipage){var A=a.pages(h);s.attr(this,\"page\",A,1)}}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere);var e=this.attributes.position.array,t=this.attributes.position.itemSize;if(!e||!t||e.length\u003C2)return this.boundingSphere.radius=0,void this.boundingSphere.center.set(0,0,0);l.computeSphere(e,this.boundingSphere),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.')}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new THREE.Box3);var e=this.boundingBox,t=this.attributes.position.array,n=this.attributes.position.itemSize;!t||!n||t.length\u003C2?e.makeEmpty():l.computeBox(t,e)}}},2259:e=>{var t={min:[0,0],max:[0,0]};function n(e){var n=e.length/2;t.min[0]=e[0],t.min[1]=e[1],t.max[0]=e[0],t.max[1]=e[1];for(var i=0;i\u003Cn;i++){var r=e[2*i+0],s=e[2*i+1];t.min[0]=Math.min(r,t.min[0]),t.min[1]=Math.min(s,t.min[1]),t.max[0]=Math.max(r,t.max[0]),t.max[1]=Math.max(s,t.max[1])}}e.exports.computeBox=function(e,i){n(e),i.min.set(t.min[0],t.min[1],0),i.max.set(t.max[0],t.max[1],0)},e.exports.computeSphere=function(e,i){n(e);var r=t.min[0],s=t.min[1],o=t.max[0]-r,a=t.max[1]-s,l=Math.sqrt(o*o+a*a);i.center.set(r+o/2,s+a/2,0),i.radius=l/2}},83:e=>{e.exports.pages=function(e){var t=new Float32Array(4*e.length*1),n=0;return e.forEach((function(e){var i=e.data.page||0;t[n++]=i,t[n++]=i,t[n++]=i,t[n++]=i})),t},e.exports.uvs=function(e,t,n,i){var r=new Float32Array(4*e.length*2),s=0;return e.forEach((function(e){var o=e.data,a=o.x+o.width,l=o.y+o.height,c=o.x/t,h=o.y/n,u=a/t,d=l/n;i&&(h=(n-o.y)/n,d=(n-l)/n),r[s++]=c,r[s++]=h,r[s++]=c,r[s++]=d,r[s++]=u,r[s++]=d,r[s++]=u,r[s++]=h})),r},e.exports.positions=function(e){var t=new Float32Array(4*e.length*2),n=0;return e.forEach((function(e){var i=e.data,r=e.position[0]+i.xoffset,s=e.position[1]+i.yoffset,o=i.width,a=i.height;t[n++]=r,t[n++]=s,t[n++]=r,t[n++]=s+a,t[n++]=r+o,t[n++]=s+a,t[n++]=r+o,t[n++]=s})),t}},9154:(e,t,n)=>{var i=n(9651);function r(e,t,n,r){return t=i(t=t||[],r),(e=new THREE.BufferAttribute(t,n)).itemSize=n,e.needsUpdate=!0,e}e.exports.attr=function(e,t,n,i,s){if(\"number\"!=typeof i&&(i=3),\"string\"!=typeof s&&(s=\"float32\"),Array.isArray(n)&&Array.isArray(n[0])&&n[0].length!==i)throw new Error(\"Nested vertex array has unexpected size; expected \"+i+\" but found \"+n[0].length);var o=r(e.getAttribute(t),n,i,s);e.setAttribute(t,o)},e.exports.index=function(e,t,n,i){\"number\"!=typeof n&&(n=1),\"string\"!=typeof i&&(i=\"uint16\");var s=!e.index&&\"function\"!=typeof e.setIndex,o=r(s?e.getAttribute(\"index\"):e.index,t,n,i);o&&(s?e.addAttribute(\"index\",o):e.index=o)}},5542:function(e,t,n){e.exports=function(){\"use strict\";var e=\"undefined\"!=typeof window?window:void 0!==n.g?n.g:\"undefined\"!=typeof self?self:{};var t,i=function(){return/Android/i.test(navigator.userAgent)||/iPhone|iPad|iPod/i.test(navigator.userAgent)},r=function(e,t){for(var n=0,i=e.length;n\u003Ci;n++)t[n]=e[n]},s=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},o=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(t,n){t.exports=function(){var t,n,i,r=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")},s=function(){function e(e,t){for(var n=0;n\u003Ct.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=function(){function e(e,t){var n=[],i=!0,r=!1,s=void 0;try{for(var o,a=e[Symbol.iterator]();!(i=(o=a.next()).done)&&(n.push(o.value),!t||n.length!==t);i=!0);}catch(e){r=!0,s=e}finally{try{!i&&a.return&&a.return()}finally{if(r)throw s}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),a=.001,l=1,c=function(e,t){return\"data:\"+e+\",\"+encodeURIComponent(t)},h=function(e,t,n){return e+(t-e)*n},u=function(){var e=/iPad|iPhone|iPod/.test(navigator.platform);return function(){return e}}(),d=function(){var e=-1!==navigator.userAgent.indexOf(\"Version\")&&-1!==navigator.userAgent.indexOf(\"Android\")&&-1!==navigator.userAgent.indexOf(\"Chrome\");return function(){return e}}(),p=function(){var e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);return function(){return e}}(),A=function(){var e=-1!==navigator.userAgent.indexOf(\"Firefox\")&&-1!==navigator.userAgent.indexOf(\"Android\");return function(){return e}}(),f=(t=navigator.userAgent.match(/.*Chrome\\/([0-9]+)/),n=t?parseInt(t[1],10):null,function(){return n}),m=function(){var e=!1;return e=u()&&p()&&-1!==navigator.userAgent.indexOf(\"13_4\"),function(){return e}}(),g=function(){var e=!1;if(65===f()){var t=navigator.userAgent.match(/.*Chrome\\/([0-9\\.]*)/);if(t){var n=t[1].split(\".\"),i=o(n,4),r=(i[0],i[1],i[2]),s=i[3];e=3325===parseInt(r,10)&&parseInt(s,10)\u003C148}}return function(){return e}}(),v=function(){var e=-1!==navigator.userAgent.indexOf(\"R7 Build\");return function(){return e}}(),y=function(){var e=90==window.orientation||-90==window.orientation;return v()?!e:e},E=function(e){return!(isNaN(e)||e\u003C=a||e>l)},b=function(){return Math.max(window.screen.width,window.screen.height)*window.devicePixelRatio},x=function(){return Math.min(window.screen.width,window.screen.height)*window.devicePixelRatio},w=function(e){if(d())return!1;if(e.requestFullscreen)e.requestFullscreen();else if(e.webkitRequestFullscreen)e.webkitRequestFullscreen();else if(e.mozRequestFullScreen)e.mozRequestFullScreen();else{if(!e.msRequestFullscreen)return!1;e.msRequestFullscreen()}return!0},C=function(){if(document.exitFullscreen)document.exitFullscreen();else if(document.webkitExitFullscreen)document.webkitExitFullscreen();else if(document.mozCancelFullScreen)document.mozCancelFullScreen();else{if(!document.msExitFullscreen)return!1;document.msExitFullscreen()}return!0},M=function(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement},_=function(e,t,n,i){var r=e.createShader(e.VERTEX_SHADER);e.shaderSource(r,t),e.compileShader(r);var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,n),e.compileShader(s);var o=e.createProgram();for(var a in e.attachShader(o,r),e.attachShader(o,s),i)e.bindAttribLocation(o,i[a],a);return e.linkProgram(o),e.deleteShader(r),e.deleteShader(s),o},I=function(e,t){for(var n={},i=e.getProgramParameter(t,e.ACTIVE_UNIFORMS),r=\"\",s=0;s\u003Ci;s++)n[r=e.getActiveUniform(t,s).name.replace(\"[0]\",\"\")]=e.getUniformLocation(t,r);return n},B=function(e,t,n,i,r,s,o){var a=1/(t-n),l=1/(i-r),c=1/(s-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*a,e[13]=(r+i)*l,e[14]=(o+s)*c,e[15]=1,e},S=function(){var e,t=!1;return e=navigator.userAgent||navigator.vendor||window.opera,(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(e.substr(0,4)))&&(t=!0),t},T=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},L=function(e){if(u()){var t=e.style.width,n=e.style.height;e.style.width=parseInt(t)+1+\"px\",e.style.height=parseInt(n)+\"px\",setTimeout((function(){e.style.width=t,e.style.height=n}),100)}window.canvas=e},D=function(){var e=Math.PI/180,t=.25*Math.PI;function n(n,i,r,s){var o=Math.tan(i?i.upDegrees*e:t),a=Math.tan(i?i.downDegrees*e:t),l=Math.tan(i?i.leftDegrees*e:t),c=Math.tan(i?i.rightDegrees*e:t),h=2/(l+c),u=2/(o+a);return n[0]=h,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=u,n[6]=0,n[7]=0,n[8]=-(l-c)*h*.5,n[9]=(o-a)*u*.5,n[10]=s/(r-s),n[11]=-1,n[12]=0,n[13]=0,n[14]=s*r/(r-s),n[15]=0,n}function i(e,t,n){var i=t[0],r=t[1],s=t[2],o=t[3],a=i+i,l=r+r,c=s+s,h=i*a,u=i*l,d=i*c,p=r*l,A=r*c,f=s*c,m=o*a,g=o*l,v=o*c;return e[0]=1-(p+f),e[1]=u+v,e[2]=d-g,e[3]=0,e[4]=u-v,e[5]=1-(h+f),e[6]=A+m,e[7]=0,e[8]=d+g,e[9]=A-m,e[10]=1-(h+p),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function r(e,t,n){var i,r,s,o,a,l,c,h,u,d,p,A,f=n[0],m=n[1],g=n[2];return t===e?(e[12]=t[0]*f+t[4]*m+t[8]*g+t[12],e[13]=t[1]*f+t[5]*m+t[9]*g+t[13],e[14]=t[2]*f+t[6]*m+t[10]*g+t[14],e[15]=t[3]*f+t[7]*m+t[11]*g+t[15]):(i=t[0],r=t[1],s=t[2],o=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=t[9],p=t[10],A=t[11],e[0]=i,e[1]=r,e[2]=s,e[3]=o,e[4]=a,e[5]=l,e[6]=c,e[7]=h,e[8]=u,e[9]=d,e[10]=p,e[11]=A,e[12]=i*f+a*m+u*g+t[12],e[13]=r*f+l*m+d*g+t[13],e[14]=s*f+c*m+p*g+t[14],e[15]=o*f+h*m+A*g+t[15]),e}function s(e,t){var n=t[0],i=t[1],r=t[2],s=t[3],o=t[4],a=t[5],l=t[6],c=t[7],h=t[8],u=t[9],d=t[10],p=t[11],A=t[12],f=t[13],m=t[14],g=t[15],v=n*a-i*o,y=n*l-r*o,E=n*c-s*o,b=i*l-r*a,x=i*c-s*a,w=r*c-s*l,C=h*f-u*A,M=h*m-d*A,_=h*g-p*A,I=u*m-d*f,B=u*g-p*f,S=d*g-p*m,T=v*S-y*B+E*I+b*_-x*M+w*C;return T?(T=1/T,e[0]=(a*S-l*B+c*I)*T,e[1]=(r*B-i*S-s*I)*T,e[2]=(f*w-m*x+g*b)*T,e[3]=(d*x-u*w-p*b)*T,e[4]=(l*_-o*S-c*M)*T,e[5]=(n*S-r*_+s*M)*T,e[6]=(m*E-A*w-g*y)*T,e[7]=(h*w-d*E+p*y)*T,e[8]=(o*B-a*_+c*C)*T,e[9]=(i*_-n*B-s*C)*T,e[10]=(A*x-f*E+g*v)*T,e[11]=(u*E-h*x-p*v)*T,e[12]=(a*M-o*I-l*C)*T,e[13]=(n*I-i*M+r*C)*T,e[14]=(f*y-A*b-m*v)*T,e[15]=(h*b-u*y+d*v)*T,e):null}var o=new Float32Array([0,0,0,1]),a=new Float32Array([0,0,0]);function l(e,t,l,c,h,u){n(e,c||null,u.depthNear,u.depthFar),i(t,l.orientation||o,l.position||a),h&&r(t,t,h),s(t,t)}return function(e,t,n){return!(!e||!t||(e.pose=t,e.timestamp=t.timestamp,l(e.leftProjectionMatrix,e.leftViewMatrix,t,n._getFieldOfView(\"left\"),n._getEyeOffset(\"left\"),n),l(e.rightProjectionMatrix,e.rightViewMatrix,t,n._getFieldOfView(\"right\"),n._getEyeOffset(\"right\"),n),0))}}(),R=function(){var e=window.self!==window.top,t=P(document.referrer),n=P(window.location.href);return e&&t!==n},P=function(e){var t,n=e.indexOf(\"://\");t=-1!==n?n+3:0;var i=e.indexOf(\"/\",t);return-1===i&&(i=e.length),e.substring(0,i)},k=function(e){return e.w>1?(console.warn(\"getQuaternionAngle: w > 1\"),0):2*Math.acos(e.w)},F=(i={},function(e,t){void 0===i[e]&&(console.warn(\"webvr-polyfill: \"+t),i[e]=!0)}),O=function(e,t){F(e,e+\" has been deprecated. This may not work on native WebVR displays. \"+(t?\"Please use \"+t+\" instead.\":\"\"))};function Q(e,t,n){if(t){for(var i=[],r=null,s=0;s\u003Ct.length;++s)switch(o=t[s]){case e.TEXTURE_BINDING_2D:case e.TEXTURE_BINDING_CUBE_MAP:if((l=t[++s])\u003Ce.TEXTURE0||l>e.TEXTURE31){console.error(\"TEXTURE_BINDING_2D or TEXTURE_BINDING_CUBE_MAP must be followed by a valid texture unit\"),i.push(null,null);break}r||(r=e.getParameter(e.ACTIVE_TEXTURE)),e.activeTexture(l),i.push(e.getParameter(o),null);break;case e.ACTIVE_TEXTURE:r=e.getParameter(e.ACTIVE_TEXTURE),i.push(null);break;default:i.push(e.getParameter(o))}for(n(e),s=0;s\u003Ct.length;++s){var o=t[s],a=i[s];switch(o){case e.ACTIVE_TEXTURE:break;case e.ARRAY_BUFFER_BINDING:e.bindBuffer(e.ARRAY_BUFFER,a);break;case e.COLOR_CLEAR_VALUE:e.clearColor(a[0],a[1],a[2],a[3]);break;case e.COLOR_WRITEMASK:e.colorMask(a[0],a[1],a[2],a[3]);break;case e.CURRENT_PROGRAM:e.useProgram(a);break;case e.ELEMENT_ARRAY_BUFFER_BINDING:e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a);break;case e.FRAMEBUFFER_BINDING:e.bindFramebuffer(e.FRAMEBUFFER,a);break;case e.RENDERBUFFER_BINDING:e.bindRenderbuffer(e.RENDERBUFFER,a);break;case e.TEXTURE_BINDING_2D:if((l=t[++s])\u003Ce.TEXTURE0||l>e.TEXTURE31)break;e.activeTexture(l),e.bindTexture(e.TEXTURE_2D,a);break;case e.TEXTURE_BINDING_CUBE_MAP:var l;if((l=t[++s])\u003Ce.TEXTURE0||l>e.TEXTURE31)break;e.activeTexture(l),e.bindTexture(e.TEXTURE_CUBE_MAP,a);break;case e.VIEWPORT:e.viewport(a[0],a[1],a[2],a[3]);break;case e.BLEND:case e.CULL_FACE:case e.DEPTH_TEST:case e.SCISSOR_TEST:case e.STENCIL_TEST:a?e.enable(o):e.disable(o);break;default:console.log(\"No GL restore behavior for 0x\"+o.toString(16))}r&&e.activeTexture(r)}}else n(e)}var U=Q,N=[\"attribute vec2 position;\",\"attribute vec3 texCoord;\",\"varying vec2 vTexCoord;\",\"uniform vec4 viewportOffsetScale[2];\",\"void main() {\",\" vec4 viewport = viewportOffsetScale[int(texCoord.z)];\",\" vTexCoord = (texCoord.xy * viewport.zw) + viewport.xy;\",\" gl_Position = vec4( position, 1.0, 1.0 );\",\"}\"].join(\"\\n\"),G=[\"precision mediump float;\",\"uniform sampler2D diffuse;\",\"varying vec2 vTexCoord;\",\"void main() {\",\" gl_FragColor = texture2D(diffuse, vTexCoord);\",\"}\"].join(\"\\n\");function z(e,t,n,i){this.gl=e,this.cardboardUI=t,this.bufferScale=n,this.dirtySubmitFrameBindings=i,this.ctxAttribs=e.getContextAttributes(),this.instanceExt=e.getExtension(\"ANGLE_instanced_arrays\"),this.meshWidth=20,this.meshHeight=20,this.bufferWidth=e.drawingBufferWidth,this.bufferHeight=e.drawingBufferHeight,this.realBindFramebuffer=e.bindFramebuffer,this.realEnable=e.enable,this.realDisable=e.disable,this.realColorMask=e.colorMask,this.realClearColor=e.clearColor,this.realViewport=e.viewport,u()||(this.realCanvasWidth=Object.getOwnPropertyDescriptor(e.canvas.__proto__,\"width\"),this.realCanvasHeight=Object.getOwnPropertyDescriptor(e.canvas.__proto__,\"height\")),this.isPatched=!1,this.lastBoundFramebuffer=null,this.cullFace=!1,this.depthTest=!1,this.blend=!1,this.scissorTest=!1,this.stencilTest=!1,this.viewport=[0,0,0,0],this.colorMask=[!0,!0,!0,!0],this.clearColor=[0,0,0,0],this.attribs={position:0,texCoord:1},this.program=_(e,N,G,this.attribs),this.uniforms=I(e,this.program),this.viewportOffsetScale=new Float32Array(8),this.setTextureBounds(),this.vertexBuffer=e.createBuffer(),this.indexBuffer=e.createBuffer(),this.indexCount=0,this.renderTarget=e.createTexture(),this.framebuffer=e.createFramebuffer(),this.depthStencilBuffer=null,this.depthBuffer=null,this.stencilBuffer=null,this.ctxAttribs.depth&&this.ctxAttribs.stencil?this.depthStencilBuffer=e.createRenderbuffer():this.ctxAttribs.depth?this.depthBuffer=e.createRenderbuffer():this.ctxAttribs.stencil&&(this.stencilBuffer=e.createRenderbuffer()),this.patch(),this.onResize()}z.prototype.destroy=function(){var e=this.gl;this.unpatch(),e.deleteProgram(this.program),e.deleteBuffer(this.vertexBuffer),e.deleteBuffer(this.indexBuffer),e.deleteTexture(this.renderTarget),e.deleteFramebuffer(this.framebuffer),this.depthStencilBuffer&&e.deleteRenderbuffer(this.depthStencilBuffer),this.depthBuffer&&e.deleteRenderbuffer(this.depthBuffer),this.stencilBuffer&&e.deleteRenderbuffer(this.stencilBuffer),this.cardboardUI&&this.cardboardUI.destroy()},z.prototype.onResize=function(){var e=this.gl,t=this,n=[e.RENDERBUFFER_BINDING,e.TEXTURE_BINDING_2D,e.TEXTURE0];U(e,n,(function(e){t.realBindFramebuffer.call(e,e.FRAMEBUFFER,null),t.scissorTest&&t.realDisable.call(e,e.SCISSOR_TEST),t.realColorMask.call(e,!0,!0,!0,!0),t.realViewport.call(e,0,0,e.drawingBufferWidth,e.drawingBufferHeight),t.realClearColor.call(e,0,0,0,1),e.clear(e.COLOR_BUFFER_BIT),t.realBindFramebuffer.call(e,e.FRAMEBUFFER,t.framebuffer),e.bindTexture(e.TEXTURE_2D,t.renderTarget),e.texImage2D(e.TEXTURE_2D,0,t.ctxAttribs.alpha?e.RGBA:e.RGB,t.bufferWidth,t.bufferHeight,0,t.ctxAttribs.alpha?e.RGBA:e.RGB,e.UNSIGNED_BYTE,null),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t.renderTarget,0),t.ctxAttribs.depth&&t.ctxAttribs.stencil?(e.bindRenderbuffer(e.RENDERBUFFER,t.depthStencilBuffer),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,t.bufferWidth,t.bufferHeight),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,t.depthStencilBuffer)):t.ctxAttribs.depth?(e.bindRenderbuffer(e.RENDERBUFFER,t.depthBuffer),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,t.bufferWidth,t.bufferHeight),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t.depthBuffer)):t.ctxAttribs.stencil&&(e.bindRenderbuffer(e.RENDERBUFFER,t.stencilBuffer),e.renderbufferStorage(e.RENDERBUFFER,e.STENCIL_INDEX8,t.bufferWidth,t.bufferHeight),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.STENCIL_ATTACHMENT,e.RENDERBUFFER,t.stencilBuffer)),!e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE&&console.error(\"Framebuffer incomplete!\"),t.realBindFramebuffer.call(e,e.FRAMEBUFFER,t.lastBoundFramebuffer),t.scissorTest&&t.realEnable.call(e,e.SCISSOR_TEST),t.realColorMask.apply(e,t.colorMask),t.realViewport.apply(e,t.viewport),t.realClearColor.apply(e,t.clearColor)})),this.cardboardUI&&this.cardboardUI.onResize()},z.prototype.patch=function(){if(!this.isPatched){var e=this,t=this.gl.canvas,n=this.gl;u()||(t.width=b()*this.bufferScale,t.height=x()*this.bufferScale,Object.defineProperty(t,\"width\",{configurable:!0,enumerable:!0,get:function(){return e.bufferWidth},set:function(n){e.bufferWidth=n,e.realCanvasWidth.set.call(t,n),e.onResize()}}),Object.defineProperty(t,\"height\",{configurable:!0,enumerable:!0,get:function(){return e.bufferHeight},set:function(n){e.bufferHeight=n,e.realCanvasHeight.set.call(t,n),e.onResize()}})),this.lastBoundFramebuffer=n.getParameter(n.FRAMEBUFFER_BINDING),null==this.lastBoundFramebuffer&&(this.lastBoundFramebuffer=this.framebuffer,this.gl.bindFramebuffer(n.FRAMEBUFFER,this.framebuffer)),this.gl.bindFramebuffer=function(t,i){e.lastBoundFramebuffer=i||e.framebuffer,e.realBindFramebuffer.call(n,t,e.lastBoundFramebuffer)},this.cullFace=n.getParameter(n.CULL_FACE),this.depthTest=n.getParameter(n.DEPTH_TEST),this.blend=n.getParameter(n.BLEND),this.scissorTest=n.getParameter(n.SCISSOR_TEST),this.stencilTest=n.getParameter(n.STENCIL_TEST),n.enable=function(t){switch(t){case n.CULL_FACE:e.cullFace=!0;break;case n.DEPTH_TEST:e.depthTest=!0;break;case n.BLEND:e.blend=!0;break;case n.SCISSOR_TEST:e.scissorTest=!0;break;case n.STENCIL_TEST:e.stencilTest=!0}e.realEnable.call(n,t)},n.disable=function(t){switch(t){case n.CULL_FACE:e.cullFace=!1;break;case n.DEPTH_TEST:e.depthTest=!1;break;case n.BLEND:e.blend=!1;break;case n.SCISSOR_TEST:e.scissorTest=!1;break;case n.STENCIL_TEST:e.stencilTest=!1}e.realDisable.call(n,t)},this.colorMask=n.getParameter(n.COLOR_WRITEMASK),n.colorMask=function(t,i,r,s){e.colorMask[0]=t,e.colorMask[1]=i,e.colorMask[2]=r,e.colorMask[3]=s,e.realColorMask.call(n,t,i,r,s)},this.clearColor=n.getParameter(n.COLOR_CLEAR_VALUE),n.clearColor=function(t,i,r,s){e.clearColor[0]=t,e.clearColor[1]=i,e.clearColor[2]=r,e.clearColor[3]=s,e.realClearColor.call(n,t,i,r,s)},this.viewport=n.getParameter(n.VIEWPORT),n.viewport=function(t,i,r,s){e.viewport[0]=t,e.viewport[1]=i,e.viewport[2]=r,e.viewport[3]=s,e.realViewport.call(n,t,i,r,s)},this.isPatched=!0,L(t)}},z.prototype.unpatch=function(){if(this.isPatched){var e=this.gl,t=this.gl.canvas;u()||(Object.defineProperty(t,\"width\",this.realCanvasWidth),Object.defineProperty(t,\"height\",this.realCanvasHeight)),t.width=this.bufferWidth,t.height=this.bufferHeight,e.bindFramebuffer=this.realBindFramebuffer,e.enable=this.realEnable,e.disable=this.realDisable,e.colorMask=this.realColorMask,e.clearColor=this.realClearColor,e.viewport=this.realViewport,this.lastBoundFramebuffer==this.framebuffer&&e.bindFramebuffer(e.FRAMEBUFFER,null),this.isPatched=!1,setTimeout((function(){L(t)}),1)}},z.prototype.setTextureBounds=function(e,t){e||(e=[0,0,.5,1]),t||(t=[.5,0,.5,1]),this.viewportOffsetScale[0]=e[0],this.viewportOffsetScale[1]=e[1],this.viewportOffsetScale[2]=e[2],this.viewportOffsetScale[3]=e[3],this.viewportOffsetScale[4]=t[0],this.viewportOffsetScale[5]=t[1],this.viewportOffsetScale[6]=t[2],this.viewportOffsetScale[7]=t[3]},z.prototype.submitFrame=function(){var e=this.gl,t=this,n=[];if(this.dirtySubmitFrameBindings||n.push(e.CURRENT_PROGRAM,e.ARRAY_BUFFER_BINDING,e.ELEMENT_ARRAY_BUFFER_BINDING,e.TEXTURE_BINDING_2D,e.TEXTURE0),U(e,n,(function(e){t.realBindFramebuffer.call(e,e.FRAMEBUFFER,null);var n=0,i=0;t.instanceExt&&(n=e.getVertexAttrib(t.attribs.position,t.instanceExt.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE),i=e.getVertexAttrib(t.attribs.texCoord,t.instanceExt.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE)),t.cullFace&&t.realDisable.call(e,e.CULL_FACE),t.depthTest&&t.realDisable.call(e,e.DEPTH_TEST),t.blend&&t.realDisable.call(e,e.BLEND),t.scissorTest&&t.realDisable.call(e,e.SCISSOR_TEST),t.stencilTest&&t.realDisable.call(e,e.STENCIL_TEST),t.realColorMask.call(e,!0,!0,!0,!0),t.realViewport.call(e,0,0,e.drawingBufferWidth,e.drawingBufferHeight),(t.ctxAttribs.alpha||u())&&(t.realClearColor.call(e,0,0,0,1),e.clear(e.COLOR_BUFFER_BIT)),e.useProgram(t.program),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t.indexBuffer),e.bindBuffer(e.ARRAY_BUFFER,t.vertexBuffer),e.enableVertexAttribArray(t.attribs.position),e.enableVertexAttribArray(t.attribs.texCoord),e.vertexAttribPointer(t.attribs.position,2,e.FLOAT,!1,20,0),e.vertexAttribPointer(t.attribs.texCoord,3,e.FLOAT,!1,20,8),t.instanceExt&&(0!=n&&t.instanceExt.vertexAttribDivisorANGLE(t.attribs.position,0),0!=i&&t.instanceExt.vertexAttribDivisorANGLE(t.attribs.texCoord,0)),e.activeTexture(e.TEXTURE0),e.uniform1i(t.uniforms.diffuse,0),e.bindTexture(e.TEXTURE_2D,t.renderTarget),e.uniform4fv(t.uniforms.viewportOffsetScale,t.viewportOffsetScale),e.drawElements(e.TRIANGLES,t.indexCount,e.UNSIGNED_SHORT,0),t.cardboardUI&&t.cardboardUI.renderNoState(),t.realBindFramebuffer.call(t.gl,e.FRAMEBUFFER,t.framebuffer),t.ctxAttribs.preserveDrawingBuffer||(t.realClearColor.call(e,0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)),t.dirtySubmitFrameBindings||t.realBindFramebuffer.call(e,e.FRAMEBUFFER,t.lastBoundFramebuffer),t.cullFace&&t.realEnable.call(e,e.CULL_FACE),t.depthTest&&t.realEnable.call(e,e.DEPTH_TEST),t.blend&&t.realEnable.call(e,e.BLEND),t.scissorTest&&t.realEnable.call(e,e.SCISSOR_TEST),t.stencilTest&&t.realEnable.call(e,e.STENCIL_TEST),t.realColorMask.apply(e,t.colorMask),t.realViewport.apply(e,t.viewport),!t.ctxAttribs.alpha&&t.ctxAttribs.preserveDrawingBuffer||t.realClearColor.apply(e,t.clearColor),t.instanceExt&&(0!=n&&t.instanceExt.vertexAttribDivisorANGLE(t.attribs.position,n),0!=i&&t.instanceExt.vertexAttribDivisorANGLE(t.attribs.texCoord,i))})),u()){var i=e.canvas;i.width==t.bufferWidth&&i.height==t.bufferHeight||(t.bufferWidth=i.width,t.bufferHeight=i.height,t.onResize())}},z.prototype.updateDeviceInfo=function(e){var t=this.gl,n=this,i=[t.ARRAY_BUFFER_BINDING,t.ELEMENT_ARRAY_BUFFER_BINDING];U(t,i,(function(t){var i=n.computeMeshVertices_(n.meshWidth,n.meshHeight,e);if(t.bindBuffer(t.ARRAY_BUFFER,n.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW),!n.indexCount){var r=n.computeMeshIndices_(n.meshWidth,n.meshHeight);t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,r,t.STATIC_DRAW),n.indexCount=r.length}}))},z.prototype.computeMeshVertices_=function(e,t,n){for(var i=new Float32Array(2*e*t*5),r=n.getLeftEyeVisibleTanAngles(),s=n.getLeftEyeNoLensTanAngles(),o=n.getLeftEyeVisibleScreenRect(s),a=0,l=0;l\u003C2;l++){for(var c=0;c\u003Ct;c++)for(var u=0;u\u003Ce;u++,a++){var d=u/(e-1),p=c/(t-1),A=d,f=p,m=h(r[0],r[2],d),g=h(r[3],r[1],p),v=Math.sqrt(m*m+g*g),y=n.distortion.distortInverse(v),E=g*y/v;d=(m*y/v-s[0])/(s[2]-s[0]),p=(E-s[3])/(s[1]-s[3]),d=2*(o.x+d*o.width-.5),p=2*(o.y+p*o.height-.5),i[5*a+0]=d,i[5*a+1]=p,i[5*a+2]=A,i[5*a+3]=f,i[5*a+4]=l}var b=r[2]-r[0];r[0]=-(b+r[0]),r[2]=b-r[2],b=s[2]-s[0],s[0]=-(b+s[0]),s[2]=b-s[2],o.x=1-(o.x+o.width)}return i},z.prototype.computeMeshIndices_=function(e,t){for(var n=new Uint16Array(2*(e-1)*(t-1)*6),i=e/2,r=t/2,s=0,o=0,a=0;a\u003C2;a++)for(var l=0;l\u003Ct;l++)for(var c=0;c\u003Ce;c++,s++)0!=c&&0!=l&&(c\u003C=i==l\u003C=r?(n[o++]=s,n[o++]=s-e-1,n[o++]=s-e,n[o++]=s-e-1,n[o++]=s,n[o++]=s-1):(n[o++]=s-1,n[o++]=s-e,n[o++]=s,n[o++]=s-e,n[o++]=s-1,n[o++]=s-e-1));return n},z.prototype.getOwnPropertyDescriptor_=function(e,t){var n=Object.getOwnPropertyDescriptor(e,t);return void 0!==n.get&&void 0!==n.set||(n.configurable=!0,n.enumerable=!0,n.get=function(){return this.getAttribute(t)},n.set=function(e){this.setAttribute(t,e)}),n};var H=[\"attribute vec2 position;\",\"uniform mat4 projectionMat;\",\"void main() {\",\" gl_Position = projectionMat * vec4( position, -1.0, 1.0 );\",\"}\"].join(\"\\n\"),V=[\"precision mediump float;\",\"uniform vec4 color;\",\"void main() {\",\" gl_FragColor = color;\",\"}\"].join(\"\\n\"),W=Math.PI/180,j=60,q=12,Y=20,X=1,J=.75,K=.3125,Z=4,$=28,ee=1.5;function te(e){this.gl=e,this.attribs={position:0},this.program=_(e,H,V,this.attribs),this.uniforms=I(e,this.program),this.vertexBuffer=e.createBuffer(),this.gearOffset=0,this.gearVertexCount=0,this.arrowOffset=0,this.arrowVertexCount=0,this.projMat=new Float32Array(16),this.listener=null,this.onResize()}function ne(e){this.coefficients=e}te.prototype.destroy=function(){var e=this.gl;this.listener&&e.canvas.removeEventListener(\"click\",this.listener,!1),e.deleteProgram(this.program),e.deleteBuffer(this.vertexBuffer)},te.prototype.listen=function(e,t){var n=this.gl.canvas;this.listener=function(i){var r=n.clientWidth/2,s=$*ee;i.clientX>r-s&&i.clientX\u003Cr+s&&i.clientY>n.clientHeight-s?e(i):i.clientX\u003Cs&&i.clientY\u003Cs&&t(i)},n.addEventListener(\"click\",this.listener,!1)},te.prototype.onResize=function(){var e=this.gl,t=this,n=[e.ARRAY_BUFFER_BINDING];U(e,n,(function(e){var n=[],i=e.drawingBufferWidth/2,r=Math.max(screen.width,screen.height)*window.devicePixelRatio,s=e.drawingBufferWidth/r*window.devicePixelRatio,o=Z*s/2,a=$*ee*s,l=$*s/2,c=($*ee-$)*s;function h(e,t){var r=(90-e)*W,s=Math.cos(r),o=Math.sin(r);n.push(K*s*l+i,K*o*l+l),n.push(t*s*l+i,t*o*l+l)}n.push(i-o,a),n.push(i-o,e.drawingBufferHeight),n.push(i+o,a),n.push(i+o,e.drawingBufferHeight),t.gearOffset=n.length/2;for(var u=0;u\u003C=6;u++){var d=u*j;h(d,X),h(d+q,X),h(d+Y,J),h(d+(j-Y),J),h(d+(j-q),X)}function p(t,i){n.push(c+t,e.drawingBufferHeight-c-i)}t.gearVertexCount=n.length/2-t.gearOffset,t.arrowOffset=n.length/2;var A=o/Math.sin(45*W);p(0,l),p(l,0),p(l+A,A),p(A,l+A),p(A,l-A),p(0,l),p(l,2*l),p(l+A,2*l-A),p(A,l-A),p(0,l),p(A,l-o),p($*s,l-o),p(A,l+o),p($*s,l+o),t.arrowVertexCount=n.length/2-t.arrowOffset,e.bindBuffer(e.ARRAY_BUFFER,t.vertexBuffer),e.bufferData(e.ARRAY_BUFFER,new Float32Array(n),e.STATIC_DRAW)}))},te.prototype.render=function(){var e=this.gl,t=this,n=[e.CULL_FACE,e.DEPTH_TEST,e.BLEND,e.SCISSOR_TEST,e.STENCIL_TEST,e.COLOR_WRITEMASK,e.VIEWPORT,e.CURRENT_PROGRAM,e.ARRAY_BUFFER_BINDING];U(e,n,(function(e){e.disable(e.CULL_FACE),e.disable(e.DEPTH_TEST),e.disable(e.BLEND),e.disable(e.SCISSOR_TEST),e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0),e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),t.renderNoState()}))},te.prototype.renderNoState=function(){var e=this.gl;e.useProgram(this.program),e.bindBuffer(e.ARRAY_BUFFER,this.vertexBuffer),e.enableVertexAttribArray(this.attribs.position),e.vertexAttribPointer(this.attribs.position,2,e.FLOAT,!1,8,0),e.uniform4f(this.uniforms.color,1,1,1,1),B(this.projMat,0,e.drawingBufferWidth,0,e.drawingBufferHeight,.1,1024),e.uniformMatrix4fv(this.uniforms.projectionMat,!1,this.projMat),e.drawArrays(e.TRIANGLE_STRIP,0,4),e.drawArrays(e.TRIANGLE_STRIP,this.gearOffset,this.gearVertexCount),e.drawArrays(e.TRIANGLE_STRIP,this.arrowOffset,this.arrowVertexCount)},ne.prototype.distortInverse=function(e){for(var t=0,n=1,i=e-this.distort(t);Math.abs(n-t)>1e-4;){var r=e-this.distort(n),s=n-r*((n-t)/(r-i));t=n,n=s,i=r}return n},ne.prototype.distort=function(e){for(var t=e*e,n=0,i=0;i\u003Cthis.coefficients.length;i++)n=t*(n+this.coefficients[i]);return(n+1)*e};var ie=Math.PI/180,re=180/Math.PI,se=function(e,t,n){this.x=e||0,this.y=t||0,this.z=n||0};se.prototype={constructor:se,set:function(e,t,n){return this.x=e,this.y=t,this.z=n,this},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},normalize:function(){var e=this.length();if(0!==e){var t=1/e;this.multiplyScalar(t)}else this.x=0,this.y=0,this.z=0;return this},multiplyScalar:function(e){this.x*=e,this.y*=e,this.z*=e},applyQuaternion:function(e){var t=this.x,n=this.y,i=this.z,r=e.x,s=e.y,o=e.z,a=e.w,l=a*t+s*i-o*n,c=a*n+o*t-r*i,h=a*i+r*n-s*t,u=-r*t-s*n-o*i;return this.x=l*a+u*-r+c*-o-h*-s,this.y=c*a+u*-s+h*-r-l*-o,this.z=h*a+u*-o+l*-s-c*-r,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},crossVectors:function(e,t){var n=e.x,i=e.y,r=e.z,s=t.x,o=t.y,a=t.z;return this.x=i*a-r*o,this.y=r*s-n*a,this.z=n*o-i*s,this}};var oe,ae,le,ce=function(e,t,n,i){this.x=e||0,this.y=t||0,this.z=n||0,this.w=void 0!==i?i:1};function he(e){this.width=e.width||b(),this.height=e.height||x(),this.widthMeters=e.widthMeters,this.heightMeters=e.heightMeters,this.bevelMeters=e.bevelMeters}ce.prototype={constructor:ce,set:function(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this},setFromEulerXYZ:function(e,t,n){var i=Math.cos(e/2),r=Math.cos(t/2),s=Math.cos(n/2),o=Math.sin(e/2),a=Math.sin(t/2),l=Math.sin(n/2);return this.x=o*r*s+i*a*l,this.y=i*a*s-o*r*l,this.z=i*r*l+o*a*s,this.w=i*r*s-o*a*l,this},setFromEulerYXZ:function(e,t,n){var i=Math.cos(e/2),r=Math.cos(t/2),s=Math.cos(n/2),o=Math.sin(e/2),a=Math.sin(t/2),l=Math.sin(n/2);return this.x=o*r*s+i*a*l,this.y=i*a*s-o*r*l,this.z=i*r*l-o*a*s,this.w=i*r*s+o*a*l,this},setFromAxisAngle:function(e,t){var n=t/2,i=Math.sin(n);return this.x=e.x*i,this.y=e.y*i,this.z=e.z*i,this.w=Math.cos(n),this},multiply:function(e){return this.multiplyQuaternions(this,e)},multiplyQuaternions:function(e,t){var n=e.x,i=e.y,r=e.z,s=e.w,o=t.x,a=t.y,l=t.z,c=t.w;return this.x=n*c+s*o+i*l-r*a,this.y=i*c+s*a+r*o-n*l,this.z=r*c+s*l+n*a-i*o,this.w=s*c-n*o-i*a-r*l,this},inverse:function(){return this.x*=-1,this.y*=-1,this.z*=-1,this.normalize(),this},normalize:function(){var e=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);return 0===e?(this.x=0,this.y=0,this.z=0,this.w=1):(e=1/e,this.x=this.x*e,this.y=this.y*e,this.z=this.z*e,this.w=this.w*e),this},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var n=this.x,i=this.y,r=this.z,s=this.w,o=s*e.w+n*e.x+i*e.y+r*e.z;if(o\u003C0?(this.w=-e.w,this.x=-e.x,this.y=-e.y,this.z=-e.z,o=-o):this.copy(e),o>=1)return this.w=s,this.x=n,this.y=i,this.z=r,this;var a=Math.acos(o),l=Math.sqrt(1-o*o);if(Math.abs(l)\u003C.001)return this.w=.5*(s+this.w),this.x=.5*(n+this.x),this.y=.5*(i+this.y),this.z=.5*(r+this.z),this;var c=Math.sin((1-t)*a)/l,h=Math.sin(t*a)/l;return this.w=s*c+this.w*h,this.x=n*c+this.x*h,this.y=i*c+this.y*h,this.z=r*c+this.z*h,this},setFromUnitVectors:(le=1e-6,function(e,t){return void 0===oe&&(oe=new se),(ae=e.dot(t)+1)\u003Cle?(ae=0,Math.abs(e.x)>Math.abs(e.z)?oe.set(-e.y,e.x,0):oe.set(0,-e.z,e.y)):oe.crossVectors(e,t),this.x=oe.x,this.y=oe.y,this.z=oe.z,this.w=ae,this.normalize(),this})};var ue=new he({widthMeters:.11,heightMeters:.062,bevelMeters:.004}),de=new he({widthMeters:.1038,heightMeters:.0584,bevelMeters:.004}),pe={CardboardV1:new fe({id:\"CardboardV1\",label:\"Cardboard I/O 2014\",fov:40,interLensDistance:.06,baselineLensDistance:.035,screenLensDistance:.042,distortionCoefficients:[.441,.156],inverseCoefficients:[-.4410035,.42756155,-.4804439,.5460139,-.58821183,.5733938,-.48303202,.33299083,-.17573841,.0651772,-.01488963,.001559834]}),CardboardV2:new fe({id:\"CardboardV2\",label:\"Cardboard I/O 2015\",fov:60,interLensDistance:.064,baselineLensDistance:.035,screenLensDistance:.039,distortionCoefficients:[.34,.55],inverseCoefficients:[-.33836704,-.18162185,.862655,-1.2462051,1.0560602,-.58208317,.21609078,-.05444823,.009177956,-.0009904169,6183535e-11,-16981803e-13]})};function Ae(e,t){this.viewer=pe.CardboardV2,this.updateDeviceParams(e),this.distortion=new ne(this.viewer.distortionCoefficients);for(var n=0;n\u003Ct.length;n++){var i=t[n];pe[i.id]=new fe(i)}}function fe(e){this.id=e.id,this.label=e.label,this.fov=e.fov,this.interLensDistance=e.interLensDistance,this.baselineLensDistance=e.baselineLensDistance,this.screenLensDistance=e.screenLensDistance,this.distortionCoefficients=e.distortionCoefficients,this.inverseCoefficients=e.inverseCoefficients}Ae.prototype.updateDeviceParams=function(e){this.device=this.determineDevice_(e)||this.device},Ae.prototype.getDevice=function(){return this.device},Ae.prototype.setViewer=function(e){this.viewer=e,this.distortion=new ne(this.viewer.distortionCoefficients)},Ae.prototype.determineDevice_=function(e){if(!e)return u()?(console.warn(\"Using fallback iOS device measurements.\"),de):(console.warn(\"Using fallback Android device measurements.\"),ue);var t=.0254,n=t/e.xdpi,i=t/e.ydpi;return new he({widthMeters:n*b(),heightMeters:i*x(),bevelMeters:.001*e.bevelMm})},Ae.prototype.getDistortedFieldOfViewLeftEye=function(){var e=this.viewer,t=this.device,n=this.distortion,i=e.screenLensDistance,r=(t.widthMeters-e.interLensDistance)/2,s=e.interLensDistance/2,o=e.baselineLensDistance-t.bevelMeters,a=t.heightMeters-o,l=re*Math.atan(n.distort(r/i)),c=re*Math.atan(n.distort(s/i)),h=re*Math.atan(n.distort(o/i)),u=re*Math.atan(n.distort(a/i));return{leftDegrees:Math.min(l,e.fov),rightDegrees:Math.min(c,e.fov),downDegrees:Math.min(h,e.fov),upDegrees:Math.min(u,e.fov)}},Ae.prototype.getLeftEyeVisibleTanAngles=function(){var e=this.viewer,t=this.device,n=this.distortion,i=Math.tan(-ie*e.fov),r=Math.tan(ie*e.fov),s=Math.tan(ie*e.fov),o=Math.tan(-ie*e.fov),a=t.widthMeters/4,l=t.heightMeters/2,c=e.baselineLensDistance-t.bevelMeters-l,h=e.interLensDistance/2-a,u=-c,d=e.screenLensDistance,p=n.distort((h-a)/d),A=n.distort((u+l)/d),f=n.distort((h+a)/d),m=n.distort((u-l)/d),g=new Float32Array(4);return g[0]=Math.max(i,p),g[1]=Math.min(r,A),g[2]=Math.min(s,f),g[3]=Math.max(o,m),g},Ae.prototype.getLeftEyeNoLensTanAngles=function(){var e=this.viewer,t=this.device,n=this.distortion,i=new Float32Array(4),r=n.distortInverse(Math.tan(-ie*e.fov)),s=n.distortInverse(Math.tan(ie*e.fov)),o=n.distortInverse(Math.tan(ie*e.fov)),a=n.distortInverse(Math.tan(-ie*e.fov)),l=t.widthMeters/4,c=t.heightMeters/2,h=e.baselineLensDistance-t.bevelMeters-c,u=e.interLensDistance/2-l,d=-h,p=e.screenLensDistance,A=(u-l)/p,f=(d+c)/p,m=(u+l)/p,g=(d-c)/p;return i[0]=Math.max(r,A),i[1]=Math.min(s,f),i[2]=Math.min(o,m),i[3]=Math.max(a,g),i},Ae.prototype.getLeftEyeVisibleScreenRect=function(e){var t=this.viewer,n=this.device,i=t.screenLensDistance,r=(n.widthMeters-t.interLensDistance)/2,s=t.baselineLensDistance-n.bevelMeters,o=(e[0]*i+r)/n.widthMeters,a=(e[1]*i+s)/n.heightMeters,l=(e[2]*i+r)/n.widthMeters,c=(e[3]*i+s)/n.heightMeters;return{x:o,y:c,width:l-o,height:a-c}},Ae.prototype.getFieldOfViewLeftEye=function(e){return e?this.getUndistortedFieldOfViewLeftEye():this.getDistortedFieldOfViewLeftEye()},Ae.prototype.getFieldOfViewRightEye=function(e){var t=this.getFieldOfViewLeftEye(e);return{leftDegrees:t.rightDegrees,rightDegrees:t.leftDegrees,upDegrees:t.upDegrees,downDegrees:t.downDegrees}},Ae.prototype.getUndistortedFieldOfViewLeftEye=function(){var e=this.getUndistortedParams_();return{leftDegrees:re*Math.atan(e.outerDist),rightDegrees:re*Math.atan(e.innerDist),downDegrees:re*Math.atan(e.bottomDist),upDegrees:re*Math.atan(e.topDist)}},Ae.prototype.getUndistortedViewportLeftEye=function(){var e=this.getUndistortedParams_(),t=this.viewer,n=this.device,i=t.screenLensDistance,r=n.widthMeters/i,s=n.heightMeters/i,o=n.width/r,a=n.height/s,l=Math.round((e.eyePosX-e.outerDist)*o),c=Math.round((e.eyePosY-e.bottomDist)*a);return{x:l,y:c,width:Math.round((e.eyePosX+e.innerDist)*o)-l,height:Math.round((e.eyePosY+e.topDist)*a)-c}},Ae.prototype.getUndistortedParams_=function(){var e=this.viewer,t=this.device,n=this.distortion,i=e.screenLensDistance,r=e.interLensDistance/2/i,s=t.widthMeters/i,o=t.heightMeters/i,a=s/2-r,l=(e.baselineLensDistance-t.bevelMeters)/i,c=e.fov,h=n.distortInverse(Math.tan(ie*c)),u=Math.min(a,h),d=Math.min(r,h),p=Math.min(l,h);return{outerDist:u,innerDist:d,topDist:Math.min(o-l,h),bottomDist:p,eyePosX:a,eyePosY:l}},Ae.Viewers=pe;var me={format:1,last_updated:\"2019-11-09T17:36:14Z\",devices:[{type:\"android\",rules:[{mdmh:\"asus/*/Nexus 7/*\"},{ua:\"Nexus 7\"}],dpi:[320.8,323],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"asus/*/ASUS_X00PD/*\"},{ua:\"ASUS_X00PD\"}],dpi:245,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"asus/*/ASUS_X008D/*\"},{ua:\"ASUS_X008D\"}],dpi:282,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"asus/*/ASUS_Z00AD/*\"},{ua:\"ASUS_Z00AD\"}],dpi:[403,404.6],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Google/*/Pixel 2 XL/*\"},{ua:\"Pixel 2 XL\"}],dpi:537.9,bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Google/*/Pixel 3 XL/*\"},{ua:\"Pixel 3 XL\"}],dpi:[558.5,553.8],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Google/*/Pixel XL/*\"},{ua:\"Pixel XL\"}],dpi:[537.9,533],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Google/*/Pixel 3/*\"},{ua:\"Pixel 3\"}],dpi:442.4,bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Google/*/Pixel 2/*\"},{ua:\"Pixel 2\"}],dpi:441,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"Google/*/Pixel/*\"},{ua:\"Pixel\"}],dpi:[432.6,436.7],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"HTC/*/HTC6435LVW/*\"},{ua:\"HTC6435LVW\"}],dpi:[449.7,443.3],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"HTC/*/HTC One XL/*\"},{ua:\"HTC One XL\"}],dpi:[315.3,314.6],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"htc/*/Nexus 9/*\"},{ua:\"Nexus 9\"}],dpi:289,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"HTC/*/HTC One M9/*\"},{ua:\"HTC One M9\"}],dpi:[442.5,443.3],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"HTC/*/HTC One_M8/*\"},{ua:\"HTC One_M8\"}],dpi:[449.7,447.4],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"HTC/*/HTC One/*\"},{ua:\"HTC One\"}],dpi:472.8,bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Huawei/*/Nexus 6P/*\"},{ua:\"Nexus 6P\"}],dpi:[515.1,518],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Huawei/*/BLN-L24/*\"},{ua:\"HONORBLN-L24\"}],dpi:480,bw:4,ac:500},{type:\"android\",rules:[{mdmh:\"Huawei/*/BKL-L09/*\"},{ua:\"BKL-L09\"}],dpi:403,bw:3.47,ac:500},{type:\"android\",rules:[{mdmh:\"LENOVO/*/Lenovo PB2-690Y/*\"},{ua:\"Lenovo PB2-690Y\"}],dpi:[457.2,454.713],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"LGE/*/Nexus 5X/*\"},{ua:\"Nexus 5X\"}],dpi:[422,419.9],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"LGE/*/LGMS345/*\"},{ua:\"LGMS345\"}],dpi:[221.7,219.1],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"LGE/*/LG-D800/*\"},{ua:\"LG-D800\"}],dpi:[422,424.1],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"LGE/*/LG-D850/*\"},{ua:\"LG-D850\"}],dpi:[537.9,541.9],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"LGE/*/VS985 4G/*\"},{ua:\"VS985 4G\"}],dpi:[537.9,535.6],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"LGE/*/Nexus 5/*\"},{ua:\"Nexus 5 B\"}],dpi:[442.4,444.8],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"LGE/*/Nexus 4/*\"},{ua:\"Nexus 4\"}],dpi:[319.8,318.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"LGE/*/LG-P769/*\"},{ua:\"LG-P769\"}],dpi:[240.6,247.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"LGE/*/LGMS323/*\"},{ua:\"LGMS323\"}],dpi:[206.6,204.6],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"LGE/*/LGLS996/*\"},{ua:\"LGLS996\"}],dpi:[403.4,401.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Micromax/*/4560MMX/*\"},{ua:\"4560MMX\"}],dpi:[240,219.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Micromax/*/A250/*\"},{ua:\"Micromax A250\"}],dpi:[480,446.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Micromax/*/Micromax AQ4501/*\"},{ua:\"Micromax AQ4501\"}],dpi:240,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"motorola/*/G5/*\"},{ua:\"Moto G (5) Plus\"}],dpi:[403.4,403],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"motorola/*/DROID RAZR/*\"},{ua:\"DROID RAZR\"}],dpi:[368.1,256.7],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"motorola/*/XT830C/*\"},{ua:\"XT830C\"}],dpi:[254,255.9],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1021/*\"},{ua:\"XT1021\"}],dpi:[254,256.7],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1023/*\"},{ua:\"XT1023\"}],dpi:[254,256.7],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1028/*\"},{ua:\"XT1028\"}],dpi:[326.6,327.6],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1034/*\"},{ua:\"XT1034\"}],dpi:[326.6,328.4],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1053/*\"},{ua:\"XT1053\"}],dpi:[315.3,316.1],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1562/*\"},{ua:\"XT1562\"}],dpi:[403.4,402.7],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"motorola/*/Nexus 6/*\"},{ua:\"Nexus 6 B\"}],dpi:[494.3,489.7],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1063/*\"},{ua:\"XT1063\"}],dpi:[295,296.6],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1064/*\"},{ua:\"XT1064\"}],dpi:[295,295.6],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1092/*\"},{ua:\"XT1092\"}],dpi:[422,424.1],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"motorola/*/XT1095/*\"},{ua:\"XT1095\"}],dpi:[422,423.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"motorola/*/G4/*\"},{ua:\"Moto G (4)\"}],dpi:401,bw:4,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/A0001/*\"},{ua:\"A0001\"}],dpi:[403.4,401],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONE E1001/*\"},{ua:\"ONE E1001\"}],dpi:[442.4,441.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONE E1003/*\"},{ua:\"ONE E1003\"}],dpi:[442.4,441.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONE E1005/*\"},{ua:\"ONE E1005\"}],dpi:[442.4,441.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONE A2001/*\"},{ua:\"ONE A2001\"}],dpi:[391.9,405.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONE A2003/*\"},{ua:\"ONE A2003\"}],dpi:[391.9,405.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONE A2005/*\"},{ua:\"ONE A2005\"}],dpi:[391.9,405.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONEPLUS A3000/*\"},{ua:\"ONEPLUS A3000\"}],dpi:401,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONEPLUS A3003/*\"},{ua:\"ONEPLUS A3003\"}],dpi:401,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONEPLUS A3010/*\"},{ua:\"ONEPLUS A3010\"}],dpi:401,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONEPLUS A5000/*\"},{ua:\"ONEPLUS A5000 \"}],dpi:[403.411,399.737],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONE A5010/*\"},{ua:\"ONEPLUS A5010\"}],dpi:[403,400],bw:2,ac:1e3},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONEPLUS A6000/*\"},{ua:\"ONEPLUS A6000\"}],dpi:401,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONEPLUS A6003/*\"},{ua:\"ONEPLUS A6003\"}],dpi:401,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONEPLUS A6010/*\"},{ua:\"ONEPLUS A6010\"}],dpi:401,bw:2,ac:500},{type:\"android\",rules:[{mdmh:\"OnePlus/*/ONEPLUS A6013/*\"},{ua:\"ONEPLUS A6013\"}],dpi:401,bw:2,ac:500},{type:\"android\",rules:[{mdmh:\"OPPO/*/X909/*\"},{ua:\"X909\"}],dpi:[442.4,444.1],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/GT-I9082/*\"},{ua:\"GT-I9082\"}],dpi:[184.7,185.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G360P/*\"},{ua:\"SM-G360P\"}],dpi:[196.7,205.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/Nexus S/*\"},{ua:\"Nexus S\"}],dpi:[234.5,229.8],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/GT-I9300/*\"},{ua:\"GT-I9300\"}],dpi:[304.8,303.9],bw:5,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-T230NU/*\"},{ua:\"SM-T230NU\"}],dpi:216,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SGH-T399/*\"},{ua:\"SGH-T399\"}],dpi:[217.7,231.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SGH-M919/*\"},{ua:\"SGH-M919\"}],dpi:[440.8,437.7],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-N9005/*\"},{ua:\"SM-N9005\"}],dpi:[386.4,387],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SAMSUNG-SM-N900A/*\"},{ua:\"SAMSUNG-SM-N900A\"}],dpi:[386.4,387.7],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/GT-I9500/*\"},{ua:\"GT-I9500\"}],dpi:[442.5,443.3],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/GT-I9505/*\"},{ua:\"GT-I9505\"}],dpi:439.4,bw:4,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G900F/*\"},{ua:\"SM-G900F\"}],dpi:[415.6,431.6],bw:5,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G900M/*\"},{ua:\"SM-G900M\"}],dpi:[415.6,431.6],bw:5,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G800F/*\"},{ua:\"SM-G800F\"}],dpi:326.8,bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G906S/*\"},{ua:\"SM-G906S\"}],dpi:[562.7,572.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/GT-I9300/*\"},{ua:\"GT-I9300\"}],dpi:[306.7,304.8],bw:5,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-T535/*\"},{ua:\"SM-T535\"}],dpi:[142.6,136.4],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-N920C/*\"},{ua:\"SM-N920C\"}],dpi:[515.1,518.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-N920P/*\"},{ua:\"SM-N920P\"}],dpi:[386.3655,390.144],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-N920W8/*\"},{ua:\"SM-N920W8\"}],dpi:[515.1,518.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/GT-I9300I/*\"},{ua:\"GT-I9300I\"}],dpi:[304.8,305.8],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/GT-I9195/*\"},{ua:\"GT-I9195\"}],dpi:[249.4,256.7],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SPH-L520/*\"},{ua:\"SPH-L520\"}],dpi:[249.4,255.9],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SAMSUNG-SGH-I717/*\"},{ua:\"SAMSUNG-SGH-I717\"}],dpi:285.8,bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SPH-D710/*\"},{ua:\"SPH-D710\"}],dpi:[217.7,204.2],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/GT-N7100/*\"},{ua:\"GT-N7100\"}],dpi:265.1,bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SCH-I605/*\"},{ua:\"SCH-I605\"}],dpi:265.1,bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/Galaxy Nexus/*\"},{ua:\"Galaxy Nexus\"}],dpi:[315.3,314.2],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-N910H/*\"},{ua:\"SM-N910H\"}],dpi:[515.1,518],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-N910C/*\"},{ua:\"SM-N910C\"}],dpi:[515.2,520.2],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G130M/*\"},{ua:\"SM-G130M\"}],dpi:[165.9,164.8],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G928I/*\"},{ua:\"SM-G928I\"}],dpi:[515.1,518.4],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G920F/*\"},{ua:\"SM-G920F\"}],dpi:580.6,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G920P/*\"},{ua:\"SM-G920P\"}],dpi:[522.5,577],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G925F/*\"},{ua:\"SM-G925F\"}],dpi:580.6,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G925V/*\"},{ua:\"SM-G925V\"}],dpi:[522.5,576.6],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G930F/*\"},{ua:\"SM-G930F\"}],dpi:576.6,bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G935F/*\"},{ua:\"SM-G935F\"}],dpi:533,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G950F/*\"},{ua:\"SM-G950F\"}],dpi:[562.707,565.293],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G955U/*\"},{ua:\"SM-G955U\"}],dpi:[522.514,525.762],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G955F/*\"},{ua:\"SM-G955F\"}],dpi:[522.514,525.762],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G960F/*\"},{ua:\"SM-G960F\"}],dpi:[569.575,571.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G9600/*\"},{ua:\"SM-G9600\"}],dpi:[569.575,571.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G960T/*\"},{ua:\"SM-G960T\"}],dpi:[569.575,571.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G960N/*\"},{ua:\"SM-G960N\"}],dpi:[569.575,571.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G960U/*\"},{ua:\"SM-G960U\"}],dpi:[569.575,571.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G9608/*\"},{ua:\"SM-G9608\"}],dpi:[569.575,571.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G960FD/*\"},{ua:\"SM-G960FD\"}],dpi:[569.575,571.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G960W/*\"},{ua:\"SM-G960W\"}],dpi:[569.575,571.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G965F/*\"},{ua:\"SM-G965F\"}],dpi:529,bw:2,ac:1e3},{type:\"android\",rules:[{mdmh:\"Sony/*/C6903/*\"},{ua:\"C6903\"}],dpi:[442.5,443.3],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"Sony/*/D6653/*\"},{ua:\"D6653\"}],dpi:[428.6,427.6],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Sony/*/E6653/*\"},{ua:\"E6653\"}],dpi:[428.6,425.7],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Sony/*/E6853/*\"},{ua:\"E6853\"}],dpi:[403.4,401.9],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Sony/*/SGP321/*\"},{ua:\"SGP321\"}],dpi:[224.7,224.1],bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"TCT/*/ALCATEL ONE TOUCH Fierce/*\"},{ua:\"ALCATEL ONE TOUCH Fierce\"}],dpi:[240,247.5],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"THL/*/thl 5000/*\"},{ua:\"thl 5000\"}],dpi:[480,443.3],bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"Fly/*/IQ4412/*\"},{ua:\"IQ4412\"}],dpi:307.9,bw:3,ac:1e3},{type:\"android\",rules:[{mdmh:\"ZTE/*/ZTE Blade L2/*\"},{ua:\"ZTE Blade L2\"}],dpi:240,bw:3,ac:500},{type:\"android\",rules:[{mdmh:\"BENEVE/*/VR518/*\"},{ua:\"VR518\"}],dpi:480,bw:3,ac:500},{type:\"ios\",rules:[{res:[640,960]}],dpi:[325.1,328.4],bw:4,ac:1e3},{type:\"ios\",rules:[{res:[640,1136]}],dpi:[317.1,320.2],bw:3,ac:1e3},{type:\"ios\",rules:[{res:[750,1334]}],dpi:326.4,bw:4,ac:1e3},{type:\"ios\",rules:[{res:[1242,2208]}],dpi:[453.6,458.4],bw:4,ac:1e3},{type:\"ios\",rules:[{res:[1125,2001]}],dpi:[410.9,415.4],bw:4,ac:1e3},{type:\"ios\",rules:[{res:[1125,2436]}],dpi:458,bw:4,ac:1e3},{type:\"android\",rules:[{mdmh:\"Huawei/*/EML-L29/*\"},{ua:\"EML-L29\"}],dpi:428,bw:3.45,ac:500},{type:\"android\",rules:[{mdmh:\"Nokia/*/Nokia 7.1/*\"},{ua:\"Nokia 7.1\"}],dpi:[432,431.9],bw:3,ac:500},{type:\"ios\",rules:[{res:[1242,2688]}],dpi:458,bw:4,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G570M/*\"},{ua:\"SM-G570M\"}],dpi:320,bw:3.684,ac:1e3},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G970F/*\"},{ua:\"SM-G970F\"}],dpi:438,bw:2.281,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G973F/*\"},{ua:\"SM-G973F\"}],dpi:550,bw:2.002,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G975F/*\"},{ua:\"SM-G975F\"}],dpi:522,bw:2.054,ac:500},{type:\"android\",rules:[{mdmh:\"samsung/*/SM-G977F/*\"},{ua:\"SM-G977F\"}],dpi:505,bw:2.334,ac:500},{type:\"ios\",rules:[{res:[828,1792]}],dpi:326,bw:5,ac:500}]};function ge(e,t){if(this.dpdb=me,this.recalculateDeviceParams_(),e){this.onDeviceParamsUpdated=t;var n=new XMLHttpRequest,i=this;n.open(\"GET\",e,!0),n.addEventListener(\"load\",(function(){i.loading=!1,n.status>=200&&n.status\u003C=299?(i.dpdb=JSON.parse(n.response),i.recalculateDeviceParams_()):console.error(\"Error loading online DPDB!\")})),n.send()}}function ve(e){this.xdpi=e.xdpi,this.ydpi=e.ydpi,this.bevelMm=e.bevelMm}function ye(e,t){this.set(e,t)}function Ee(e,t){this.kFilter=e,this.isDebug=t,this.currentAccelMeasurement=new ye,this.currentGyroMeasurement=new ye,this.previousGyroMeasurement=new ye,u()?this.filterQ=new ce(-1,0,0,1):this.filterQ=new ce(1,0,0,1),this.previousFilterQ=new ce,this.previousFilterQ.copy(this.filterQ),this.accelQ=new ce,this.isOrientationInitialized=!1,this.estimatedGravity=new se,this.measuredGravity=new se,this.gyroIntegralQ=new ce}function be(e,t){this.predictionTimeS=e,this.isDebug=t,this.previousQ=new ce,this.previousTimestampS=null,this.deltaQ=new ce,this.outQ=new ce}function xe(e,t,n,i){this.yawOnly=n,this.accelerometer=new se,this.gyroscope=new se,this.filter=new Ee(e,i),this.posePredictor=new be(t,i),this.isFirefoxAndroid=A(),this.isIOS=u();var r=f();this.isDeviceMotionInRadians=!this.isIOS&&r&&r\u003C66,this.isWithoutDeviceMotion=g()||m(),this.filterToWorldQ=new ce,u()?this.filterToWorldQ.setFromAxisAngle(new se(1,0,0),Math.PI/2):this.filterToWorldQ.setFromAxisAngle(new se(1,0,0),-Math.PI/2),this.inverseWorldToScreenQ=new ce,this.worldToScreenQ=new ce,this.originalPoseAdjustQ=new ce,this.originalPoseAdjustQ.setFromAxisAngle(new se(0,0,1),-window.orientation*Math.PI/180),this.setScreenTransform_(),y()&&this.filterToWorldQ.multiply(this.inverseWorldToScreenQ),this.resetQ=new ce,this.orientationOut_=new Float32Array(4),this.start()}ge.prototype.getDeviceParams=function(){return this.deviceParams},ge.prototype.recalculateDeviceParams_=function(){var e=this.calcDeviceParams_();e?(this.deviceParams=e,this.onDeviceParamsUpdated&&this.onDeviceParamsUpdated(this.deviceParams)):console.error(\"Failed to recalculate device parameters.\")},ge.prototype.calcDeviceParams_=function(){var e=this.dpdb;if(!e)return console.error(\"DPDB not available.\"),null;if(1!=e.format)return console.error(\"DPDB has unexpected format version.\"),null;if(!e.devices||!e.devices.length)return console.error(\"DPDB does not have a devices section.\"),null;var t=navigator.userAgent||navigator.vendor||window.opera,n=b(),i=x();if(!e.devices)return console.error(\"DPDB has no devices section.\"),null;for(var r=0;r\u003Ce.devices.length;r++){var s=e.devices[r];if(s.rules)if(\"ios\"==s.type||\"android\"==s.type){if(u()==(\"ios\"==s.type)){for(var o=!1,a=0;a\u003Cs.rules.length;a++){var l=s.rules[a];if(this.ruleMatches_(l,t,n,i)){o=!0;break}}if(o)return new ve({xdpi:s.dpi[0]||s.dpi,ydpi:s.dpi[1]||s.dpi,bevelMm:s.bw})}}else console.warn(\"Device[\"+r+\"] has invalid type.\");else console.warn(\"Device[\"+r+\"] has no rules section.\")}return console.warn(\"No DPDB device match.\"),null},ge.prototype.ruleMatches_=function(e,t,n,i){if(!e.ua&&!e.res)return!1;if(e.ua&&\"SM\"===e.ua.substring(0,2)&&(e.ua=e.ua.substring(0,7)),e.ua&&t.indexOf(e.ua)\u003C0)return!1;if(e.res){if(!e.res[0]||!e.res[1])return!1;var r=e.res[0],s=e.res[1];if(Math.min(n,i)!=Math.min(r,s)||Math.max(n,i)!=Math.max(r,s))return!1}return!0},ye.prototype.set=function(e,t){this.sample=e,this.timestampS=t},ye.prototype.copy=function(e){this.set(e.sample,e.timestampS)},Ee.prototype.addAccelMeasurement=function(e,t){this.currentAccelMeasurement.set(e,t)},Ee.prototype.addGyroMeasurement=function(e,t){this.currentGyroMeasurement.set(e,t);var n=t-this.previousGyroMeasurement.timestampS;E(n)&&this.run_(),this.previousGyroMeasurement.copy(this.currentGyroMeasurement)},Ee.prototype.run_=function(){if(!this.isOrientationInitialized)return this.accelQ=this.accelToQuaternion_(this.currentAccelMeasurement.sample),this.previousFilterQ.copy(this.accelQ),void(this.isOrientationInitialized=!0);var e=this.currentGyroMeasurement.timestampS-this.previousGyroMeasurement.timestampS,t=this.gyroToQuaternionDelta_(this.currentGyroMeasurement.sample,e);this.gyroIntegralQ.multiply(t),this.filterQ.copy(this.previousFilterQ),this.filterQ.multiply(t);var n=new ce;n.copy(this.filterQ),n.inverse(),this.estimatedGravity.set(0,0,-1),this.estimatedGravity.applyQuaternion(n),this.estimatedGravity.normalize(),this.measuredGravity.copy(this.currentAccelMeasurement.sample),this.measuredGravity.normalize();var i=new ce;i.setFromUnitVectors(this.estimatedGravity,this.measuredGravity),i.inverse(),this.isDebug&&console.log(\"Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)\",re*k(i),this.estimatedGravity.x.toFixed(1),this.estimatedGravity.y.toFixed(1),this.estimatedGravity.z.toFixed(1),this.measuredGravity.x.toFixed(1),this.measuredGravity.y.toFixed(1),this.measuredGravity.z.toFixed(1));var r=new ce;r.copy(this.filterQ),r.multiply(i),this.filterQ.slerp(r,1-this.kFilter),this.previousFilterQ.copy(this.filterQ)},Ee.prototype.getOrientation=function(){return this.filterQ},Ee.prototype.accelToQuaternion_=function(e){var t=new se;t.copy(e),t.normalize();var n=new ce;return n.setFromUnitVectors(new se(0,0,-1),t),n.inverse(),n},Ee.prototype.gyroToQuaternionDelta_=function(e,t){var n=new ce,i=new se;return i.copy(e),i.normalize(),n.setFromAxisAngle(i,e.length()*t),n},be.prototype.getPrediction=function(e,t,n){if(!this.previousTimestampS)return this.previousQ.copy(e),this.previousTimestampS=n,e;var i=new se;i.copy(t),i.normalize();var r=t.length();if(r\u003C20*ie)return this.isDebug&&console.log(\"Moving slowly, at %s deg/s: no prediction\",(re*r).toFixed(1)),this.outQ.copy(e),this.previousQ.copy(e),this.outQ;var s=r*this.predictionTimeS;return this.deltaQ.setFromAxisAngle(i,s),this.outQ.copy(this.previousQ),this.outQ.multiply(this.deltaQ),this.previousQ.copy(e),this.previousTimestampS=n,this.outQ},xe.prototype.getPosition=function(){return null},xe.prototype.getOrientation=function(){var e=void 0;if(this.isWithoutDeviceMotion&&this._deviceOrientationQ)return this.deviceOrientationFixQ=this.deviceOrientationFixQ||(n=(new ce).setFromAxisAngle(new se(0,0,-1),0),i=new ce,-90===window.orientation?i.setFromAxisAngle(new se(0,1,0),Math.PI/-2):i.setFromAxisAngle(new se(0,1,0),Math.PI/2),n.multiply(i)),this.deviceOrientationFilterToWorldQ=this.deviceOrientationFilterToWorldQ||((t=new ce).setFromAxisAngle(new se(1,0,0),-Math.PI/2),t),e=this._deviceOrientationQ,(r=new ce).copy(e),r.multiply(this.deviceOrientationFilterToWorldQ),r.multiply(this.resetQ),r.multiply(this.worldToScreenQ),r.multiplyQuaternions(this.deviceOrientationFixQ,r),this.yawOnly&&(r.x=0,r.z=0,r.normalize()),this.orientationOut_[0]=r.x,this.orientationOut_[1]=r.y,this.orientationOut_[2]=r.z,this.orientationOut_[3]=r.w,this.orientationOut_;var t,n,i,r,s=this.filter.getOrientation();return e=this.posePredictor.getPrediction(s,this.gyroscope,this.previousTimestampS),(r=new ce).copy(this.filterToWorldQ),r.multiply(this.resetQ),r.multiply(e),r.multiply(this.worldToScreenQ),this.yawOnly&&(r.x=0,r.z=0,r.normalize()),this.orientationOut_[0]=r.x,this.orientationOut_[1]=r.y,this.orientationOut_[2]=r.z,this.orientationOut_[3]=r.w,this.orientationOut_},xe.prototype.resetPose=function(){this.resetQ.copy(this.filter.getOrientation()),this.resetQ.x=0,this.resetQ.y=0,this.resetQ.z*=-1,this.resetQ.normalize(),y()&&this.resetQ.multiply(this.inverseWorldToScreenQ),this.resetQ.multiply(this.originalPoseAdjustQ)},xe.prototype.onDeviceOrientation_=function(e){this._deviceOrientationQ=this._deviceOrientationQ||new ce;var t=e.alpha,n=e.beta,i=e.gamma;t=(t||0)*Math.PI/180,n=(n||0)*Math.PI/180,i=(i||0)*Math.PI/180,this._deviceOrientationQ.setFromEulerYXZ(n,t,-i)},xe.prototype.onDeviceMotion_=function(e){this.updateDeviceMotion_(e)},xe.prototype.updateDeviceMotion_=function(e){var t=e.accelerationIncludingGravity,n=e.rotationRate,i=e.timeStamp/1e3,r=i-this.previousTimestampS;return r\u003C0?(F(\"fusion-pose-sensor:invalid:non-monotonic\",\"Invalid timestamps detected: non-monotonic timestamp from devicemotion\"),void(this.previousTimestampS=i)):r\u003C=a||r>l?(F(\"fusion-pose-sensor:invalid:outside-threshold\",\"Invalid timestamps detected: Timestamp from devicemotion outside expected range.\"),void(this.previousTimestampS=i)):(this.accelerometer.set(-t.x,-t.y,-t.z),n&&(v()?this.gyroscope.set(-n.beta,n.alpha,n.gamma):this.gyroscope.set(n.alpha,n.beta,n.gamma),this.isDeviceMotionInRadians||this.gyroscope.multiplyScalar(Math.PI/180),this.filter.addGyroMeasurement(this.gyroscope,i)),this.filter.addAccelMeasurement(this.accelerometer,i),void(this.previousTimestampS=i))},xe.prototype.onOrientationChange_=function(e){this.setScreenTransform_()},xe.prototype.onMessage_=function(e){var t=e.data;t&&t.type&&\"devicemotion\"===t.type.toLowerCase()&&this.updateDeviceMotion_(t.deviceMotionEvent)},xe.prototype.setScreenTransform_=function(){switch(this.worldToScreenQ.set(0,0,0,1),window.orientation){case 0:break;case 90:this.worldToScreenQ.setFromAxisAngle(new se(0,0,1),-Math.PI/2);break;case-90:this.worldToScreenQ.setFromAxisAngle(new se(0,0,1),Math.PI/2)}this.inverseWorldToScreenQ.copy(this.worldToScreenQ),this.inverseWorldToScreenQ.inverse()},xe.prototype.start=function(){this.onDeviceMotionCallback_=this.onDeviceMotion_.bind(this),this.onOrientationChangeCallback_=this.onOrientationChange_.bind(this),this.onMessageCallback_=this.onMessage_.bind(this),this.onDeviceOrientationCallback_=this.onDeviceOrientation_.bind(this),u()&&R()&&window.addEventListener(\"message\",this.onMessageCallback_),window.addEventListener(\"orientationchange\",this.onOrientationChangeCallback_),this.isWithoutDeviceMotion?window.addEventListener(\"deviceorientation\",this.onDeviceOrientationCallback_):window.addEventListener(\"devicemotion\",this.onDeviceMotionCallback_)},xe.prototype.stop=function(){window.removeEventListener(\"devicemotion\",this.onDeviceMotionCallback_),window.removeEventListener(\"deviceorientation\",this.onDeviceOrientationCallback_),window.removeEventListener(\"orientationchange\",this.onOrientationChangeCallback_),window.removeEventListener(\"message\",this.onMessageCallback_)};var we=60,Ce=new se(1,0,0),Me=new se(0,0,1),_e=new ce;_e.setFromAxisAngle(Ce,-Math.PI/2),_e.multiply((new ce).setFromAxisAngle(Me,Math.PI/2));var Ie=function(){function e(t){r(this,e),this.config=t,this.sensor=null,this.fusionSensor=null,this._out=new Float32Array(4),this.api=null,this.errors=[],this._sensorQ=new ce,this._outQ=new ce,this._onSensorRead=this._onSensorRead.bind(this),this._onSensorError=this._onSensorError.bind(this),this.init()}return s(e,[{key:\"init\",value:function(){var e=null;try{(e=new RelativeOrientationSensor({frequency:we,referenceFrame:\"screen\"})).addEventListener(\"error\",this._onSensorError)}catch(e){this.errors.push(e),\"SecurityError\"===e.name?(console.error(\"Cannot construct sensors due to the Feature Policy\"),console.warn('Attempting to fall back using \"devicemotion\"; however this will fail in the future without correct permissions.'),this.useDeviceMotion()):\"ReferenceError\"===e.name?this.useDeviceMotion():console.error(e)}e&&(this.api=\"sensor\",this.sensor=e,this.sensor.addEventListener(\"reading\",this._onSensorRead),this.sensor.start())}},{key:\"useDeviceMotion\",value:function(){this.api=\"devicemotion\",this.fusionSensor=new xe(this.config.K_FILTER,this.config.PREDICTION_TIME_S,this.config.YAW_ONLY,this.config.DEBUG),this.sensor&&(this.sensor.removeEventListener(\"reading\",this._onSensorRead),this.sensor.removeEventListener(\"error\",this._onSensorError),this.sensor=null)}},{key:\"getOrientation\",value:function(){if(this.fusionSensor)return this.fusionSensor.getOrientation();if(!this.sensor||!this.sensor.quaternion)return this._out[0]=this._out[1]=this._out[2]=0,this._out[3]=1,this._out;var e=this.sensor.quaternion;this._sensorQ.set(e[0],e[1],e[2],e[3]);var t=this._outQ;return t.copy(_e),t.multiply(this._sensorQ),this.config.YAW_ONLY&&(t.x=t.z=0,t.normalize()),this._out[0]=t.x,this._out[1]=t.y,this._out[2]=t.z,this._out[3]=t.w,this._out}},{key:\"_onSensorError\",value:function(e){this.errors.push(e.error),\"NotAllowedError\"===e.error.name?console.error(\"Permission to access sensor was denied\"):\"NotReadableError\"===e.error.name?console.error(\"Sensor could not be read\"):console.error(e.error),this.useDeviceMotion()}},{key:\"_onSensorRead\",value:function(){}}]),e}(),Be=\"\u003Csvg width='198' height='240' viewBox='0 0 198 240' xmlns='http://www.w3.org/2000/svg'>\u003Cg fill='none' fill-rule='evenodd'>\u003Cpath d='M149.625 109.527l6.737 3.891v.886c0 .177.013.36.038.549.01.081.02.162.027.242.14 1.415.974 2.998 2.105 3.999l5.72 5.062.081-.09s4.382-2.53 5.235-3.024l25.97 14.993v54.001c0 .771-.386 1.217-.948 1.217-.233 0-.495-.076-.772-.236l-23.967-13.838-.014.024-27.322 15.775-.85-1.323c-4.731-1.529-9.748-2.74-14.951-3.61a.27.27 0 0 0-.007.024l-5.067 16.961-7.891 4.556-.037-.063v27.59c0 .772-.386 1.217-.948 1.217-.232 0-.495-.076-.772-.236l-42.473-24.522c-.95-.549-1.72-1.877-1.72-2.967v-1.035l-.021.047a5.111 5.111 0 0 0-1.816-.399 5.682 5.682 0 0 0-.546.001 13.724 13.724 0 0 1-1.918-.041c-1.655-.153-3.2-.6-4.404-1.296l-46.576-26.89.005.012-10.278-18.75c-1.001-1.827-.241-4.216 1.698-5.336l56.011-32.345a4.194 4.194 0 0 1 2.099-.572c1.326 0 2.572.659 3.227 1.853l.005-.003.227.413-.006.004a9.63 9.63 0 0 0 1.477 2.018l.277.27c1.914 1.85 4.468 2.801 7.113 2.801 1.949 0 3.948-.517 5.775-1.572.013 0 7.319-4.219 7.319-4.219a4.194 4.194 0 0 1 2.099-.572c1.326 0 2.572.658 3.226 1.853l3.25 5.928.022-.018 6.785 3.917-.105-.182 46.881-26.965m0-1.635c-.282 0-.563.073-.815.218l-46.169 26.556-5.41-3.124-3.005-5.481c-.913-1.667-2.699-2.702-4.66-2.703-1.011 0-2.02.274-2.917.792a3825 3825 0 0 1-7.275 4.195l-.044.024a9.937 9.937 0 0 1-4.957 1.353c-2.292 0-4.414-.832-5.976-2.342l-.252-.245a7.992 7.992 0 0 1-1.139-1.534 1.379 1.379 0 0 0-.06-.122l-.227-.414a1.718 1.718 0 0 0-.095-.154c-.938-1.574-2.673-2.545-4.571-2.545-1.011 0-2.02.274-2.917.792L3.125 155.502c-2.699 1.559-3.738 4.94-2.314 7.538l10.278 18.75c.177.323.448.563.761.704l46.426 26.804c1.403.81 3.157 1.332 5.072 1.508a15.661 15.661 0 0 0 2.146.046 4.766 4.766 0 0 1 .396 0c.096.004.19.011.283.022.109 1.593 1.159 3.323 2.529 4.114l42.472 24.522c.524.302 1.058.455 1.59.455 1.497 0 2.583-1.2 2.583-2.852v-26.562l7.111-4.105a1.64 1.64 0 0 0 .749-.948l4.658-15.593c4.414.797 8.692 1.848 12.742 3.128l.533.829a1.634 1.634 0 0 0 2.193.531l26.532-15.317L193 192.433c.523.302 1.058.455 1.59.455 1.497 0 2.583-1.199 2.583-2.852v-54.001c0-.584-.312-1.124-.818-1.416l-25.97-14.993a1.633 1.633 0 0 0-1.636.001c-.606.351-2.993 1.73-4.325 2.498l-4.809-4.255c-.819-.725-1.461-1.933-1.561-2.936a7.776 7.776 0 0 0-.033-.294 2.487 2.487 0 0 1-.023-.336v-.886c0-.584-.312-1.123-.817-1.416l-6.739-3.891a1.633 1.633 0 0 0-.817-.219' fill='#455A64'/>\u003Cpath d='M96.027 132.636l46.576 26.891c1.204.695 1.979 1.587 2.242 2.541l-.01.007-81.374 46.982h-.001c-1.654-.152-3.199-.6-4.403-1.295l-46.576-26.891 83.546-48.235' fill='#FAFAFA'/>\u003Cpath d='M63.461 209.174c-.008 0-.015 0-.022-.002-1.693-.156-3.228-.609-4.441-1.309l-46.576-26.89a.118.118 0 0 1 0-.203l83.546-48.235a.117.117 0 0 1 .117 0l46.576 26.891c1.227.708 2.021 1.612 2.296 2.611a.116.116 0 0 1-.042.124l-.021.016-81.375 46.981a.11.11 0 0 1-.058.016zm-50.747-28.303l46.401 26.79c1.178.68 2.671 1.121 4.32 1.276l81.272-46.922c-.279-.907-1.025-1.73-2.163-2.387l-46.517-26.857-83.313 48.1z' fill='#607D8B'/>\u003Cpath d='M148.327 165.471a5.85 5.85 0 0 1-.546.001c-1.894-.083-3.302-1.038-3.145-2.132a2.693 2.693 0 0 0-.072-1.105l-81.103 46.822c.628.058 1.272.073 1.918.042.182-.009.364-.009.546-.001 1.894.083 3.302 1.038 3.145 2.132l79.257-45.759' fill='#FFF'/>\u003Cpath d='M69.07 211.347a.118.118 0 0 1-.115-.134c.045-.317-.057-.637-.297-.925-.505-.61-1.555-1.022-2.738-1.074a5.966 5.966 0 0 0-.535.001 14.03 14.03 0 0 1-1.935-.041.117.117 0 0 1-.103-.092.116.116 0 0 1 .055-.126l81.104-46.822a.117.117 0 0 1 .171.07c.104.381.129.768.074 1.153-.045.316.057.637.296.925.506.61 1.555 1.021 2.739 1.073.178.008.357.008.535-.001a.117.117 0 0 1 .064.218l-79.256 45.759a.114.114 0 0 1-.059.016zm-3.405-2.372c.089 0 .177.002.265.006 1.266.056 2.353.488 2.908 1.158.227.274.35.575.36.882l78.685-45.429c-.036 0-.072-.001-.107-.003-1.267-.056-2.354-.489-2.909-1.158-.282-.34-.402-.724-.347-1.107a2.604 2.604 0 0 0-.032-.91L63.846 208.97a13.91 13.91 0 0 0 1.528.012c.097-.005.194-.007.291-.007z' fill='#607D8B'/>\u003Cpath d='M2.208 162.134c-1.001-1.827-.241-4.217 1.698-5.337l56.011-32.344c1.939-1.12 4.324-.546 5.326 1.281l.232.41a9.344 9.344 0 0 0 1.47 2.021l.278.27c3.325 3.214 8.583 3.716 12.888 1.23l7.319-4.22c1.94-1.119 4.324-.546 5.325 1.282l3.25 5.928-83.519 48.229-10.278-18.75z' fill='#FAFAFA'/>\u003Cpath d='M12.486 181.001a.112.112 0 0 1-.031-.005.114.114 0 0 1-.071-.056L2.106 162.19c-1.031-1.88-.249-4.345 1.742-5.494l56.01-32.344a4.328 4.328 0 0 1 2.158-.588c1.415 0 2.65.702 3.311 1.882.01.008.018.017.024.028l.227.414a.122.122 0 0 1 .013.038 9.508 9.508 0 0 0 1.439 1.959l.275.266c1.846 1.786 4.344 2.769 7.031 2.769 1.977 0 3.954-.538 5.717-1.557a.148.148 0 0 1 .035-.013l7.284-4.206a4.321 4.321 0 0 1 2.157-.588c1.427 0 2.672.716 3.329 1.914l3.249 5.929a.116.116 0 0 1-.044.157l-83.518 48.229a.116.116 0 0 1-.059.016zm49.53-57.004c-.704 0-1.41.193-2.041.557l-56.01 32.345c-1.882 1.086-2.624 3.409-1.655 5.179l10.221 18.645 83.317-48.112-3.195-5.829c-.615-1.122-1.783-1.792-3.124-1.792a4.08 4.08 0 0 0-2.04.557l-7.317 4.225a.148.148 0 0 1-.035.013 11.7 11.7 0 0 1-5.801 1.569c-2.748 0-5.303-1.007-7.194-2.835l-.278-.27a9.716 9.716 0 0 1-1.497-2.046.096.096 0 0 1-.013-.037l-.191-.347a.11.11 0 0 1-.023-.029c-.615-1.123-1.783-1.793-3.124-1.793z' fill='#607D8B'/>\u003Cpath d='M42.434 155.808c-2.51-.001-4.697-1.258-5.852-3.365-1.811-3.304-.438-7.634 3.059-9.654l12.291-7.098a7.599 7.599 0 0 1 3.789-1.033c2.51 0 4.697 1.258 5.852 3.365 1.811 3.304.439 7.634-3.059 9.654l-12.291 7.098a7.606 7.606 0 0 1-3.789 1.033zm13.287-20.683a7.128 7.128 0 0 0-3.555.971l-12.291 7.098c-3.279 1.893-4.573 5.942-2.883 9.024 1.071 1.955 3.106 3.122 5.442 3.122a7.13 7.13 0 0 0 3.556-.97l12.291-7.098c3.279-1.893 4.572-5.942 2.883-9.024-1.072-1.955-3.106-3.123-5.443-3.123z' fill='#607D8B'/>\u003Cpath d='M149.588 109.407l6.737 3.89v.887c0 .176.013.36.037.549.011.081.02.161.028.242.14 1.415.973 2.998 2.105 3.999l7.396 6.545c.177.156.358.295.541.415 1.579 1.04 2.95.466 3.062-1.282.049-.784.057-1.595.023-2.429l-.003-.16v-1.151l25.987 15.003v54c0 1.09-.77 1.53-1.72.982l-42.473-24.523c-.95-.548-1.72-1.877-1.72-2.966v-34.033' fill='#FAFAFA'/>\u003Cpath d='M194.553 191.25c-.257 0-.54-.085-.831-.253l-42.472-24.521c-.981-.567-1.779-1.943-1.779-3.068v-34.033h.234v34.033c0 1.051.745 2.336 1.661 2.866l42.473 24.521c.424.245.816.288 1.103.122.285-.164.442-.52.442-1.002v-53.933l-25.753-14.868.003 1.106c.034.832.026 1.654-.024 2.439-.054.844-.396 1.464-.963 1.746-.619.309-1.45.173-2.28-.373a5.023 5.023 0 0 1-.553-.426l-7.397-6.544c-1.158-1.026-1.999-2.625-2.143-4.076a9.624 9.624 0 0 0-.027-.238 4.241 4.241 0 0 1-.038-.564v-.82l-6.68-3.856.117-.202 6.738 3.89.058.034v.954c0 .171.012.351.036.533.011.083.021.165.029.246.138 1.395.948 2.935 2.065 3.923l7.397 6.545c.173.153.35.289.527.406.758.499 1.504.63 2.047.359.49-.243.786-.795.834-1.551.05-.778.057-1.591.024-2.417l-.004-.163v-1.355l.175.1 25.987 15.004.059.033v54.068c0 .569-.198.996-.559 1.204a1.002 1.002 0 0 1-.506.131' fill='#607D8B'/>\u003Cpath d='M145.685 163.161l24.115 13.922-25.978 14.998-1.462-.307c-6.534-2.17-13.628-3.728-21.019-4.616-4.365-.524-8.663 1.096-9.598 3.62a2.746 2.746 0 0 0-.011 1.928c1.538 4.267 4.236 8.363 7.995 12.135l.532.845-25.977 14.997-24.115-13.922 75.518-43.6' fill='#FFF'/>\u003Cpath d='M94.282 220.818l-.059-.033-24.29-14.024.175-.101 75.577-43.634.058.033 24.29 14.024-26.191 15.122-.045-.01-1.461-.307c-6.549-2.174-13.613-3.725-21.009-4.614a13.744 13.744 0 0 0-1.638-.097c-3.758 0-7.054 1.531-7.837 3.642a2.62 2.62 0 0 0-.01 1.848c1.535 4.258 4.216 8.326 7.968 12.091l.016.021.526.835.006.01.064.102-.105.061-25.977 14.998-.058.033zm-23.881-14.057l23.881 13.788 24.802-14.32c.546-.315.846-.489 1.017-.575l-.466-.74c-3.771-3.787-6.467-7.881-8.013-12.168a2.851 2.851 0 0 1 .011-2.008c.815-2.199 4.203-3.795 8.056-3.795.557 0 1.117.033 1.666.099 7.412.891 14.491 2.445 21.041 4.621.836.175 1.215.254 1.39.304l25.78-14.884-23.881-13.788-75.284 43.466z' fill='#607D8B'/>\u003Cpath d='M167.23 125.979v50.871l-27.321 15.773-6.461-14.167c-.91-1.996-3.428-1.738-5.624.574a10.238 10.238 0 0 0-2.33 4.018l-6.46 21.628-27.322 15.774v-50.871l75.518-43.6' fill='#FFF'/>\u003Cpath d='M91.712 220.567a.127.127 0 0 1-.059-.016.118.118 0 0 1-.058-.101v-50.871c0-.042.023-.08.058-.101l75.519-43.6a.117.117 0 0 1 .175.101v50.871c0 .041-.023.08-.059.1l-27.321 15.775a.118.118 0 0 1-.094.01.12.12 0 0 1-.071-.063l-6.46-14.168c-.375-.822-1.062-1.275-1.934-1.275-1.089 0-2.364.686-3.5 1.881a10.206 10.206 0 0 0-2.302 3.972l-6.46 21.627a.118.118 0 0 1-.054.068L91.77 220.551a.12.12 0 0 1-.058.016zm.117-50.92v50.601l27.106-15.65 6.447-21.583a10.286 10.286 0 0 1 2.357-4.065c1.18-1.242 2.517-1.954 3.669-1.954.969 0 1.731.501 2.146 1.411l6.407 14.051 27.152-15.676v-50.601l-75.284 43.466z' fill='#607D8B'/>\u003Cpath d='M168.543 126.213v50.87l-27.322 15.774-6.46-14.168c-.91-1.995-3.428-1.738-5.624.574a10.248 10.248 0 0 0-2.33 4.019l-6.461 21.627-27.321 15.774v-50.87l75.518-43.6' fill='#FFF'/>\u003Cpath d='M93.025 220.8a.123.123 0 0 1-.059-.015.12.12 0 0 1-.058-.101v-50.871c0-.042.023-.08.058-.101l75.518-43.6a.112.112 0 0 1 .117 0c.036.02.059.059.059.1v50.871a.116.116 0 0 1-.059.101l-27.321 15.774a.111.111 0 0 1-.094.01.115.115 0 0 1-.071-.062l-6.46-14.168c-.375-.823-1.062-1.275-1.935-1.275-1.088 0-2.363.685-3.499 1.881a10.19 10.19 0 0 0-2.302 3.971l-6.461 21.628a.108.108 0 0 1-.053.067l-27.322 15.775a.12.12 0 0 1-.058.015zm.117-50.919v50.6l27.106-15.649 6.447-21.584a10.293 10.293 0 0 1 2.357-4.065c1.179-1.241 2.516-1.954 3.668-1.954.969 0 1.732.502 2.147 1.412l6.407 14.051 27.152-15.676v-50.601l-75.284 43.466z' fill='#607D8B'/>\u003Cpath d='M169.8 177.083l-27.322 15.774-6.46-14.168c-.91-1.995-3.428-1.738-5.625.574a10.246 10.246 0 0 0-2.329 4.019l-6.461 21.627-27.321 15.774v-50.87l75.518-43.6v50.87z' fill='#FAFAFA'/>\u003Cpath d='M94.282 220.917a.234.234 0 0 1-.234-.233v-50.871c0-.083.045-.161.117-.202l75.518-43.601a.234.234 0 1 1 .35.202v50.871a.233.233 0 0 1-.116.202l-27.322 15.775a.232.232 0 0 1-.329-.106l-6.461-14.168c-.36-.789-.992-1.206-1.828-1.206-1.056 0-2.301.672-3.415 1.844a10.099 10.099 0 0 0-2.275 3.924l-6.46 21.628a.235.235 0 0 1-.107.136l-27.322 15.774a.23.23 0 0 1-.116.031zm.233-50.969v50.331l26.891-15.525 6.434-21.539a10.41 10.41 0 0 1 2.384-4.112c1.201-1.265 2.569-1.991 3.753-1.991 1.018 0 1.818.526 2.253 1.48l6.354 13.934 26.982-15.578v-50.331l-75.051 43.331z' fill='#607D8B'/>\u003Cpath d='M109.894 199.943c-1.774 0-3.241-.725-4.244-2.12a.224.224 0 0 1 .023-.294.233.233 0 0 1 .301-.023c.78.547 1.705.827 2.75.827 1.323 0 2.754-.439 4.256-1.306 5.311-3.067 9.631-10.518 9.631-16.611 0-1.927-.442-3.56-1.278-4.724a.232.232 0 0 1 .323-.327c1.671 1.172 2.591 3.381 2.591 6.219 0 6.242-4.426 13.863-9.865 17.003-1.574.908-3.084 1.356-4.488 1.356zm-2.969-1.542c.813.651 1.82.877 2.968.877h.001c1.321 0 2.753-.327 4.254-1.194 5.311-3.067 9.632-10.463 9.632-16.556 0-1.979-.463-3.599-1.326-4.761.411 1.035.625 2.275.625 3.635 0 6.243-4.426 13.883-9.865 17.023-1.574.909-3.084 1.317-4.49 1.317-.641 0-1.243-.149-1.799-.341z' fill='#607D8B'/>\u003Cpath d='M113.097 197.23c5.384-3.108 9.748-10.636 9.748-16.814 0-2.051-.483-3.692-1.323-4.86-1.784-1.252-4.374-1.194-7.257.47-5.384 3.108-9.748 10.636-9.748 16.814 0 2.051.483 3.692 1.323 4.86 1.784 1.252 4.374 1.194 7.257-.47' fill='#FAFAFA'/>\u003Cpath d='M108.724 198.614c-1.142 0-2.158-.213-3.019-.817-.021-.014-.04.014-.055-.007-.894-1.244-1.367-2.948-1.367-4.973 0-6.242 4.426-13.864 9.865-17.005 1.574-.908 3.084-1.363 4.49-1.363 1.142 0 2.158.309 3.018.913a.23.23 0 0 1 .056.056c.894 1.244 1.367 2.972 1.367 4.997 0 6.243-4.426 13.783-9.865 16.923-1.574.909-3.084 1.276-4.49 1.276zm-2.718-1.109c.774.532 1.688.776 2.718.776 1.323 0 2.754-.413 4.256-1.28 5.311-3.066 9.631-10.505 9.631-16.598 0-1.909-.434-3.523-1.255-4.685-.774-.533-1.688-.799-2.718-.799-1.323 0-2.755.441-4.256 1.308-5.311 3.066-9.631 10.506-9.631 16.599 0 1.909.434 3.517 1.255 4.679z' fill='#607D8B'/>\u003Cpath d='M149.318 114.262l-9.984 8.878 15.893 11.031 5.589-6.112-11.498-13.797' fill='#FAFAFA'/>\u003Cpath d='M169.676 120.84l-9.748 5.627c-3.642 2.103-9.528 2.113-13.147.024-3.62-2.089-3.601-5.488.041-7.591l9.495-5.608-6.729-3.885-81.836 47.071 45.923 26.514 3.081-1.779c.631-.365.869-.898.618-1.39-2.357-4.632-2.593-9.546-.683-14.262 5.638-13.92 24.509-24.815 48.618-28.07 8.169-1.103 16.68-.967 24.704.394.852.145 1.776.008 2.407-.357l3.081-1.778-25.825-14.91' fill='#FAFAFA'/>\u003Cpath d='M113.675 183.459a.47.47 0 0 1-.233-.062l-45.924-26.515a.468.468 0 0 1 .001-.809l81.836-47.071a.467.467 0 0 1 .466 0l6.729 3.885a.467.467 0 0 1-.467.809l-6.496-3.75-80.9 46.533 44.988 25.973 2.848-1.644c.192-.111.62-.409.435-.773-2.416-4.748-2.658-9.814-.7-14.65 2.806-6.927 8.885-13.242 17.582-18.263 8.657-4.998 19.518-8.489 31.407-10.094 8.198-1.107 16.79-.97 24.844.397.739.125 1.561.007 2.095-.301l2.381-1.374-25.125-14.506a.467.467 0 0 1 .467-.809l25.825 14.91a.467.467 0 0 1 0 .809l-3.081 1.779c-.721.417-1.763.575-2.718.413-7.963-1.351-16.457-1.486-24.563-.392-11.77 1.589-22.512 5.039-31.065 9.977-8.514 4.916-14.456 11.073-17.183 17.805-1.854 4.578-1.623 9.376.666 13.875.37.725.055 1.513-.8 2.006l-3.081 1.78a.476.476 0 0 1-.234.062' fill='#455A64'/>\u003Cpath d='M153.316 128.279c-2.413 0-4.821-.528-6.652-1.586-1.818-1.049-2.82-2.461-2.82-3.975 0-1.527 1.016-2.955 2.861-4.02l9.493-5.607a.233.233 0 1 1 .238.402l-9.496 5.609c-1.696.979-2.628 2.263-2.628 3.616 0 1.34.918 2.608 2.585 3.571 3.549 2.049 9.343 2.038 12.914-.024l9.748-5.628a.234.234 0 0 1 .234.405l-9.748 5.628c-1.858 1.072-4.296 1.609-6.729 1.609' fill='#607D8B'/>\u003Cpath d='M113.675 182.992l-45.913-26.508M113.675 183.342a.346.346 0 0 1-.175-.047l-45.913-26.508a.35.35 0 1 1 .35-.607l45.913 26.508a.35.35 0 0 1-.175.654' fill='#455A64'/>\u003Cpath d='M67.762 156.484v54.001c0 1.09.77 2.418 1.72 2.967l42.473 24.521c.95.549 1.72.11 1.72-.98v-54.001' fill='#FAFAFA'/>\u003Cpath d='M112.727 238.561c-.297 0-.62-.095-.947-.285l-42.473-24.521c-1.063-.613-1.895-2.05-1.895-3.27v-54.001a.35.35 0 1 1 .701 0v54.001c0 .96.707 2.18 1.544 2.663l42.473 24.522c.344.198.661.243.87.122.206-.119.325-.411.325-.799v-54.001a.35.35 0 1 1 .7 0v54.001c0 .655-.239 1.154-.675 1.406a1.235 1.235 0 0 1-.623.162' fill='#455A64'/>\u003Cpath d='M112.86 147.512h-.001c-2.318 0-4.499-.522-6.142-1.471-1.705-.984-2.643-2.315-2.643-3.749 0-1.445.952-2.791 2.68-3.788l12.041-6.953c1.668-.962 3.874-1.493 6.212-1.493 2.318 0 4.499.523 6.143 1.472 1.704.984 2.643 2.315 2.643 3.748 0 1.446-.952 2.791-2.68 3.789l-12.042 6.952c-1.668.963-3.874 1.493-6.211 1.493zm12.147-16.753c-2.217 0-4.298.497-5.861 1.399l-12.042 6.952c-1.502.868-2.33 1.998-2.33 3.182 0 1.173.815 2.289 2.293 3.142 1.538.889 3.596 1.378 5.792 1.378h.001c2.216 0 4.298-.497 5.861-1.399l12.041-6.953c1.502-.867 2.33-1.997 2.33-3.182 0-1.172-.814-2.288-2.292-3.142-1.539-.888-3.596-1.377-5.793-1.377z' fill='#607D8B'/>\u003Cpath d='M165.63 123.219l-5.734 3.311c-3.167 1.828-8.286 1.837-11.433.02-3.147-1.817-3.131-4.772.036-6.601l5.734-3.31 11.397 6.58' fill='#FAFAFA'/>\u003Cpath d='M154.233 117.448l9.995 5.771-4.682 2.704c-1.434.827-3.352 1.283-5.399 1.283-2.029 0-3.923-.449-5.333-1.263-1.29-.744-2-1.694-2-2.674 0-.991.723-1.955 2.036-2.713l5.383-3.108m0-.809l-5.734 3.31c-3.167 1.829-3.183 4.784-.036 6.601 1.568.905 3.623 1.357 5.684 1.357 2.077 0 4.159-.46 5.749-1.377l5.734-3.311-11.397-6.58M145.445 179.667c-1.773 0-3.241-.85-4.243-2.245-.067-.092-.057-.275.023-.356.08-.081.207-.12.3-.055.781.548 1.706.812 2.751.811 1.322 0 2.754-.446 4.256-1.313 5.31-3.066 9.631-10.522 9.631-16.615 0-1.927-.442-3.562-1.279-4.726a.235.235 0 0 1 .024-.301.232.232 0 0 1 .3-.027c1.67 1.172 2.59 3.38 2.59 6.219 0 6.242-4.425 13.987-9.865 17.127-1.573.908-3.083 1.481-4.488 1.481zM142.476 178c.814.651 1.82 1.002 2.969 1.002 1.322 0 2.753-.452 4.255-1.32 5.31-3.065 9.631-10.523 9.631-16.617 0-1.98-.463-3.63-1.325-4.793.411 1.035.624 2.26.624 3.62 0 6.242-4.425 13.875-9.865 17.015-1.573.909-3.084 1.376-4.489 1.376a5.49 5.49 0 0 1-1.8-.283z' fill='#607D8B'/>\u003Cpath d='M148.648 176.704c5.384-3.108 9.748-10.636 9.748-16.813 0-2.052-.483-3.693-1.322-4.861-1.785-1.252-4.375-1.194-7.258.471-5.383 3.108-9.748 10.636-9.748 16.813 0 2.051.484 3.692 1.323 4.86 1.785 1.253 4.374 1.195 7.257-.47' fill='#FAFAFA'/>\u003Cpath d='M144.276 178.276c-1.143 0-2.158-.307-3.019-.911a.217.217 0 0 1-.055-.054c-.895-1.244-1.367-2.972-1.367-4.997 0-6.241 4.425-13.875 9.865-17.016 1.573-.908 3.084-1.369 4.489-1.369 1.143 0 2.158.307 3.019.91a.24.24 0 0 1 .055.055c.894 1.244 1.367 2.971 1.367 4.997 0 6.241-4.425 13.875-9.865 17.016-1.573.908-3.084 1.369-4.489 1.369zm-2.718-1.172c.773.533 1.687.901 2.718.901 1.322 0 2.754-.538 4.256-1.405 5.31-3.066 9.631-10.567 9.631-16.661 0-1.908-.434-3.554-1.256-4.716-.774-.532-1.688-.814-2.718-.814-1.322 0-2.754.433-4.256 1.3-5.31 3.066-9.631 10.564-9.631 16.657 0 1.91.434 3.576 1.256 4.738z' fill='#607D8B'/>\u003Cpath d='M150.72 172.361l-.363-.295a24.105 24.105 0 0 0 2.148-3.128 24.05 24.05 0 0 0 1.977-4.375l.443.149a24.54 24.54 0 0 1-2.015 4.46 24.61 24.61 0 0 1-2.19 3.189M115.917 191.514l-.363-.294a24.174 24.174 0 0 0 2.148-3.128 24.038 24.038 0 0 0 1.976-4.375l.443.148a24.48 24.48 0 0 1-2.015 4.461 24.662 24.662 0 0 1-2.189 3.188M114 237.476V182.584 237.476' fill='#607D8B'/>\u003Cg>\u003Cpath d='M81.822 37.474c.017-.135-.075-.28-.267-.392-.327-.188-.826-.21-1.109-.045l-6.012 3.471c-.131.076-.194.178-.191.285.002.132.002.461.002.578v.043l-.007.128-6.591 3.779c-.001 0-2.077 1.046-2.787 5.192 0 0-.912 6.961-.898 19.745.015 12.57.606 17.07 1.167 21.351.22 1.684 3.001 2.125 3.001 2.125.331.04.698-.027 1.08-.248l75.273-43.551c1.808-1.069 2.667-3.719 3.056-6.284 1.213-7.99 1.675-32.978-.275-39.878-.196-.693-.51-1.083-.868-1.282l-2.086-.79c-.727.028-1.416.467-1.534.535L82.032 37.072l-.21.402' fill='#FFF'/>\u003Cpath d='M144.311 1.701l2.085.79c.358.199.672.589.868 1.282 1.949 6.9 1.487 31.887.275 39.878-.39 2.565-1.249 5.215-3.056 6.284L69.21 93.486a1.78 1.78 0 0 1-.896.258l-.183-.011c0 .001-2.782-.44-3.003-2.124-.56-4.282-1.151-8.781-1.165-21.351-.015-12.784.897-19.745.897-19.745.71-4.146 2.787-5.192 2.787-5.192l6.591-3.779.007-.128v-.043c0-.117 0-.446-.002-.578-.003-.107.059-.21.191-.285l6.012-3.472a.98.98 0 0 1 .481-.11c.218 0 .449.053.627.156.193.112.285.258.268.392l.211-.402 60.744-34.836c.117-.068.806-.507 1.534-.535m0-.997l-.039.001c-.618.023-1.283.244-1.974.656l-.021.012-60.519 34.706a2.358 2.358 0 0 0-.831-.15c-.365 0-.704.084-.98.244l-6.012 3.471c-.442.255-.699.69-.689 1.166l.001.15-6.08 3.487c-.373.199-2.542 1.531-3.29 5.898l-.006.039c-.009.07-.92 7.173-.906 19.875.014 12.62.603 17.116 1.172 21.465l.002.015c.308 2.355 3.475 2.923 3.836 2.98l.034.004c.101.013.204.019.305.019a2.77 2.77 0 0 0 1.396-.392l75.273-43.552c1.811-1.071 2.999-3.423 3.542-6.997 1.186-7.814 1.734-33.096-.301-40.299-.253-.893-.704-1.527-1.343-1.882l-.132-.062-2.085-.789a.973.973 0 0 0-.353-.065' fill='#455A64'/>\u003Cpath d='M128.267 11.565l1.495.434-56.339 32.326' fill='#FFF'/>\u003Cpath d='M74.202 90.545a.5.5 0 0 1-.25-.931l18.437-10.645a.499.499 0 1 1 .499.864L74.451 90.478l-.249.067M75.764 42.654l-.108-.062.046-.171 5.135-2.964.17.045-.045.171-5.135 2.964-.063.017M70.52 90.375V46.421l.063-.036L137.84 7.554v43.954l-.062.036L70.52 90.375zm.25-43.811v43.38l66.821-38.579V7.985L70.77 46.564z' fill='#607D8B'/>\u003Cpath d='M86.986 83.182c-.23.149-.612.384-.849.523l-11.505 6.701c-.237.139-.206.252.068.252h.565c.275 0 .693-.113.93-.252L87.7 83.705c.237-.139.428-.253.425-.256a11.29 11.29 0 0 1-.006-.503c0-.274-.188-.377-.418-.227l-.715.463' fill='#607D8B'/>\u003Cpath d='M75.266 90.782H74.7c-.2 0-.316-.056-.346-.166-.03-.11.043-.217.215-.317l11.505-6.702c.236-.138.615-.371.844-.519l.715-.464a.488.488 0 0 1 .266-.089c.172 0 .345.13.345.421 0 .214.001.363.003.437l.006.004-.004.069c-.003.075-.003.075-.486.356l-11.505 6.702a2.282 2.282 0 0 1-.992.268zm-.6-.25l.034.001h.566c.252 0 .649-.108.866-.234l11.505-6.702c.168-.098.294-.173.361-.214-.004-.084-.004-.218-.004-.437l-.095-.171-.131.049-.714.463c-.232.15-.616.386-.854.525l-11.505 6.702-.029.018z' fill='#607D8B'/>\u003Cpath d='M75.266 89.871H74.7c-.2 0-.316-.056-.346-.166-.03-.11.043-.217.215-.317l11.505-6.702c.258-.151.694-.268.993-.268h.565c.2 0 .316.056.346.166.03.11-.043.217-.215.317l-11.505 6.702a2.282 2.282 0 0 1-.992.268zm-.6-.25l.034.001h.566c.252 0 .649-.107.866-.234l11.505-6.702.03-.018-.035-.001h-.565c-.252 0-.649.108-.867.234l-11.505 6.702-.029.018zM74.37 90.801v-1.247 1.247' fill='#607D8B'/>\u003Cpath d='M68.13 93.901c-.751-.093-1.314-.737-1.439-1.376-.831-4.238-1.151-8.782-1.165-21.352-.015-12.784.897-19.745.897-19.745.711-4.146 2.787-5.192 2.787-5.192l74.859-43.219c.223-.129 2.487-1.584 3.195.923 1.95 6.9 1.488 31.887.275 39.878-.389 2.565-1.248 5.215-3.056 6.283L69.21 93.653c-.382.221-.749.288-1.08.248 0 0-2.781-.441-3.001-2.125-.561-4.281-1.152-8.781-1.167-21.351-.014-12.784.898-19.745.898-19.745.71-4.146 2.787-5.191 2.787-5.191l6.598-3.81.871-.119 6.599-3.83.046-.461L68.13 93.901' fill='#FAFAFA'/>\u003Cpath d='M68.317 94.161l-.215-.013h-.001l-.244-.047c-.719-.156-2.772-.736-2.976-2.292-.568-4.34-1.154-8.813-1.168-21.384-.014-12.654.891-19.707.9-19.777.725-4.231 2.832-5.338 2.922-5.382l6.628-3.827.87-.119 6.446-3.742.034-.334a.248.248 0 0 1 .273-.223.248.248 0 0 1 .223.272l-.059.589-6.752 3.919-.87.118-6.556 3.785c-.031.016-1.99 1.068-2.666 5.018-.007.06-.908 7.086-.894 19.702.014 12.539.597 16.996 1.161 21.305.091.691.689 1.154 1.309 1.452a1.95 1.95 0 0 1-.236-.609c-.781-3.984-1.155-8.202-1.17-21.399-.014-12.653.891-19.707.9-19.777.725-4.231 2.832-5.337 2.922-5.382-.004.001 74.444-42.98 74.846-43.212l.028-.017c.904-.538 1.72-.688 2.36-.433.555.221.949.733 1.172 1.52 2.014 7.128 1.46 32.219.281 39.983-.507 3.341-1.575 5.515-3.175 6.462L69.335 93.869a2.023 2.023 0 0 1-1.018.292zm-.147-.507c.293.036.604-.037.915-.217l75.273-43.551c1.823-1.078 2.602-3.915 2.934-6.106 1.174-7.731 1.731-32.695-.268-39.772-.178-.631-.473-1.032-.876-1.192-.484-.193-1.166-.052-1.921.397l-.034.021-74.858 43.218c-.031.017-1.989 1.069-2.666 5.019-.007.059-.908 7.085-.894 19.702.015 13.155.386 17.351 1.161 21.303.09.461.476.983 1.037 1.139.114.025.185.037.196.039h.001z' fill='#455A64'/>\u003Cpath d='M69.317 68.982c.489-.281.885-.056.885.505 0 .56-.396 1.243-.885 1.525-.488.282-.884.057-.884-.504 0-.56.396-1.243.884-1.526' fill='#FFF'/>\u003Cpath d='M68.92 71.133c-.289 0-.487-.228-.487-.625 0-.56.396-1.243.884-1.526a.812.812 0 0 1 .397-.121c.289 0 .488.229.488.626 0 .56-.396 1.243-.885 1.525a.812.812 0 0 1-.397.121m.794-2.459a.976.976 0 0 0-.49.147c-.548.317-.978 1.058-.978 1.687 0 .486.271.812.674.812a.985.985 0 0 0 .491-.146c.548-.317.978-1.057.978-1.687 0-.486-.272-.813-.675-.813' fill='#8097A2'/>\u003Cpath d='M68.92 70.947c-.271 0-.299-.307-.299-.439 0-.491.361-1.116.79-1.363a.632.632 0 0 1 .303-.096c.272 0 .301.306.301.438 0 .491-.363 1.116-.791 1.364a.629.629 0 0 1-.304.096m.794-2.086a.812.812 0 0 0-.397.121c-.488.283-.884.966-.884 1.526 0 .397.198.625.487.625a.812.812 0 0 0 .397-.121c.489-.282.885-.965.885-1.525 0-.397-.199-.626-.488-.626' fill='#8097A2'/>\u003Cpath d='M69.444 85.35c.264-.152.477-.031.477.272 0 .303-.213.67-.477.822-.263.153-.477.031-.477-.271 0-.302.214-.671.477-.823' fill='#FFF'/>\u003Cpath d='M69.23 86.51c-.156 0-.263-.123-.263-.337 0-.302.214-.671.477-.823a.431.431 0 0 1 .214-.066c.156 0 .263.124.263.338 0 .303-.213.67-.477.822a.431.431 0 0 1-.214.066m.428-1.412c-.1 0-.203.029-.307.09-.32.185-.57.618-.57.985 0 .309.185.524.449.524a.63.63 0 0 0 .308-.09c.32-.185.57-.618.57-.985 0-.309-.185-.524-.45-.524' fill='#8097A2'/>\u003Cpath d='M69.23 86.322l-.076-.149c0-.235.179-.544.384-.661l.12-.041.076.151c0 .234-.179.542-.383.66l-.121.04m.428-1.038a.431.431 0 0 0-.214.066c-.263.152-.477.521-.477.823 0 .214.107.337.263.337a.431.431 0 0 0 .214-.066c.264-.152.477-.519.477-.822 0-.214-.107-.338-.263-.338' fill='#8097A2'/>\u003Cpath d='M139.278 7.769v43.667L72.208 90.16V46.493l67.07-38.724' fill='#455A64'/>\u003Cpath d='M72.083 90.375V46.421l.063-.036 67.257-38.831v43.954l-.062.036-67.258 38.831zm.25-43.811v43.38l66.821-38.579V7.985L72.333 46.564z' fill='#607D8B'/>\u003C/g>\u003Cpath d='M125.737 88.647l-7.639 3.334V84l-11.459 4.713v8.269L99 100.315l13.369 3.646 13.368-15.314' fill='#455A64'/>\u003C/g>\u003C/svg>\";function Se(){this.loadIcon_();var e=document.createElement(\"div\");(s=e.style).position=\"fixed\",s.top=0,s.right=0,s.bottom=0,s.left=0,s.backgroundColor=\"gray\",s.fontFamily=\"sans-serif\",s.zIndex=1e6;var t=document.createElement(\"img\");t.src=this.icon,(s=t.style).marginLeft=\"25%\",s.marginTop=\"25%\",s.width=\"50%\",e.appendChild(t);var n=document.createElement(\"div\");(s=n.style).textAlign=\"center\",s.fontSize=\"16px\",s.lineHeight=\"24px\",s.margin=\"24px 25%\",s.width=\"50%\",n.innerHTML=\"Place your phone into your Cardboard viewer.\",e.appendChild(n);var i=document.createElement(\"div\");(s=i.style).backgroundColor=\"#CFD8DC\",s.position=\"fixed\",s.bottom=0,s.width=\"100%\",s.height=\"48px\",s.padding=\"14px 24px\",s.boxSizing=\"border-box\",s.color=\"#656A6B\",e.appendChild(i);var r=document.createElement(\"div\");r.style.float=\"left\",r.innerHTML=\"No Cardboard viewer?\";var s,o=document.createElement(\"a\");o.href=\"https://www.google.com/get/cardboard/get-cardboard/\",o.innerHTML=\"get one\",o.target=\"_blank\",(s=o.style).float=\"right\",s.fontWeight=600,s.textTransform=\"uppercase\",s.borderLeft=\"1px solid gray\",s.paddingLeft=\"24px\",s.textDecoration=\"none\",s.color=\"#656A6B\",i.appendChild(r),i.appendChild(o),this.overlay=e,this.text=n,this.hide()}Se.prototype.show=function(e){e||this.overlay.parentElement?e&&(this.overlay.parentElement&&this.overlay.parentElement!=e&&this.overlay.parentElement.removeChild(this.overlay),e.appendChild(this.overlay)):document.body.appendChild(this.overlay),this.overlay.style.display=\"block\";var t=this.overlay.querySelector(\"img\").style;y()?(t.width=\"20%\",t.marginLeft=\"40%\",t.marginTop=\"3%\"):(t.width=\"50%\",t.marginLeft=\"25%\",t.marginTop=\"25%\")},Se.prototype.hide=function(){this.overlay.style.display=\"none\"},Se.prototype.showTemporarily=function(e,t){this.show(t),this.timer=setTimeout(this.hide.bind(this),e)},Se.prototype.disableShowTemporarily=function(){clearTimeout(this.timer)},Se.prototype.update=function(){this.disableShowTemporarily(),!y()&&S()?this.show():this.hide()},Se.prototype.loadIcon_=function(){this.icon=c(\"image/svg+xml\",Be)};var Te=\"CardboardV1\",Le=\"WEBVR_CARDBOARD_VIEWER\",De=\"webvr-polyfill-viewer-selector\";function Re(e){try{this.selectedKey=localStorage.getItem(Le)}catch(e){console.error(\"Failed to load viewer profile: %s\",e)}this.selectedKey||(this.selectedKey=e||Te),this.dialog=this.createDialog_(Ae.Viewers),this.root=null,this.onChangeCallbacks_=[]}function Pe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function ke(e,t){return e(t={exports:{}},t.exports),t.exports}Re.prototype.show=function(e){this.root=e,e.appendChild(this.dialog),this.dialog.querySelector(\"#\"+this.selectedKey).checked=!0,this.dialog.style.display=\"block\"},Re.prototype.hide=function(){this.root&&this.root.contains(this.dialog)&&this.root.removeChild(this.dialog),this.dialog.style.display=\"none\"},Re.prototype.getCurrentViewer=function(){return Ae.Viewers[this.selectedKey]},Re.prototype.getSelectedKey_=function(){var e=this.dialog.querySelector(\"input[name=field]:checked\");return e?e.id:null},Re.prototype.onChange=function(e){this.onChangeCallbacks_.push(e)},Re.prototype.fireOnChange_=function(e){for(var t=0;t\u003Cthis.onChangeCallbacks_.length;t++)this.onChangeCallbacks_[t](e)},Re.prototype.onSave_=function(){if(this.selectedKey=this.getSelectedKey_(),this.selectedKey&&Ae.Viewers[this.selectedKey]){this.fireOnChange_(Ae.Viewers[this.selectedKey]);try{localStorage.setItem(Le,this.selectedKey)}catch(e){console.error(\"Failed to save viewer profile: %s\",e)}this.hide()}else console.error(\"ViewerSelector.onSave_: this should never happen!\")},Re.prototype.createDialog_=function(e){var t=document.createElement(\"div\");t.classList.add(De),t.style.display=\"none\";var n=document.createElement(\"div\");(s=n.style).position=\"fixed\",s.left=0,s.top=0,s.width=\"100%\",s.height=\"100%\",s.background=\"rgba(0, 0, 0, 0.3)\",n.addEventListener(\"click\",this.hide.bind(this));var i=280,r=document.createElement(\"div\"),s=r.style;for(var o in s.boxSizing=\"border-box\",s.position=\"fixed\",s.top=\"24px\",s.left=\"50%\",s.marginLeft=-i/2+\"px\",s.width=i+\"px\",s.padding=\"24px\",s.overflow=\"hidden\",s.background=\"#fafafa\",s.fontFamily=\"'Roboto', sans-serif\",s.boxShadow=\"0px 5px 20px #666\",r.appendChild(this.createH1_(\"Select your viewer\")),e)r.appendChild(this.createChoice_(o,e[o].label));return r.appendChild(this.createButton_(\"Save\",this.onSave_.bind(this))),t.appendChild(n),t.appendChild(r),t},Re.prototype.createH1_=function(e){var t=document.createElement(\"h1\"),n=t.style;return n.color=\"black\",n.fontSize=\"20px\",n.fontWeight=\"bold\",n.marginTop=0,n.marginBottom=\"24px\",t.innerHTML=e,t},Re.prototype.createChoice_=function(e,t){var n=document.createElement(\"div\");n.style.marginTop=\"8px\",n.style.color=\"black\";var i=document.createElement(\"input\");i.style.fontSize=\"30px\",i.setAttribute(\"id\",e),i.setAttribute(\"type\",\"radio\"),i.setAttribute(\"value\",e),i.setAttribute(\"name\",\"field\");var r=document.createElement(\"label\");return r.style.marginLeft=\"4px\",r.setAttribute(\"for\",e),r.innerHTML=t,n.appendChild(i),n.appendChild(r),n},Re.prototype.createButton_=function(e,t){var n=document.createElement(\"button\");n.innerHTML=e;var i=n.style;return i.float=\"right\",i.textTransform=\"uppercase\",i.color=\"#1094f7\",i.fontSize=\"14px\",i.letterSpacing=0,i.border=0,i.background=\"none\",i.marginTop=\"16px\",n.addEventListener(\"click\",t),n},\"undefined\"!=typeof window?window:void 0!==e||\"undefined\"!=typeof self&&self;var Fe=ke((function(e,t){!function(t,n){e.exports=n()}(0,(function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=0)}([function(e,t,n){var i=function(){function e(e,t){for(var n=0;n\u003Ct.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}var s=n(1),o=\"undefined\"!=typeof navigator&&parseFloat((\"\"+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,\"\"])[1]).replace(\"undefined\",\"3_2\").replace(\"_\",\".\").replace(\"_\",\"\"))\u003C10&&!window.MSStream,a=function(){function e(){r(this,e),o?this.noSleepTimer=null:(this.noSleepVideo=document.createElement(\"video\"),this.noSleepVideo.setAttribute(\"playsinline\",\"\"),this.noSleepVideo.setAttribute(\"src\",s),this.noSleepVideo.addEventListener(\"timeupdate\",function(e){this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}.bind(this)))}return i(e,[{key:\"enable\",value:function(){o?(this.disable(),this.noSleepTimer=window.setInterval((function(){window.location.href=\"/\",window.setTimeout(window.stop,0)}),15e3)):this.noSleepVideo.play()}},{key:\"disable\",value:function(){o?this.noSleepTimer&&(window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause()}}]),e}();e.exports=a},function(e,t,n){e.exports=\"data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQAD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\"}])}))})),Oe=Pe(Fe),Qe=1e3,Ue=[0,0,.5,1],Ne=[.5,0,.5,1],Ge=window.requestAnimationFrame,ze=window.cancelAnimationFrame;function He(){this.leftProjectionMatrix=new Float32Array(16),this.leftViewMatrix=new Float32Array(16),this.rightProjectionMatrix=new Float32Array(16),this.rightViewMatrix=new Float32Array(16),this.pose=null}function Ve(e){Object.defineProperties(this,{hasPosition:{writable:!1,enumerable:!0,value:e.hasPosition},hasExternalDisplay:{writable:!1,enumerable:!0,value:e.hasExternalDisplay},canPresent:{writable:!1,enumerable:!0,value:e.canPresent},maxLayers:{writable:!1,enumerable:!0,value:e.maxLayers},hasOrientation:{enumerable:!0,get:function(){return O(\"VRDisplayCapabilities.prototype.hasOrientation\",\"VRDisplay.prototype.getFrameData\"),e.hasOrientation}}})}function We(e){var t=!(\"wakelock\"in(e=e||{}))||e.wakelock;this.isPolyfilled=!0,this.displayId=Qe++,this.displayName=\"\",this.depthNear=.01,this.depthFar=1e4,this.isPresenting=!1,Object.defineProperty(this,\"isConnected\",{get:function(){return O(\"VRDisplay.prototype.isConnected\",\"VRDisplayCapabilities.prototype.hasExternalDisplay\"),!1}}),this.capabilities=new Ve({hasPosition:!1,hasOrientation:!1,hasExternalDisplay:!1,canPresent:!1,maxLayers:1}),this.stageParameters=null,this.waitingForPresent_=!1,this.layer_=null,this.originalParent_=null,this.fullscreenElement_=null,this.fullscreenWrapper_=null,this.fullscreenElementCachedStyle_=null,this.fullscreenEventTarget_=null,this.fullscreenChangeHandler_=null,this.fullscreenErrorHandler_=null,t&&S()&&(this.wakelock_=new Oe)}We.prototype.getFrameData=function(e){return D(e,this._getPose(),this)},We.prototype.getPose=function(){return O(\"VRDisplay.prototype.getPose\",\"VRDisplay.prototype.getFrameData\"),this._getPose()},We.prototype.resetPose=function(){return O(\"VRDisplay.prototype.resetPose\"),this._resetPose()},We.prototype.getImmediatePose=function(){return O(\"VRDisplay.prototype.getImmediatePose\",\"VRDisplay.prototype.getFrameData\"),this._getPose()},We.prototype.requestAnimationFrame=function(e){return Ge(e)},We.prototype.cancelAnimationFrame=function(e){return ze(e)},We.prototype.wrapForFullscreen=function(e){if(u())return e;if(!this.fullscreenWrapper_){this.fullscreenWrapper_=document.createElement(\"div\");var t=[\"height: \"+Math.min(screen.height,screen.width)+\"px !important\",\"top: 0 !important\",\"left: 0 !important\",\"right: 0 !important\",\"border: 0\",\"margin: 0\",\"padding: 0\",\"z-index: 999999 !important\",\"position: fixed\"];this.fullscreenWrapper_.setAttribute(\"style\",t.join(\"; \")+\";\"),this.fullscreenWrapper_.classList.add(\"webvr-polyfill-fullscreen-wrapper\")}if(this.fullscreenElement_==e)return this.fullscreenWrapper_;if(this.fullscreenElement_&&(this.originalParent_?this.originalParent_.appendChild(this.fullscreenElement_):this.fullscreenElement_.parentElement.removeChild(this.fullscreenElement_)),this.fullscreenElement_=e,this.originalParent_=e.parentElement,this.originalParent_||document.body.appendChild(e),!this.fullscreenWrapper_.parentElement){var n=this.fullscreenElement_.parentElement;n.insertBefore(this.fullscreenWrapper_,this.fullscreenElement_),n.removeChild(this.fullscreenElement_)}this.fullscreenWrapper_.insertBefore(this.fullscreenElement_,this.fullscreenWrapper_.firstChild),this.fullscreenElementCachedStyle_=this.fullscreenElement_.getAttribute(\"style\");var i=this;function r(){if(i.fullscreenElement_){var e=[\"position: absolute\",\"top: 0\",\"left: 0\",\"width: \"+Math.max(screen.width,screen.height)+\"px\",\"height: \"+Math.min(screen.height,screen.width)+\"px\",\"border: 0\",\"margin: 0\",\"padding: 0\"];i.fullscreenElement_.setAttribute(\"style\",e.join(\"; \")+\";\")}}return r(),this.fullscreenWrapper_},We.prototype.removeFullscreenWrapper=function(){if(this.fullscreenElement_){var e=this.fullscreenElement_;this.fullscreenElementCachedStyle_?e.setAttribute(\"style\",this.fullscreenElementCachedStyle_):e.removeAttribute(\"style\"),this.fullscreenElement_=null,this.fullscreenElementCachedStyle_=null;var t=this.fullscreenWrapper_.parentElement;return this.fullscreenWrapper_.removeChild(e),this.originalParent_===t?t.insertBefore(e,this.fullscreenWrapper_):this.originalParent_&&this.originalParent_.appendChild(e),t.removeChild(this.fullscreenWrapper_),e}},We.prototype.requestPresent=function(e){var t=this.isPresenting,n=this;return e instanceof Array||(O(\"VRDisplay.prototype.requestPresent with non-array argument\",\"an array of VRLayers as the first argument\"),e=[e]),new Promise((function(i,r){if(n.capabilities.canPresent)if(0==e.length||e.length>n.capabilities.maxLayers)r(new Error(\"Invalid number of layers.\"));else{var s=e[0];if(s.source){var o=s.leftBounds||Ue,a=s.rightBounds||Ne;if(t){var l=n.layer_;l.source!==s.source&&(l.source=s.source);for(var c=0;c\u003C4;c++)l.leftBounds[c]=o[c],l.rightBounds[c]=a[c];return n.wrapForFullscreen(n.layer_.source),n.updatePresent_(),void i()}if(n.layer_={predistorted:s.predistorted,source:s.source,leftBounds:o.slice(0),rightBounds:a.slice(0)},n.waitingForPresent_=!1,n.layer_&&n.layer_.source){var h=n.wrapForFullscreen(n.layer_.source),p=function(){var e=M();n.isPresenting=h===e,n.isPresenting?(screen.orientation&&screen.orientation.lock&&screen.orientation.lock(\"landscape-primary\").catch((function(e){console.error(\"screen.orientation.lock() failed due to\",e.message)})),n.waitingForPresent_=!1,n.beginPresent_(),i()):(screen.orientation&&screen.orientation.unlock&&screen.orientation.unlock(),n.removeFullscreenWrapper(),n.disableWakeLock(),n.endPresent_(),n.removeFullscreenListeners_()),n.fireVRDisplayPresentChange_()},A=function(){n.waitingForPresent_&&(n.removeFullscreenWrapper(),n.removeFullscreenListeners_(),n.disableWakeLock(),n.waitingForPresent_=!1,n.isPresenting=!1,r(new Error(\"Unable to present.\")))};n.addFullscreenListeners_(h,p,A),w(h)?(n.enableWakeLock(),n.waitingForPresent_=!0):(u()||d())&&(n.enableWakeLock(),n.isPresenting=!0,n.beginPresent_(),n.fireVRDisplayPresentChange_(),i())}n.waitingForPresent_||u()||(C(),r(new Error(\"Unable to present.\")))}else i()}else r(new Error(\"VRDisplay is not capable of presenting.\"))}))},We.prototype.exitPresent=function(){var e=this.isPresenting,t=this;return this.isPresenting=!1,this.layer_=null,this.disableWakeLock(),new Promise((function(n,i){e?(!C()&&u()&&(t.endPresent_(),t.fireVRDisplayPresentChange_()),d()&&(t.removeFullscreenWrapper(),t.removeFullscreenListeners_(),t.endPresent_(),t.fireVRDisplayPresentChange_()),n()):i(new Error(\"Was not presenting to VRDisplay.\"))}))},We.prototype.getLayers=function(){return this.layer_?[this.layer_]:[]},We.prototype.fireVRDisplayPresentChange_=function(){var e=new CustomEvent(\"vrdisplaypresentchange\",{detail:{display:this}});window.dispatchEvent(e)},We.prototype.fireVRDisplayConnect_=function(){var e=new CustomEvent(\"vrdisplayconnect\",{detail:{display:this}});window.dispatchEvent(e)},We.prototype.addFullscreenListeners_=function(e,t,n){this.removeFullscreenListeners_(),this.fullscreenEventTarget_=e,this.fullscreenChangeHandler_=t,this.fullscreenErrorHandler_=n,t&&(document.fullscreenEnabled?e.addEventListener(\"fullscreenchange\",t,!1):document.webkitFullscreenEnabled?e.addEventListener(\"webkitfullscreenchange\",t,!1):document.mozFullScreenEnabled?document.addEventListener(\"mozfullscreenchange\",t,!1):document.msFullscreenEnabled&&e.addEventListener(\"msfullscreenchange\",t,!1)),n&&(document.fullscreenEnabled?e.addEventListener(\"fullscreenerror\",n,!1):document.webkitFullscreenEnabled?e.addEventListener(\"webkitfullscreenerror\",n,!1):document.mozFullScreenEnabled?document.addEventListener(\"mozfullscreenerror\",n,!1):document.msFullscreenEnabled&&e.addEventListener(\"msfullscreenerror\",n,!1))},We.prototype.removeFullscreenListeners_=function(){if(this.fullscreenEventTarget_){var e=this.fullscreenEventTarget_;if(this.fullscreenChangeHandler_){var t=this.fullscreenChangeHandler_;e.removeEventListener(\"fullscreenchange\",t,!1),e.removeEventListener(\"webkitfullscreenchange\",t,!1),document.removeEventListener(\"mozfullscreenchange\",t,!1),e.removeEventListener(\"msfullscreenchange\",t,!1)}if(this.fullscreenErrorHandler_){var n=this.fullscreenErrorHandler_;e.removeEventListener(\"fullscreenerror\",n,!1),e.removeEventListener(\"webkitfullscreenerror\",n,!1),document.removeEventListener(\"mozfullscreenerror\",n,!1),e.removeEventListener(\"msfullscreenerror\",n,!1)}this.fullscreenEventTarget_=null,this.fullscreenChangeHandler_=null,this.fullscreenErrorHandler_=null}},We.prototype.enableWakeLock=function(){this.wakelock_&&this.wakelock_.enable()},We.prototype.disableWakeLock=function(){this.wakelock_&&this.wakelock_.disable()},We.prototype.beginPresent_=function(){},We.prototype.endPresent_=function(){},We.prototype.submitFrame=function(e){},We.prototype.getEyeParameters=function(e){return null};var je={ADDITIONAL_VIEWERS:[],DEFAULT_VIEWER:\"\",MOBILE_WAKE_LOCK:!0,DEBUG:!1,DPDB_URL:\"https://dpdb.webvr.rocks/dpdb.json\",K_FILTER:.98,PREDICTION_TIME_S:.04,CARDBOARD_UI_DISABLED:!1,ROTATE_INSTRUCTIONS_DISABLED:!1,YAW_ONLY:!1,BUFFER_SCALE:.5,DIRTY_SUBMIT_FRAME_BINDINGS:!1},qe={LEFT:\"left\",RIGHT:\"right\"};function Ye(e){var t=T({},je);e=T(t,e||{}),We.call(this,{wakelock:e.MOBILE_WAKE_LOCK}),this.config=e,this.displayName=\"Cardboard VRDisplay\",this.capabilities=new Ve({hasPosition:!1,hasOrientation:!0,hasExternalDisplay:!1,canPresent:!0,maxLayers:1}),this.stageParameters=null,this.bufferScale_=this.config.BUFFER_SCALE,this.poseSensor_=new Ie(this.config),this.distorter_=null,this.cardboardUI_=null,this.dpdb_=new ge(this.config.DPDB_URL,this.onDeviceParamsUpdated_.bind(this)),this.deviceInfo_=new Ae(this.dpdb_.getDeviceParams(),e.ADDITIONAL_VIEWERS),this.viewerSelector_=new Re(e.DEFAULT_VIEWER),this.viewerSelector_.onChange(this.onViewerChanged_.bind(this)),this.deviceInfo_.setViewer(this.viewerSelector_.getCurrentViewer()),this.config.ROTATE_INSTRUCTIONS_DISABLED||(this.rotateInstructions_=new Se),u()&&window.addEventListener(\"resize\",this.onResize_.bind(this))}return Ye.prototype=Object.create(We.prototype),Ye.prototype._getPose=function(){return{position:null,orientation:this.poseSensor_.getOrientation(),linearVelocity:null,linearAcceleration:null,angularVelocity:null,angularAcceleration:null}},Ye.prototype._resetPose=function(){this.poseSensor_.resetPose&&this.poseSensor_.resetPose()},Ye.prototype._getFieldOfView=function(e){var t;if(e==qe.LEFT)t=this.deviceInfo_.getFieldOfViewLeftEye();else{if(e!=qe.RIGHT)return console.error(\"Invalid eye provided: %s\",e),null;t=this.deviceInfo_.getFieldOfViewRightEye()}return t},Ye.prototype._getEyeOffset=function(e){var t;if(e==qe.LEFT)t=[.5*-this.deviceInfo_.viewer.interLensDistance,0,0];else{if(e!=qe.RIGHT)return console.error(\"Invalid eye provided: %s\",e),null;t=[.5*this.deviceInfo_.viewer.interLensDistance,0,0]}return t},Ye.prototype.getEyeParameters=function(e){var t=this._getEyeOffset(e),n=this._getFieldOfView(e),i={offset:t,renderWidth:.5*this.deviceInfo_.device.width*this.bufferScale_,renderHeight:this.deviceInfo_.device.height*this.bufferScale_};return Object.defineProperty(i,\"fieldOfView\",{enumerable:!0,get:function(){return O(\"VRFieldOfView\",\"VRFrameData's projection matrices\"),n}}),i},Ye.prototype.onDeviceParamsUpdated_=function(e){this.config.DEBUG&&console.log(\"DPDB reported that device params were updated.\"),this.deviceInfo_.updateDeviceParams(e),this.distorter_&&this.distorter_.updateDeviceInfo(this.deviceInfo_)},Ye.prototype.updateBounds_=function(){this.layer_&&this.distorter_&&(this.layer_.leftBounds||this.layer_.rightBounds)&&this.distorter_.setTextureBounds(this.layer_.leftBounds,this.layer_.rightBounds)},Ye.prototype.beginPresent_=function(){var e=this.layer_.source.getContext(\"webgl\");e||(e=this.layer_.source.getContext(\"experimental-webgl\")),e||(e=this.layer_.source.getContext(\"webgl2\")),e&&(this.layer_.predistorted?this.config.CARDBOARD_UI_DISABLED||(e.canvas.width=b()*this.bufferScale_,e.canvas.height=x()*this.bufferScale_,this.cardboardUI_=new te(e)):(this.config.CARDBOARD_UI_DISABLED||(this.cardboardUI_=new te(e)),this.distorter_=new z(e,this.cardboardUI_,this.config.BUFFER_SCALE,this.config.DIRTY_SUBMIT_FRAME_BINDINGS),this.distorter_.updateDeviceInfo(this.deviceInfo_)),this.cardboardUI_&&this.cardboardUI_.listen(function(e){this.viewerSelector_.show(this.layer_.source.parentElement),e.stopPropagation(),e.preventDefault()}.bind(this),function(e){this.exitPresent(),e.stopPropagation(),e.preventDefault()}.bind(this)),this.rotateInstructions_&&(y()&&S()?this.rotateInstructions_.showTemporarily(3e3,this.layer_.source.parentElement):this.rotateInstructions_.update()),this.orientationHandler=this.onOrientationChange_.bind(this),window.addEventListener(\"orientationchange\",this.orientationHandler),this.vrdisplaypresentchangeHandler=this.updateBounds_.bind(this),window.addEventListener(\"vrdisplaypresentchange\",this.vrdisplaypresentchangeHandler),this.fireVRDisplayDeviceParamsChange_())},Ye.prototype.endPresent_=function(){this.distorter_&&(this.distorter_.destroy(),this.distorter_=null),this.cardboardUI_&&(this.cardboardUI_.destroy(),this.cardboardUI_=null),this.rotateInstructions_&&this.rotateInstructions_.hide(),this.viewerSelector_.hide(),window.removeEventListener(\"orientationchange\",this.orientationHandler),window.removeEventListener(\"vrdisplaypresentchange\",this.vrdisplaypresentchangeHandler)},Ye.prototype.updatePresent_=function(){this.endPresent_(),this.beginPresent_()},Ye.prototype.submitFrame=function(e){if(this.distorter_)this.updateBounds_(),this.distorter_.submitFrame();else if(this.cardboardUI_&&this.layer_){var t=this.layer_.source.getContext(\"webgl\");t||(t=this.layer_.source.getContext(\"experimental-webgl\")),t||(t=this.layer_.source.getContext(\"webgl2\"));var n=t.canvas;n.width==this.lastWidth&&n.height==this.lastHeight||this.cardboardUI_.onResize(),this.lastWidth=n.width,this.lastHeight=n.height,this.cardboardUI_.render()}},Ye.prototype.onOrientationChange_=function(e){this.viewerSelector_.hide(),this.rotateInstructions_&&this.rotateInstructions_.update(),this.onResize_()},Ye.prototype.onResize_=function(e){if(this.layer_){var t=this.layer_.source.getContext(\"webgl\");t||(t=this.layer_.source.getContext(\"experimental-webgl\")),t||(t=this.layer_.source.getContext(\"webgl2\"));var n=[\"position: absolute\",\"top: 0\",\"left: 0\",\"width: 100vw\",\"height: 100vh\",\"border: 0\",\"margin: 0\",\"padding: 0px\",\"box-sizing: content-box\"];t.canvas.setAttribute(\"style\",n.join(\"; \")+\";\"),L(t.canvas)}},Ye.prototype.onViewerChanged_=function(e){this.deviceInfo_.setViewer(e),this.distorter_&&this.distorter_.updateDeviceInfo(this.deviceInfo_),this.fireVRDisplayDeviceParamsChange_()},Ye.prototype.fireVRDisplayDeviceParamsChange_=function(){var e=new CustomEvent(\"vrdisplaydeviceparamschange\",{detail:{vrdisplay:this,deviceInfo:this.deviceInfo_}});window.dispatchEvent(e)},Ye.VRFrameData=He,Ye.VRDisplay=We,Ye}()})),a=(t=o)&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t,l={ADDITIONAL_VIEWERS:[],DEFAULT_VIEWER:\"\",PROVIDE_MOBILE_VRDISPLAY:!0,MOBILE_WAKE_LOCK:!0,DEBUG:!1,DPDB_URL:\"https://dpdb.webvr.rocks/dpdb.json\",K_FILTER:.98,PREDICTION_TIME_S:.04,CARDBOARD_UI_DISABLED:!1,ROTATE_INSTRUCTIONS_DISABLED:!1,YAW_ONLY:!1,BUFFER_SCALE:.5,DIRTY_SUBMIT_FRAME_BINDINGS:!1};function c(e){this.config=s(s({},l),e),this.polyfillDisplays=[],this.enabled=!1,this.hasNative=\"getVRDisplays\"in navigator,this.native={},this.native.getVRDisplays=navigator.getVRDisplays,this.native.VRFrameData=window.VRFrameData,this.native.VRDisplay=window.VRDisplay,(!this.hasNative||this.config.PROVIDE_MOBILE_VRDISPLAY&&i())&&(this.enable(),this.getVRDisplays().then((function(e){e&&e[0]&&e[0].fireVRDisplayConnect_&&e[0].fireVRDisplayConnect_()})))}c.prototype.getPolyfillDisplays=function(){if(this._polyfillDisplaysPopulated)return this.polyfillDisplays;if(i()){var e=new a({ADDITIONAL_VIEWERS:this.config.ADDITIONAL_VIEWERS,DEFAULT_VIEWER:this.config.DEFAULT_VIEWER,MOBILE_WAKE_LOCK:this.config.MOBILE_WAKE_LOCK,DEBUG:this.config.DEBUG,DPDB_URL:this.config.DPDB_URL,CARDBOARD_UI_DISABLED:this.config.CARDBOARD_UI_DISABLED,K_FILTER:this.config.K_FILTER,PREDICTION_TIME_S:this.config.PREDICTION_TIME_S,ROTATE_INSTRUCTIONS_DISABLED:this.config.ROTATE_INSTRUCTIONS_DISABLED,YAW_ONLY:this.config.YAW_ONLY,BUFFER_SCALE:this.config.BUFFER_SCALE,DIRTY_SUBMIT_FRAME_BINDINGS:this.config.DIRTY_SUBMIT_FRAME_BINDINGS});this.polyfillDisplays.push(e)}return this._polyfillDisplaysPopulated=!0,this.polyfillDisplays},c.prototype.enable=function(){if(this.enabled=!0,this.hasNative&&this.native.VRFrameData){var e=this.native.VRFrameData,t=new this.native.VRFrameData,n=this.native.VRDisplay.prototype.getFrameData;window.VRDisplay.prototype.getFrameData=function(i){i instanceof e?n.call(this,i):(n.call(this,t),i.pose=t.pose,r(t.leftProjectionMatrix,i.leftProjectionMatrix),r(t.rightProjectionMatrix,i.rightProjectionMatrix),r(t.leftViewMatrix,i.leftViewMatrix),r(t.rightViewMatrix,i.rightViewMatrix))}}navigator.getVRDisplays=this.getVRDisplays.bind(this),window.VRDisplay=a.VRDisplay,window.VRFrameData=a.VRFrameData},c.prototype.getVRDisplays=function(){var e=this;return this.config,this.hasNative?this.native.getVRDisplays.call(navigator).then((function(t){return t.length>0?t:e.getPolyfillDisplays()})):Promise.resolve(this.getPolyfillDisplays())},c.version=\"0.10.12\",c.VRFrameData=a.VRFrameData,c.VRDisplay=a.VRDisplay;var h=Object.freeze({default:c}),u=h&&c||h;return void 0!==e&&e.window&&(e.document||(e.document=e.window.document),e.navigator||(e.navigator=e.window.navigator)),u}()},9443:e=>{var t=/\\n/,n=\"\\n\",i=/\\s/;function r(e,t,n,i){var r=e.indexOf(t,n);return-1===r||r>i?i:r}function s(e){return i.test(e)}function o(e,t,n,i){return{start:t,end:t+Math.min(i,n-t)}}e.exports=function(t,n){return e.exports.lines(t,n).map((function(e){return t.substring(e.start,e.end)})).join(\"\\n\")},e.exports.lines=function(e,i){if(0===(i=i||{}).width&&\"nowrap\"!==i.mode)return[];e=e||\"\";var a=\"number\"==typeof i.width?i.width:Number.MAX_VALUE,l=Math.max(0,i.start||0),c=\"number\"==typeof i.end?i.end:e.length,h=i.mode,u=i.measure||o;return\"pre\"===h?function(e,n,i,r,s){for(var o=[],a=i,l=i;l\u003Cr&&l\u003Cn.length;l++){var c=n.charAt(l),h=t.test(c);if(h||l===r-1){var u=e(n,a,h?l:l+1,s);o.push(u),a=l+1}}return o}(u,e,l,c,a):function(e,t,i,o,a,l){var c=[],h=a;for(\"nowrap\"===l&&(h=Number.MAX_VALUE);i\u003Co&&i\u003Ct.length;){for(var u=r(t,n,i,o);i\u003Cu&&s(t.charAt(i));)i++;var d=e(t,i,u,h),p=i+(d.end-d.start),A=p+n.length;if(p\u003Cu){for(;p>i&&!s(t.charAt(p));)p--;if(p===i)A>i+n.length&&A--,p=A;else for(A=p;p>i&&s(t.charAt(p-n.length));)p--}if(p>=i){var f=e(t,i,p,h);c.push(f)}i=A}return c}(u,e,l,c,a,h)}},7377:(e,t,n)=>{\"use strict\";var i=n(1192),r=n(6534),s=n(9069),o=n(2786);function a(e,t,n){var i=e;return r(t)?(n=t,\"string\"==typeof e&&(i={uri:e})):i=o(t,{uri:e}),i.callback=n,i}function l(e,t,n){return c(t=a(e,t,n))}function c(e){if(void 0===e.callback)throw new Error(\"callback argument missing\");var t=!1,n=function(n,i,r){t||(t=!0,e.callback(n,i,r))};function i(){var e=void 0;if(e=h.response?h.response:h.responseText||function(e){try{if(\"document\"===e.responseType)return e.responseXML;var t=e.responseXML&&\"parsererror\"===e.responseXML.documentElement.nodeName;if(\"\"===e.responseType&&!t)return e.responseXML}catch(e){}return null}(h),g)try{e=JSON.parse(e)}catch(e){}return e}function r(e){return clearTimeout(u),e instanceof Error||(e=new Error(\"\"+(e||\"Unknown XMLHttpRequest Error\"))),e.statusCode=0,n(e,v)}function o(){if(!c){var t;clearTimeout(u),t=e.useXDR&&void 0===h.status?200:1223===h.status?204:h.status;var r=v,o=null;return 0!==t?(r={body:i(),statusCode:t,method:p,headers:{},url:d,rawRequest:h},h.getAllResponseHeaders&&(r.headers=s(h.getAllResponseHeaders()))):o=new Error(\"Internal XMLHttpRequest Error\"),n(o,r,r.body)}}var a,c,h=e.xhr||null;h||(h=e.cors||e.useXDR?new l.XDomainRequest:new l.XMLHttpRequest);var u,d=h.url=e.uri||e.url,p=h.method=e.method||\"GET\",A=e.body||e.data,f=h.headers=e.headers||{},m=!!e.sync,g=!1,v={body:void 0,headers:{},statusCode:0,method:p,url:d,rawRequest:h};if(\"json\"in e&&!1!==e.json&&(g=!0,f.accept||f.Accept||(f.Accept=\"application/json\"),\"GET\"!==p&&\"HEAD\"!==p&&(f[\"content-type\"]||f[\"Content-Type\"]||(f[\"Content-Type\"]=\"application/json\"),A=JSON.stringify(!0===e.json?A:e.json))),h.onreadystatechange=function(){4===h.readyState&&setTimeout(o,0)},h.onload=o,h.onerror=r,h.onprogress=function(){},h.onabort=function(){c=!0},h.ontimeout=r,h.open(p,d,!m,e.username,e.password),m||(h.withCredentials=!!e.withCredentials),!m&&e.timeout>0&&(u=setTimeout((function(){if(!c){c=!0,h.abort(\"timeout\");var e=new Error(\"XMLHttpRequest timeout\");e.code=\"ETIMEDOUT\",r(e)}}),e.timeout)),h.setRequestHeader)for(a in f)f.hasOwnProperty(a)&&h.setRequestHeader(a,f[a]);else if(e.headers&&!function(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}(e.headers))throw new Error(\"Headers cannot be set on an XDomainRequest object\");return\"responseType\"in e&&(h.responseType=e.responseType),\"beforeSend\"in e&&\"function\"==typeof e.beforeSend&&e.beforeSend(h),h.send(A||null),h}e.exports=l,e.exports.default=l,l.XMLHttpRequest=i.XMLHttpRequest||function(){},l.XDomainRequest=\"withCredentials\"in new l.XMLHttpRequest?l.XMLHttpRequest:i.XDomainRequest,function(e,t){for(var n=0;n\u003Ce.length;n++)t(e[n])}([\"get\",\"put\",\"post\",\"patch\",\"head\",\"delete\"],(function(e){l[\"delete\"===e?\"del\":e]=function(t,n,i){return(n=a(t,n,i)).method=e.toUpperCase(),c(n)}}))},6774:e=>{e.exports=void 0!==self.DOMParser?function(e){return(new self.DOMParser).parseFromString(e,\"application/xml\")}:void 0!==self.ActiveXObject&&new self.ActiveXObject(\"Microsoft.XMLDOM\")?function(e){var t=new self.ActiveXObject(\"Microsoft.XMLDOM\");return t.async=\"false\",t.loadXML(e),t}:function(e){var t=document.createElement(\"div\");return t.innerHTML=e,t}},2786:e=>{e.exports=function(){for(var e={},n=0;n\u003Carguments.length;n++){var i=arguments[n];for(var r in i)t.call(i,r)&&(e[r]=i[r])}return e};var t=Object.prototype.hasOwnProperty},4649:(e,t,n)=>{var i=n(2446).Z,r=n(3515).components,s=n(3515).registerComponent,o=n(2666),a=n(8903),l=new o.Color,c=new o.Color,h=a.entity.getComponentProperty,u=a.entity.setComponentProperty,d={},p=\"color\",A=\"rotation\",f=\"scale\",m=\"components\";function g(e){e.x=o.MathUtils.degToRad(e.x),e.y=o.MathUtils.degToRad(e.y),e.z=o.MathUtils.degToRad(e.z)}function v(e,t,n){var i;for(i=0;i\u003Ct.length;i++)e.addEventListener(t[i],n)}function y(e,t,n){var i;for(i=0;i\u003Ct.length;i++)e.removeEventListener(t[i],n)}function E(e,t){var n,i,r;for(i=x(t),r=e,n=0;n\u003Ci.length;n++)r=r[i[n]];if(void 0===r)throw console.log(e),new Error(\"[animation] property (\"+t+\") could not be found\");return r}function b(e,t,n,i){var r,s,a,l;for(t.startsWith(\"object3D.rotation\")&&(n=o.MathUtils.degToRad(n)),s=x(t),l=e,r=0;r\u003Cs.length-1;r++)l=l[s[r]];a=s[s.length-1],i!==p?l[a]=n:\"r\"in l[a]?(l[a].r=n.r,l[a].g=n.g,l[a].b=n.b):(l[a].x=n.r,l[a].y=n.g,l[a].z=n.b)}function x(e){return e in d||(d[e]=e.split(\".\")),d[e]}function w(e){return e.isRawProperty||e.property.startsWith(m)||e.property.startsWith(\"object3D\")}e.exports.Component=s(\"animation\",{schema:{autoplay:{default:!0},delay:{default:0},dir:{default:\"\"},dur:{default:1e3},easing:{default:\"easeInQuad\"},elasticity:{default:400},enabled:{default:!0},from:{default:\"\"},loop:{default:0,parse:function(e){return!0===e||\"true\"===e||!1!==e&&\"false\"!==e&&parseInt(e,10)}},property:{default:\"\"},startEvents:{type:\"array\"},pauseEvents:{type:\"array\"},resumeEvents:{type:\"array\"},round:{default:!1},to:{default:\"\"},type:{default:\"\"},isRawProperty:{default:!1}},multiple:!0,init:function(){var e=this;this.eventDetail={name:this.attrName},this.time=0,this.animation=null,this.animationIsPlaying=!1,this.onStartEvent=this.onStartEvent.bind(this),this.beginAnimation=this.beginAnimation.bind(this),this.pauseAnimation=this.pauseAnimation.bind(this),this.resumeAnimation=this.resumeAnimation.bind(this),this.fromColor={},this.toColor={},this.targets={},this.targetsArray=[],this.updateConfigForDefault=this.updateConfigForDefault.bind(this),this.updateConfigForRawColor=this.updateConfigForRawColor.bind(this),this.config={complete:function(){e.animationIsPlaying=!1,e.el.emit(\"animationcomplete\",e.eventDetail,!1),e.id&&e.el.emit(\"animationcomplete__\"+e.id,e.eventDetail,!1)}}},update:function(e){var t=this.config,n=this.data;this.animationIsPlaying=!1,this.data.enabled&&n.property&&(t.autoplay=!1,t.direction=n.dir,t.duration=n.dur,t.easing=n.easing,t.elasticity=n.elasticity,t.loop=n.loop,t.round=n.round,this.createAndStartAnimation())},tick:function(e,t){this.animationIsPlaying&&(this.time+=t,this.animation.tick(this.time))},remove:function(){this.pauseAnimation(),this.removeEventListeners()},pause:function(){this.paused=!0,this.pausedWasPlaying=this.animationIsPlaying,this.pauseAnimation(),this.removeEventListeners()},play:function(){this.paused&&(this.paused=!1,this.addEventListeners(),this.pausedWasPlaying&&(this.resumeAnimation(),this.pausedWasPlaying=!1))},createAndStartAnimation:function(){var e=this.data;this.updateConfig(),this.animationIsPlaying=!1,this.animation=i(this.config),this.animation.began=!0,this.removeEventListeners(),this.addEventListeners(),!e.autoplay||e.startEvents&&e.startEvents.length||(e.delay?setTimeout(this.beginAnimation,e.delay):this.beginAnimation())},beginAnimation:function(){this.updateConfig(),this.animation.began=!0,this.time=0,this.animationIsPlaying=!0,this.stopRelatedAnimations(),this.el.emit(\"animationbegin\",this.eventDetail,!1)},pauseAnimation:function(){this.animationIsPlaying=!1},resumeAnimation:function(){this.animationIsPlaying=!0},onStartEvent:function(){this.data.enabled&&(this.updateConfig(),this.animation&&this.animation.pause(),this.animation=i(this.config),this.data.delay?setTimeout(this.beginAnimation,this.data.delay):this.beginAnimation())},updateConfigForRawColor:function(){var e,t,n,i=this.config,r=this.data,s=this.el;if(!this.waitComponentInitRawProperty(this.updateConfigForRawColor)){for(t in e=\"\"===r.from?E(s,r.property):r.from,n=r.to,this.setColorConfig(e,n),e=this.fromColor,n=this.toColor,this.targetsArray.length=0,this.targetsArray.push(e),i.targets=this.targetsArray,n)i[t]=n[t];var o;i.update=(o={},function(e){var t;(t=e.animatables[0].target).r===o.r&&t.g===o.g&&t.b===o.b||b(s,r.property,t,r.type)})}},updateConfigForDefault:function(){var e,t,n,i,r=this.config,s=this.data,o=this.el;this.waitComponentInitRawProperty(this.updateConfigForDefault)||(e=\"\"===s.from?w(s)?E(o,s.property):h(o,s.property):s.from,n=s.to,isNaN(e||n)?(e=e?e.toString():e,n=n?n.toString():n):(e=parseFloat(e),n=parseFloat(n)),(t=\"true\"===s.to||\"false\"===s.to||!0===s.to||!1===s.to)&&(e=\"true\"===s.from||!0===s.from?1:0,n=\"true\"===s.to||!0===s.to?1:0),this.targets.aframeProperty=e,r.targets=this.targets,r.aframeProperty=n,r.update=function(e){var n;(n=e.animatables[0].target.aframeProperty)!==i&&(i=n,t&&(n=n>=1),w(s)?b(o,s.property,n,s.type):u(o,s.property,n))})},updateConfigForVector:function(){var e,t,n,i,r=this.config,s=this.data,o=this.el;for(e in t=\"\"!==s.from?a.coordinates.parse(s.from):h(o,s.property),n=a.coordinates.parse(s.to),s.property===A&&(g(t),g(n)),this.targetsArray.length=0,this.targetsArray.push(t),r.targets=this.targetsArray,n)r[e]=n[e];\"position\"!==s.property&&s.property!==A&&s.property!==f?r.update=function(){var e={};return function(t){var n=t.animatables[0].target;n.x===e.x&&n.y===e.y&&n.z===e.z||(e.x=n.x,e.y=n.y,e.z=n.z,u(o,s.property,n))}}():r.update=(i={},function(e){var t=e.animatables[0].target;s.property===f&&(t.x=Math.max(1e-4,t.x),t.y=Math.max(1e-4,t.y),t.z=Math.max(1e-4,t.z)),t.x===i.x&&t.y===i.y&&t.z===i.z||(i.x=t.x,i.y=t.y,i.z=t.z,o.object3D[s.property].set(t.x,t.y,t.z))})},updateConfig:function(){var e,t,n,i,s,o,a;t=this.el,n=this.data.property,s=(o=n.split(\".\"))[0],a=o[1],e=(i=t.components[s]||r[s])?a&&!i.schema[a]?null:a?i.schema[a].type:i.schema.type:null,w(this.data)&&this.data.type===p?this.updateConfigForRawColor():\"vec2\"===e||\"vec3\"===e||\"vec4\"===e?this.updateConfigForVector():this.updateConfigForDefault()},waitComponentInitRawProperty:function(e){var t,n=this.data,r=this.el,s=this;return\"\"===n.from&&!!n.property.startsWith(m)&&(t=x(n.property)[1],!r.components[t]&&(r.addEventListener(\"componentinitialized\",(function n(o){o.detail.name===t&&(e(),s.animation=i(s.config),r.removeEventListener(\"componentinitialized\",n))})),!0))},stopRelatedAnimations:function(){var e,t;for(t in this.el.components)e=this.el.components[t],t!==this.attrName&&\"animation\"===e.name&&e.animationIsPlaying&&e.data.property===this.data.property&&(e.animationIsPlaying=!1)},addEventListeners:function(){var e=this.data,t=this.el;v(t,e.startEvents,this.onStartEvent),v(t,e.pauseEvents,this.pauseAnimation),v(t,e.resumeEvents,this.resumeAnimation)},removeEventListeners:function(){var e=this.data,t=this.el;y(t,e.startEvents,this.onStartEvent),y(t,e.pauseEvents,this.pauseAnimation),y(t,e.resumeEvents,this.resumeAnimation)},setColorConfig:function(e,t){l.set(e),c.set(t),e=this.fromColor,t=this.toColor,e.r=l.r,e.g=l.g,e.b=l.b,t.r=c.r,t.g=c.g,t.b=c.b}})},9541:(e,t,n)=>{var i=n(3515).registerComponent,r=n(2666);e.exports.Component=i(\"camera\",{schema:{active:{default:!0},far:{default:1e4},fov:{default:80,min:0},near:{default:.005,min:0},spectator:{default:!1},zoom:{default:1,min:0}},init:function(){var e,t=this.el;e=this.camera=new r.PerspectiveCamera,t.setObject3D(\"camera\",e)},update:function(e){var t=this.data,n=this.camera;n.aspect=t.aspect||window.innerWidth/window.innerHeight,n.far=t.far,n.fov=t.fov,n.near=t.near,n.zoom=t.zoom,n.updateProjectionMatrix(),this.updateActiveCamera(e),this.updateSpectatorCamera(e)},updateActiveCamera:function(e){var t=this.data,n=this.el,i=this.system;e&&e.active===t.active||t.spectator||(t.active&&i.activeCameraEl!==n?i.setActiveCamera(n):t.active||i.activeCameraEl!==n||i.disableActiveCamera())},updateSpectatorCamera:function(e){var t=this.data,n=this.el,i=this.system;e&&e.spectator===t.spectator||(t.spectator&&i.spectatorCameraEl!==n?i.setSpectatorCamera(n):t.spectator||i.spectatorCameraEl!==n||i.disableSpectatorCamera())},remove:function(){this.el.removeObject3D(\"camera\")}})},57:(e,t,n)=>{var i,r,s,o,a=n(3515).registerComponent,l=n(8903),c=l.bind,h=\"click\",u=\"mouseup\",d=\"cursor-fusing\",p=\"cursor-hovering\",A=\"cursor-hovered\",f={DOWN:[\"mousedown\",\"touchstart\"],UP:[\"mouseup\",\"touchend\"]},m={DOWN:[\"selectstart\"],UP:[\"selectend\"]},g=\"a-mouse-cursor-hover\";e.exports.Component=a(\"cursor\",{dependencies:[\"raycaster\"],schema:{downEvents:{default:[]},fuse:{default:l.device.isMobile()},fuseTimeout:{default:1500,min:0},mouseCursorStylesEnabled:{default:!0},upEvents:{default:[]},rayOrigin:{default:\"entity\",oneOf:[\"mouse\",\"entity\",\"xrselect\"]}},multiple:!0,init:function(){var e=this;this.fuseTimeout=void 0,this.cursorDownEl=null,this.intersectedEl=null,this.canvasBounds=document.body.getBoundingClientRect(),this.isCursorDown=!1,this.activeXRInput=null,this.updateCanvasBounds=l.debounce((function(){e.canvasBounds=e.el.sceneEl.canvas.getBoundingClientRect()}),500),this.eventDetail={},this.intersectedEventDetail={cursorEl:this.el},this.onCursorDown=c(this.onCursorDown,this),this.onCursorUp=c(this.onCursorUp,this),this.onIntersection=c(this.onIntersection,this),this.onIntersectionCleared=c(this.onIntersectionCleared,this),this.onMouseMove=c(this.onMouseMove,this),this.onEnterVR=c(this.onEnterVR,this)},update:function(e){this.data.rayOrigin!==e.rayOrigin&&this.updateMouseEventListeners()},tick:function(){var e=this.el.sceneEl.frame,t=this.activeXRInput;\"xrselect\"===this.data.rayOrigin&&e&&t&&this.onMouseMove({frame:e,inputSource:t,type:\"fakeselectevent\"})},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners()},remove:function(){var e=this.el;e.removeState(p),e.removeState(d),clearTimeout(this.fuseTimeout),this.intersectedEl&&this.intersectedEl.removeState(A),this.removeEventListeners()},addEventListeners:function(){var e,t=this.data,n=this.el,i=this;function r(){e=n.sceneEl.canvas,t.downEvents.length||t.upEvents.length||(f.DOWN.forEach((function(t){e.addEventListener(t,i.onCursorDown)})),f.UP.forEach((function(t){e.addEventListener(t,i.onCursorUp)})))}(e=n.sceneEl.canvas)?r():n.sceneEl.addEventListener(\"render-target-loaded\",r),t.downEvents.forEach((function(e){n.addEventListener(e,i.onCursorDown)})),t.upEvents.forEach((function(e){n.addEventListener(e,i.onCursorUp)})),n.addEventListener(\"raycaster-intersection\",this.onIntersection),n.addEventListener(\"raycaster-closest-entity-changed\",this.onIntersection),n.addEventListener(\"raycaster-intersection-cleared\",this.onIntersectionCleared),n.sceneEl.addEventListener(\"rendererresize\",this.updateCanvasBounds),n.sceneEl.addEventListener(\"enter-vr\",this.onEnterVR),window.addEventListener(\"resize\",this.updateCanvasBounds),window.addEventListener(\"scroll\",this.updateCanvasBounds),this.updateMouseEventListeners()},removeEventListeners:function(){var e,t=this.data,n=this.el,i=this;!(e=n.sceneEl.canvas)||t.downEvents.length||t.upEvents.length||(f.DOWN.forEach((function(t){e.removeEventListener(t,i.onCursorDown)})),f.UP.forEach((function(t){e.removeEventListener(t,i.onCursorUp)}))),t.downEvents.forEach((function(e){n.removeEventListener(e,i.onCursorDown)})),t.upEvents.forEach((function(e){n.removeEventListener(e,i.onCursorUp)})),n.removeEventListener(\"raycaster-intersection\",this.onIntersection),n.removeEventListener(\"raycaster-intersection-cleared\",this.onIntersectionCleared),e.removeEventListener(\"mousemove\",this.onMouseMove),e.removeEventListener(\"touchstart\",this.onMouseMove),e.removeEventListener(\"touchmove\",this.onMouseMove),n.sceneEl.removeEventListener(\"rendererresize\",this.updateCanvasBounds),n.sceneEl.removeEventListener(\"enter-vr\",this.onEnterVR),window.removeEventListener(\"resize\",this.updateCanvasBounds),window.removeEventListener(\"scroll\",this.updateCanvasBounds)},updateMouseEventListeners:function(){var e,t=this.el;(e=t.sceneEl.canvas).removeEventListener(\"mousemove\",this.onMouseMove),e.removeEventListener(\"touchmove\",this.onMouseMove),t.setAttribute(\"raycaster\",\"useWorldCoordinates\",!1),\"mouse\"===this.data.rayOrigin&&(e.addEventListener(\"mousemove\",this.onMouseMove,!1),e.addEventListener(\"touchmove\",this.onMouseMove,!1),t.setAttribute(\"raycaster\",\"useWorldCoordinates\",!0),this.updateCanvasBounds())},onMouseMove:(i=new THREE.Vector3,r=new THREE.Vector2,s=new THREE.Vector3,o={origin:s,direction:i},function(e){var t,n,a,l,c,h,u,d=this.canvasBounds,p=this.el.sceneEl.camera;p.parent.updateMatrixWorld(),t=(n=\"touchmove\"===e.type||\"touchstart\"===e.type?e.touches.item(0):e).clientX-d.left,a=n.clientY-d.top,r.x=t/d.width*2-1,r.y=-a/d.height*2+1,\"xrselect\"!==this.data.rayOrigin||\"selectstart\"!==e.type&&\"fakeselectevent\"!==e.type?\"fakeselectout\"===e.type?(i.set(0,1,0),s.set(0,9999,0)):p&&p.isPerspectiveCamera?(s.setFromMatrixPosition(p.matrixWorld),i.set(r.x,r.y,.5).unproject(p).sub(s).normalize()):p&&p.isOrthographicCamera?(s.set(r.x,r.y,(p.near+p.far)/(p.near-p.far)).unproject(p),i.set(0,0,-1).transformDirection(p.matrixWorld)):console.error(\"AFRAME.Raycaster: Unsupported camera type: \"+p.type):(l=e.frame,c=e.inputSource,h=this.el.renderer.xr.getReferenceSpace(),u=l.getPose(c.targetRaySpace,h).transform,i.set(0,0,-1),i.applyQuaternion(u.orientation),s.copy(u.position)),this.el.setAttribute(\"raycaster\",o),\"touchmove\"===e.type&&e.preventDefault()}),onCursorDown:function(e){this.isCursorDown=!0,\"mouse\"===this.data.rayOrigin&&\"touchstart\"===e.type&&(this.onMouseMove(e),this.el.components.raycaster.checkIntersections(),e.preventDefault()),\"xrselect\"===this.data.rayOrigin&&\"selectstart\"===e.type&&(this.activeXRInput=e.inputSource,this.onMouseMove(e),this.el.components.raycaster.checkIntersections(),this.el.components.raycaster.intersectedEls.length&&void 0!==this.el.sceneEl.components[\"ar-hit-test\"]&&this.el.sceneEl.getAttribute(\"ar-hit-test\").enabled&&(this.el.sceneEl.setAttribute(\"ar-hit-test\",\"enabled\",!1),this.reenableARHitTest=!0)),this.twoWayEmit(\"mousedown\",e),this.cursorDownEl=this.intersectedEl},onCursorUp:function(e){if(this.isCursorDown){this.isCursorDown=!1;var t=this.data;this.twoWayEmit(u,e),!0===this.reenableARHitTest&&(this.el.sceneEl.setAttribute(\"ar-hit-test\",\"enabled\",!0),this.reenableARHitTest=void 0),this.cursorDownEl&&this.cursorDownEl!==this.intersectedEl&&(this.intersectedEventDetail.intersection=null,this.cursorDownEl.emit(u,this.intersectedEventDetail)),t.fuse&&\"mouse\"!==t.rayOrigin&&\"xrselect\"!==t.rayOrigin||!this.intersectedEl||this.cursorDownEl!==this.intersectedEl||this.twoWayEmit(h,e),\"xrselect\"===t.rayOrigin&&this.activeXRInput===e.inputSource&&this.onMouseMove({type:\"fakeselectout\"}),this.activeXRInput=null,this.cursorDownEl=null,\"touchend\"===e.type&&e.preventDefault()}},onIntersection:function(e){var t,n,i,r,s=this.el;n=e.detail.els[0]===s?1:0,r=e.detail.intersections[n],(i=e.detail.els[n])&&this.intersectedEl!==i&&(this.intersectedEl&&(t=this.el.components.raycaster.getIntersection(this.intersectedEl))&&t.distance\u003C=r.distance||(this.clearCurrentIntersection(!0),this.setIntersection(i,r)))},onIntersectionCleared:function(e){-1!==e.detail.clearedEls.indexOf(this.intersectedEl)&&this.clearCurrentIntersection()},onEnterVR:function(){this.clearCurrentIntersection(!0);var e=this.el.sceneEl.xrSession,t=this;e&&\"mouse\"!==this.data.rayOrigin&&(m.DOWN.forEach((function(n){e.addEventListener(n,t.onCursorDown)})),m.UP.forEach((function(n){e.addEventListener(n,t.onCursorUp)})))},setIntersection:function(e,t){var n=this.el,i=this.data,r=this;this.intersectedEl!==e&&(this.intersectedEl=e,n.addState(p),e.addState(A),this.twoWayEmit(\"mouseenter\"),this.data.mouseCursorStylesEnabled&&\"mouse\"===this.data.rayOrigin&&this.el.sceneEl.canvas.classList.add(g),0!==i.fuseTimeout&&i.fuse&&\"xrselect\"!==i.rayOrigin&&\"mouse\"!==i.rayOrigin&&(n.addState(d),this.twoWayEmit(\"fusing\"),this.fuseTimeout=setTimeout((function(){n.removeState(d),r.twoWayEmit(h)}),i.fuseTimeout)))},clearCurrentIntersection:function(e){var t,n,i=this.el;this.intersectedEl&&(this.intersectedEl.removeState(A),i.removeState(p),i.removeState(d),this.twoWayEmit(\"mouseleave\"),this.data.mouseCursorStylesEnabled&&\"mouse\"===this.data.rayOrigin&&this.el.sceneEl.canvas.classList.remove(g),this.intersectedEl=null,clearTimeout(this.fuseTimeout),!0!==e&&0!==(n=this.el.components.raycaster.intersections).length&&(t=n[n[0].object.el===i?1:0])&&this.setIntersection(t.object.el,t))},twoWayEmit:function(e,t){var n,i=this.el,r=this.intersectedEl;function s(e,n){t instanceof MouseEvent?e.mouseEvent=t:\"undefined\"!=typeof TouchEvent&&t instanceof TouchEvent&&(e.touchEvent=t)}n=this.el.components.raycaster.getIntersection(r),this.eventDetail.intersectedEl=r,this.eventDetail.intersection=n,s(this.eventDetail),i.emit(e,this.eventDetail),r&&(this.intersectedEventDetail.intersection=n,s(this.intersectedEventDetail),r.emit(e,this.intersectedEventDetail))}})},9830:(e,t,n)=>{var i=n(3515).registerComponent,r=n(7629),s=n(6600),o=s.checkControllerPresentAndSetup,a=s.emitIfAxesChanged,l=s.onButtonEvent,c=\"https://cdn.aframe.io/controllers/google/\",h=c+\"vr_controller_daydream.obj\",u=c+\"vr_controller_daydream.mtl\",d=n(8903).device.isWebXRAvailable,p=d?\"google-daydream\":\"Daydream Controller\",A=d?{axes:{touchpad:[0,1]},buttons:[\"none\",\"none\",\"touchpad\",\"menu\",\"system\"]}:{axes:{trackpad:[0,1]},buttons:[\"trackpad\",\"menu\",\"system\"]};e.exports.Component=i(\"daydream-controls\",{schema:{hand:{default:\"\"},buttonColor:{type:\"color\",default:\"#000000\"},buttonTouchedColor:{type:\"color\",default:\"#777777\"},buttonHighlightColor:{type:\"color\",default:\"#FFFFFF\"},model:{default:!0},orientationOffset:{type:\"vec3\"},armModel:{default:!0}},mapping:A,bindMethods:function(){this.onModelLoaded=r(this.onModelLoaded,this),this.onControllersUpdate=r(this.onControllersUpdate,this),this.checkIfControllerPresent=r(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=r(this.removeControllersUpdateListener,this),this.onAxisMoved=r(this.onAxisMoved,this)},init:function(){var e=this;this.onButtonChanged=r(this.onButtonChanged,this),this.onButtonDown=function(t){l(t.detail.id,\"down\",e)},this.onButtonUp=function(t){l(t.detail.id,\"up\",e)},this.onButtonTouchStart=function(t){l(t.detail.id,\"touchstart\",e)},this.onButtonTouchEnd=function(t){l(t.detail.id,\"touchend\",e)},this.controllerPresent=!1,this.lastControllerCheck=0,this.bindMethods()},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"model-loaded\",this.onModelLoaded),e.addEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"model-loaded\",this.onModelLoaded),e.removeEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){o(this,p,this.data.hand?{hand:this.data.hand}:{})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var e=this.el,t=this.data;e.setAttribute(\"tracked-controls\",{armModel:t.armModel,hand:t.hand,idPrefix:p,id:p,orientationOffset:t.orientationOffset}),this.data.model&&this.el.setAttribute(\"obj-model\",{obj:h,mtl:u})},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelLoaded:function(e){var t,n=e.detail.model;this.data.model&&((t=this.buttonMeshes={}).menu=n.getObjectByName(\"AppButton_AppButton_Cylinder.004\"),t.system=n.getObjectByName(\"HomeButton_HomeButton_Cylinder.005\"),t.trackpad=n.getObjectByName(\"TouchPad_TouchPad_Cylinder.003\"),t.touchpad=n.getObjectByName(\"TouchPad_TouchPad_Cylinder.003\"),n.position.set(0,0,-.04))},onAxisMoved:function(e){a(this,this.mapping.axes,e)},onButtonChanged:function(e){var t=this.mapping.buttons[e.detail.id];t&&this.el.emit(t+\"changed\",e.detail.state)},updateModel:function(e,t){this.data.model&&this.updateButtonModel(e,t)},updateButtonModel:function(e,t){var n=this.buttonMeshes;if(n&&n[e]){var i;switch(t){case\"down\":i=this.data.buttonHighlightColor;break;case\"touchstart\":i=this.data.buttonTouchedColor;break;default:i=this.data.buttonColor}n[e].material.color.set(i)}}})},9531:(e,t,n)=>{var i=n(3515).registerComponent,r=n(7629),s=n(6600),o=s.checkControllerPresentAndSetup,a=s.emitIfAxesChanged,l=s.onButtonEvent,c=n(8903).device.isWebXRAvailable,h=\"https://cdn.aframe.io/controllers/samsung/\",u=h+\"gear_vr_controller.obj\",d=h+\"gear_vr_controller.mtl\",p=c?\"samsung-gearvr\":\"Gear VR\",A=c?{axes:{touchpad:[0,1]},buttons:[\"trigger\",\"none\",\"touchpad\",\"none\",\"menu\"]}:{axes:{trackpad:[0,1]},buttons:[\"trackpad\",\"trigger\"]};e.exports.Component=i(\"gearvr-controls\",{schema:{hand:{default:\"\"},buttonColor:{type:\"color\",default:\"#000000\"},buttonTouchedColor:{type:\"color\",default:\"#777777\"},buttonHighlightColor:{type:\"color\",default:\"#FFFFFF\"},model:{default:!0},orientationOffset:{type:\"vec3\"},armModel:{default:!0}},mapping:A,bindMethods:function(){this.onModelLoaded=r(this.onModelLoaded,this),this.onControllersUpdate=r(this.onControllersUpdate,this),this.checkIfControllerPresent=r(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=r(this.removeControllersUpdateListener,this),this.onAxisMoved=r(this.onAxisMoved,this)},init:function(){var e=this;this.onButtonChanged=r(this.onButtonChanged,this),this.onButtonDown=function(t){l(t.detail.id,\"down\",e)},this.onButtonUp=function(t){l(t.detail.id,\"up\",e)},this.onButtonTouchStart=function(t){l(t.detail.id,\"touchstart\",e)},this.onButtonTouchEnd=function(t){l(t.detail.id,\"touchend\",e)},this.controllerPresent=!1,this.lastControllerCheck=0,this.bindMethods()},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"model-loaded\",this.onModelLoaded),e.addEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"model-loaded\",this.onModelLoaded),e.removeEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){o(this,p,this.data.hand?{hand:this.data.hand}:{})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var e=this.el,t=this.data;e.setAttribute(\"tracked-controls\",{armModel:t.armModel,hand:t.hand,idPrefix:p,id:p,orientationOffset:t.orientationOffset}),this.data.model&&this.el.setAttribute(\"obj-model\",{obj:u,mtl:d})},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelLoaded:function(e){var t,n=e.detail.model;this.data.model&&((t=this.buttonMeshes={}).trigger=n.children[2],t.trackpad=n.children[1],t.touchpad=n.children[1])},onButtonChanged:function(e){var t=this.mapping.buttons[e.detail.id];t&&this.el.emit(t+\"changed\",e.detail.state)},onAxisMoved:function(e){a(this,this.mapping.axes,e)},updateModel:function(e,t){this.data.model&&this.updateButtonModel(e,t)},updateButtonModel:function(e,t){var n=this.buttonMeshes;if(n&&n[e]){var i;switch(t){case\"down\":i=this.data.buttonHighlightColor;break;case\"touchstart\":i=this.data.buttonTouchedColor;break;default:i=this.data.buttonColor}n[e].material.color.set(i)}}})},9577:(e,t,n)=>{var i=n(3515).registerComponent,r=n(7629),s=n(6600),o=s.checkControllerPresentAndSetup,a=s.emitIfAxesChanged,l=s.onButtonEvent,c=\"generic\";e.exports.Component=i(\"generic-tracked-controller-controls\",{schema:{hand:{default:\"\"},defaultModel:{default:!0},defaultModelColor:{default:\"gray\"},orientationOffset:{type:\"vec3\"},disabled:{default:!1}},mapping:{axes:{touchpad:[0,1],thumbstick:[2,3]},buttons:[\"trigger\",\"squeeze\",\"touchpad\",\"thumbstick\"]},bindMethods:function(){this.onControllersUpdate=r(this.onControllersUpdate,this),this.checkIfControllerPresent=r(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=r(this.removeControllersUpdateListener,this),this.onAxisMoved=r(this.onAxisMoved,this)},init:function(){var e=this;this.onButtonChanged=r(this.onButtonChanged,this),this.onButtonDown=function(t){l(t.detail.id,\"down\",e)},this.onButtonUp=function(t){l(t.detail.id,\"up\",e)},this.onButtonTouchStart=function(t){l(t.detail.id,\"touchstart\",e)},this.onButtonTouchEnd=function(t){l(t.detail.id,\"touchend\",e)},this.controllerPresent=!1,this.wasControllerConnected=!1,this.lastControllerCheck=0,this.rendererSystem=this.el.sceneEl.systems.renderer,this.bindMethods(),this.el.addEventListener(\"controllerconnected\",(function(t){t.detail.name!==e.name&&(e.wasControllerConnected=!0,e.removeEventListeners(),e.removeControllersUpdateListener())}))},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var e=this.data,t=e.hand?e.hand:void 0;o(this,c,{hand:t,iterateControllerProfiles:!0})},play:function(){this.wasControllerConnected||(this.checkIfControllerPresent(),this.addControllersUpdateListener())},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var e=this.el,t=this.data;this.el.components[\"tracked-controls\"]?this.removeEventListeners():(e.setAttribute(\"tracked-controls\",{hand:t.hand,idPrefix:c,orientationOffset:t.orientationOffset,iterateControllerProfiles:!0}),this.data.defaultModel&&this.initDefaultModel())},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(e){var t=this.mapping.buttons[e.detail.id];t&&this.el.emit(t+\"changed\",e.detail.state)},onAxisMoved:function(e){a(this,this.mapping.axes,e)},initDefaultModel:function(){var e=this.modelEl=document.createElement(\"a-entity\");e.setAttribute(\"geometry\",{primitive:\"sphere\",radius:.03}),e.setAttribute(\"material\",{color:this.data.color}),this.el.appendChild(e)}})},2503:(e,t,n)=>{var i=n(4863).xZ,r=n(4863).ib,s=n(3515).registerComponent,o=n(2666),a=new o.BufferGeometry;e.exports.Component=s(\"geometry\",{schema:{buffer:{default:!0},primitive:{default:\"box\",oneOf:r,schemaChange:!0},skipCache:{default:!1}},init:function(){this.geometry=null},update:function(e){var t,n=this.data,i=this.el,r=this.system;this.geometry&&(r.unuseGeometry(e),this.geometry=null),this.geometry=r.getOrCreateGeometry(n),(t=i.getObject3D(\"mesh\"))?t.geometry=this.geometry:((t=new o.Mesh).geometry=this.geometry,this.el.getAttribute(\"material\")||(t.material=new o.MeshStandardMaterial({color:16777215*Math.random(),metalness:0,roughness:.5})),i.setObject3D(\"mesh\",t))},remove:function(){this.system.unuseGeometry(this.data),this.el.getObject3D(\"mesh\").geometry=a,this.geometry=null},updateSchema:function(e){var t=this.oldData&&this.oldData.primitive,n=e.primitive,r=i[n]&&i[n].schema;if(!r)throw new Error(\"Unknown geometry schema `\"+n+\"`\");t&&t===n||this.extendSchema(r)}})},3647:(e,t,n)=>{var i=n(3515).registerComponent,r=n(2666),s=n(8903).debug(\"components:gltf-model:warn\");e.exports.Component=i(\"gltf-model\",{schema:{type:\"model\"},init:function(){var e=this,t=this.system.getDRACOLoader(),n=this.system.getMeshoptDecoder(),i=this.system.getKTX2Loader();this.model=null,this.loader=new r.GLTFLoader,t&&this.loader.setDRACOLoader(t),this.ready=n?n.then((function(t){e.loader.setMeshoptDecoder(t)})):Promise.resolve(),i&&this.loader.setKTX2Loader(i)},update:function(){var e=this,t=this.el,n=this.data;n&&(this.remove(),this.ready.then((function(){e.loader.load(n,(function(n){e.model=n.scene||n.scenes[0],e.model.animations=n.animations,t.setObject3D(\"mesh\",e.model),t.emit(\"model-loaded\",{format:\"gltf\",model:e.model})}),void 0,(function(e){var i=e&&e.message?e.message:\"Failed to load glTF model\";s(i),t.emit(\"model-error\",{format:\"gltf\",src:n})}))})))},remove:function(){this.model&&this.el.removeObject3D(\"mesh\")}})},2346:(e,t,n)=>{var i=n(3515).registerComponent,r={toonLeft:\"https://cdn.aframe.io/controllers/hands/leftHand.glb\",toonRight:\"https://cdn.aframe.io/controllers/hands/rightHand.glb\",lowPolyLeft:\"https://cdn.aframe.io/controllers/hands/leftHandLow.glb\",lowPolyRight:\"https://cdn.aframe.io/controllers/hands/rightHandLow.glb\",highPolyLeft:\"https://cdn.aframe.io/controllers/hands/leftHandHigh.glb\",highPolyRight:\"https://cdn.aframe.io/controllers/hands/rightHandHigh.glb\"},s=\"Open\",o=\"Point\",a=\"Fist\",l=\"Thumb Up\",c={};function h(e,t){var n;if(e)return\"grip\"===(n=c[e])?n+(t?\"close\":\"open\"):\"point\"===n?n+(t?\"up\":\"down\"):\"pointing\"===n||\"pistol\"===n?n+(t?\"start\":\"end\"):void 0}c[a]=\"grip\",c[l]=\"pistol\",c[o]=\"pointing\",e.exports.Component=i(\"hand-controls\",{schema:{color:{default:\"white\",type:\"color\"},hand:{default:\"left\"},handModelStyle:{default:\"lowPoly\",oneOf:[\"lowPoly\",\"highPoly\",\"toon\"]}},init:function(){var e=this,t=this.el;this.gesture=s,this.pressedButtons={},this.touchedButtons={},this.loader=new THREE.GLTFLoader,this.loader.setCrossOrigin(\"anonymous\"),this.onGripDown=function(){e.handleButton(\"grip\",\"down\")},this.onGripUp=function(){e.handleButton(\"grip\",\"up\")},this.onTrackpadDown=function(){e.handleButton(\"trackpad\",\"down\")},this.onTrackpadUp=function(){e.handleButton(\"trackpad\",\"up\")},this.onTrackpadTouchStart=function(){e.handleButton(\"trackpad\",\"touchstart\")},this.onTrackpadTouchEnd=function(){e.handleButton(\"trackpad\",\"touchend\")},this.onTriggerDown=function(){e.handleButton(\"trigger\",\"down\")},this.onTriggerUp=function(){e.handleButton(\"trigger\",\"up\")},this.onTriggerTouchStart=function(){e.handleButton(\"trigger\",\"touchstart\")},this.onTriggerTouchEnd=function(){e.handleButton(\"trigger\",\"touchend\")},this.onGripTouchStart=function(){e.handleButton(\"grip\",\"touchstart\")},this.onGripTouchEnd=function(){e.handleButton(\"grip\",\"touchend\")},this.onThumbstickDown=function(){e.handleButton(\"thumbstick\",\"down\")},this.onThumbstickUp=function(){e.handleButton(\"thumbstick\",\"up\")},this.onAorXTouchStart=function(){e.handleButton(\"AorX\",\"touchstart\")},this.onAorXTouchEnd=function(){e.handleButton(\"AorX\",\"touchend\")},this.onBorYTouchStart=function(){e.handleButton(\"BorY\",\"touchstart\")},this.onBorYTouchEnd=function(){e.handleButton(\"BorY\",\"touchend\")},this.onSurfaceTouchStart=function(){e.handleButton(\"surface\",\"touchstart\")},this.onSurfaceTouchEnd=function(){e.handleButton(\"surface\",\"touchend\")},this.onControllerConnected=this.onControllerConnected.bind(this),this.onControllerDisconnected=this.onControllerDisconnected.bind(this),t.addEventListener(\"controllerconnected\",this.onControllerConnected),t.addEventListener(\"controllerdisconnected\",this.onControllerDisconnected),t.object3D.visible=!1},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners()},tick:function(e,t){var n=this.el.getObject3D(\"mesh\");n&&n.mixer&&n.mixer.update(t/1e3)},onControllerConnected:function(){this.el.object3D.visible=!0},onControllerDisconnected:function(){this.el.object3D.visible=!1},addEventListeners:function(){var e=this.el;e.addEventListener(\"gripdown\",this.onGripDown),e.addEventListener(\"gripup\",this.onGripUp),e.addEventListener(\"trackpaddown\",this.onTrackpadDown),e.addEventListener(\"trackpadup\",this.onTrackpadUp),e.addEventListener(\"trackpadtouchstart\",this.onTrackpadTouchStart),e.addEventListener(\"trackpadtouchend\",this.onTrackpadTouchEnd),e.addEventListener(\"triggerdown\",this.onTriggerDown),e.addEventListener(\"triggerup\",this.onTriggerUp),e.addEventListener(\"triggertouchstart\",this.onTriggerTouchStart),e.addEventListener(\"triggertouchend\",this.onTriggerTouchEnd),e.addEventListener(\"griptouchstart\",this.onGripTouchStart),e.addEventListener(\"griptouchend\",this.onGripTouchEnd),e.addEventListener(\"thumbstickdown\",this.onThumbstickDown),e.addEventListener(\"thumbstickup\",this.onThumbstickUp),e.addEventListener(\"abuttontouchstart\",this.onAorXTouchStart),e.addEventListener(\"abuttontouchend\",this.onAorXTouchEnd),e.addEventListener(\"bbuttontouchstart\",this.onBorYTouchStart),e.addEventListener(\"bbuttontouchend\",this.onBorYTouchEnd),e.addEventListener(\"xbuttontouchstart\",this.onAorXTouchStart),e.addEventListener(\"xbuttontouchend\",this.onAorXTouchEnd),e.addEventListener(\"ybuttontouchstart\",this.onBorYTouchStart),e.addEventListener(\"ybuttontouchend\",this.onBorYTouchEnd),e.addEventListener(\"surfacetouchstart\",this.onSurfaceTouchStart),e.addEventListener(\"surfacetouchend\",this.onSurfaceTouchEnd)},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"gripdown\",this.onGripDown),e.removeEventListener(\"gripup\",this.onGripUp),e.removeEventListener(\"trackpaddown\",this.onTrackpadDown),e.removeEventListener(\"trackpadup\",this.onTrackpadUp),e.removeEventListener(\"trackpadtouchstart\",this.onTrackpadTouchStart),e.removeEventListener(\"trackpadtouchend\",this.onTrackpadTouchEnd),e.removeEventListener(\"triggerdown\",this.onTriggerDown),e.removeEventListener(\"triggerup\",this.onTriggerUp),e.removeEventListener(\"triggertouchstart\",this.onTriggerTouchStart),e.removeEventListener(\"triggertouchend\",this.onTriggerTouchEnd),e.removeEventListener(\"griptouchstart\",this.onGripTouchStart),e.removeEventListener(\"griptouchend\",this.onGripTouchEnd),e.removeEventListener(\"thumbstickdown\",this.onThumbstickDown),e.removeEventListener(\"thumbstickup\",this.onThumbstickUp),e.removeEventListener(\"abuttontouchstart\",this.onAorXTouchStart),e.removeEventListener(\"abuttontouchend\",this.onAorXTouchEnd),e.removeEventListener(\"bbuttontouchstart\",this.onBorYTouchStart),e.removeEventListener(\"bbuttontouchend\",this.onBorYTouchEnd),e.removeEventListener(\"xbuttontouchstart\",this.onAorXTouchStart),e.removeEventListener(\"xbuttontouchend\",this.onAorXTouchEnd),e.removeEventListener(\"ybuttontouchstart\",this.onBorYTouchStart),e.removeEventListener(\"ybuttontouchend\",this.onBorYTouchEnd),e.removeEventListener(\"surfacetouchstart\",this.onSurfaceTouchStart),e.removeEventListener(\"surfacetouchend\",this.onSurfaceTouchEnd)},update:function(e){var t,n=this.el,i=this.data.hand,s=this.data.handModelStyle,o=this.data.color,a=this;if(t={hand:i,model:!1},i!==e){var l=r[s+i.charAt(0).toUpperCase()+i.slice(1)];this.loader.load(l,(function(e){var r=e.scene.children[0],s=\"left\"===i?Math.PI/2:-Math.PI/2;r.mixer=new THREE.AnimationMixer(r),a.clips=e.animations,n.setObject3D(\"mesh\",r),r.children[1].material.color=new THREE.Color(o),r.position.set(0,0,0),r.rotation.set(0,0,s),n.setAttribute(\"magicleap-controls\",t),n.setAttribute(\"vive-controls\",t),n.setAttribute(\"oculus-touch-controls\",t),n.setAttribute(\"windows-motion-controls\",t),n.setAttribute(\"hp-mixed-reality-controls\",t)}))}},remove:function(){this.el.removeObject3D(\"mesh\")},handleButton:function(e,t){var n,i=\"down\"===t,r=\"touchstart\"===t;if(0===t.indexOf(\"touch\")){if(r===this.touchedButtons[e])return;this.touchedButtons[e]=r}else{if(i===this.pressedButtons[e])return;this.pressedButtons[e]=i}n=this.gesture,this.gesture=this.determineGesture(),this.gesture!==n&&(this.animateGesture(this.gesture,n),this.emitGestureEvents(this.gesture,n))},determineGesture:function(){var e,t,n,i=this.pressedButtons.grip,r=this.pressedButtons.surface||this.touchedButtons.surface,s=this.pressedButtons.trackpad||this.touchedButtons.trackpad,c=this.pressedButtons.trigger||this.touchedButtons.trigger,h=this.touchedButtons.AorX||this.touchedButtons.BorY;return t=this.el.components[\"tracked-controls\"],(n=t&&t.controller)&&(n.id&&0===n.id.indexOf(\"OpenVR \")||n.profiles&&n.profiles[0]&&\"htc-vive\"===n.profiles[0])?i||c?e=a:s&&(e=o):i?e=r||h||s?c?a:o:c?l:\"Point + Thumb\":c&&(e=\"Hold\"),e},getClip:function(e){var t,n;for(n=0;n\u003Cthis.clips.length;n++)if((t=this.clips[n]).name===e)return t},animateGesture:function(e,t){e?this.playAnimation(e||s,t,!1):this.playAnimation(t,t,!0)},emitGestureEvents:function(e,t){var n,i=this.el;t!==e&&((n=h(t,!1))&&i.emit(n),(n=h(e,!0))&&i.emit(n))},playAnimation:function(e,t,n){var i,r,s,o=this.el.getObject3D(\"mesh\");if(o){if(o.mixer.stopAllAction(),i=this.getClip(e),(s=o.mixer.clipAction(i)).clampWhenFinished=!0,s.loop=THREE.LoopRepeat,s.repetitions=0,s.timeScale=n?-1:1,s.time=n?i.duration:0,s.weight=1,!t||e===t)return o.mixer.stopAllAction(),void s.play();i=this.getClip(t),(r=o.mixer.clipAction(i)).weight=.15,r.play(),s.play(),r.crossFadeTo(s,.15,!0)}}})},6655:(e,t,n)=>{var i,r=n(3515).registerComponent,s=n(7629),o=n(6600).checkControllerPresentAndSetup,a=[\"wrist\",\"thumb-metacarpal\",\"thumb-phalanx-proximal\",\"thumb-phalanx-distal\",\"thumb-tip\",\"index-finger-metacarpal\",\"index-finger-phalanx-proximal\",\"index-finger-phalanx-intermediate\",\"index-finger-phalanx-distal\",\"index-finger-tip\",\"middle-finger-metacarpal\",\"middle-finger-phalanx-proximal\",\"middle-finger-phalanx-intermediate\",\"middle-finger-phalanx-distal\",\"middle-finger-tip\",\"ring-finger-metacarpal\",\"ring-finger-phalanx-proximal\",\"ring-finger-phalanx-intermediate\",\"ring-finger-phalanx-distal\",\"ring-finger-tip\",\"pinky-finger-metacarpal\",\"pinky-finger-phalanx-proximal\",\"pinky-finger-phalanx-intermediate\",\"pinky-finger-phalanx-distal\",\"pinky-finger-tip\"];e.exports.Component=r(\"hand-tracking-controls\",{schema:{hand:{default:\"right\",oneOf:[\"left\",\"right\"]},modelStyle:{default:\"mesh\",oneOf:[\"dots\",\"mesh\"]},modelColor:{default:\"white\"}},bindMethods:function(){this.onControllersUpdate=s(this.onControllersUpdate,this),this.checkIfControllerPresent=s(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=s(this.removeControllersUpdateListener,this)},addEventListeners:function(){this.el.addEventListener(\"model-loaded\",this.onModelLoaded);for(var e=0;e\u003Cthis.jointEls.length;++e)this.jointEls[e].object3D.visible=!0},removeEventListeners:function(){this.el.removeEventListener(\"model-loaded\",this.onModelLoaded);for(var e=0;e\u003Cthis.jointEls.length;++e)this.jointEls[e].object3D.visible=!1},init:function(){var e=this.el.sceneEl,t=e.getAttribute(\"webxr\").optionalFeatures;t.push(\"hand-tracking\"),e.setAttribute(\"webxr\",{optionalFeatures:t}),this.onModelLoaded=this.onModelLoaded.bind(this),this.jointEls=[],this.controllerPresent=!1,this.isPinched=!1,this.pinchEventDetail={position:new THREE.Vector3},this.indexTipPosition=new THREE.Vector3,this.bindMethods(),this.updateReferenceSpace=this.updateReferenceSpace.bind(this),this.el.sceneEl.addEventListener(\"enter-vr\",this.updateReferenceSpace),this.el.sceneEl.addEventListener(\"exit-vr\",this.updateReferenceSpace)},updateReferenceSpace:function(){var e=this,t=this.el.sceneEl.xrSession;if(this.referenceSpace=void 0,t){var n=e.el.sceneEl.systems.webxr.sessionReferenceSpaceType;t.requestReferenceSpace(n).then((function(t){e.referenceSpace=t.getOffsetReferenceSpace(new XRRigidTransform({x:0,y:1.5,z:0}))})).catch((function(t){throw e.el.sceneEl.systems.webxr.warnIfFeatureNotRequested(n,\"tracked-controls-webxr uses reference space \"+n),t}))}},checkIfControllerPresent:function(){var e=this.data,t=e.hand?e.hand:void 0;o(this,\"\",{hand:t,iterateControllerProfiles:!0,handTracking:!0})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},tick:function(){var e=this.el.sceneEl,t=this.el.components[\"tracked-controls\"]&&this.el.components[\"tracked-controls\"].controller,n=e.frame,i=this.el.components[\"tracked-controls-webxr\"];t&&n&&i&&t.hand&&(this.el.object3D.position.set(0,0,0),this.el.object3D.rotation.set(0,0,0),n.getJointPose&&this.updateHandModel(),this.detectGesture())},updateHandModel:function(){\"dots\"===this.data.modelStyle&&this.updateHandDotsModel(),\"mesh\"===this.data.modelStyle&&this.updateHandMeshModel()},getBone:function(e){for(var t=this.bones,n=0;n\u003Ct.length;n++)if(t[n].name===e)return t[n];return null},updateHandMeshModel:function(){var e=this.el.sceneEl.frame,t=this.el.components[\"tracked-controls\"]&&this.el.components[\"tracked-controls\"].controller,n=this.referenceSpace;if(t&&this.mesh&&n)for(var i of(this.mesh.visible=!1,t.hand.values())){var r,s,o;s=e.getJointPose(i,n),null!=(r=this.getBone(i.jointName))&&s&&(o=s.transform,this.mesh.visible=!0,r.position.copy(o.position),r.quaternion.copy(o.orientation))}},updateHandDotsModel:function(){var e,t,n,i=this.el.sceneEl.frame,r=this.el.components[\"tracked-controls\"]&&this.el.components[\"tracked-controls\"].controller,s=this.el.components[\"tracked-controls-webxr\"].system.referenceSpace,o=0;for(var a of r.hand.values())t=(e=this.jointEls[o++]).object3D,n=i.getJointPose(a,s),e.object3D.visible=!!n,n&&(t.matrix.elements=n.transform.matrix,t.matrix.decompose(t.position,t.rotation,t.scale),e.setAttribute(\"scale\",{x:n.radius,y:n.radius,z:n.radius}))},detectGesture:function(){this.detectPinch()},detectPinch:(i=new THREE.Vector3,function(){var e=this.el.sceneEl.frame,t=this.indexTipPosition,n=this.el.components[\"tracked-controls\"]&&this.el.components[\"tracked-controls\"].controller,r=this.el.components[\"tracked-controls-webxr\"],s=this.referenceSpace||r.system.referenceSpace,o=n.hand.get(\"index-finger-tip\"),a=n.hand.get(\"thumb-tip\");if(o&&a){var l=e.getJointPose(o,s),c=e.getJointPose(a,s);if(l&&c){i.copy(c.transform.position),t.copy(l.transform.position);var h=t.distanceTo(i);h\u003C.015&&!1===this.isPinched&&(this.isPinched=!0,this.pinchEventDetail.position.copy(t).lerp(i,.5),this.pinchEventDetail.position.y+=1.5,this.el.emit(\"pinchstarted\",this.pinchEventDetail)),h>.03&&!0===this.isPinched&&(this.isPinched=!1,this.pinchEventDetail.position.copy(t).lerp(i,.5),this.pinchEventDetail.position.y+=1.5,this.el.emit(\"pinchended\",this.pinchEventDetail)),this.isPinched&&(this.pinchEventDetail.position.copy(t).lerp(i,.5),this.pinchEventDetail.position.y+=1.5,this.el.emit(\"pinchmoved\",this.pinchEventDetail)),t.y+=1.5}}}),pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var e=this.el,t=this.data;e.setAttribute(\"tracked-controls\",{hand:t.hand,iterateControllerProfiles:!0,handTrackingEnabled:!0}),this.initDefaultModel()},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){var e;this.checkIfControllerPresent(),e=this.el.components[\"tracked-controls\"]&&this.el.components[\"tracked-controls\"].controller,this.el.getObject3D(\"mesh\")&&(e&&e.hand&&e.hand[0]||(this.el.getObject3D(\"mesh\").visible=!1))},initDefaultModel:function(){this.el.getObject3D(\"mesh\")||(\"dots\"===this.data.modelStyle&&this.initDotsModel(),\"mesh\"===this.data.modelStyle&&this.initMeshHandModel())},initDotsModel:function(){if(0===this.jointEls.length)for(var e=0;e\u003Ca.length;++e){var t=this.jointEl=document.createElement(\"a-entity\");t.setAttribute(\"geometry\",{primitive:\"sphere\",radius:1}),t.setAttribute(\"material\",{color:this.data.modelColor}),t.object3D.visible=!1,this.el.appendChild(t),this.jointEls.push(t)}},initMeshHandModel:function(){var e=\"left\"===this.data.hand?\"https://cdn.aframe.io/controllers/oculus-hands/v4/left.glb\":\"https://cdn.aframe.io/controllers/oculus-hands/v4/right.glb\";this.el.setAttribute(\"gltf-model\",e)},onModelLoaded:function(){var e=this.mesh=this.el.getObject3D(\"mesh\").children[0],t=this.skinnedMesh=e.getObjectByProperty(\"type\",\"SkinnedMesh\");this.skinnedMesh&&(this.bones=t.skeleton.bones,this.el.removeObject3D(\"mesh\"),e.position.set(0,1.5,0),e.rotation.set(0,0,0),t.frustumCulled=!1,t.material=new THREE.MeshStandardMaterial({skinning:!0,color:this.data.modelColor}),this.el.setObject3D(\"mesh\",e))}})},4228:(e,t,n)=>{var i=n(3515).registerComponent;e.exports.Component=i(\"hide-on-enter-ar\",{init:function(){var e=this;this.el.sceneEl.addEventListener(\"enter-vr\",(function(){e.el.sceneEl.is(\"ar-mode\")&&(e.el.object3D.visible=!1)})),this.el.sceneEl.addEventListener(\"exit-vr\",(function(){e.el.object3D.visible=!0}))}})},9359:(e,t,n)=>{var i=n(7629),r=n(3515).registerComponent,s=n(2666),o=n(6600),a=o.checkControllerPresentAndSetup,l=o.emitIfAxesChanged,c=o.onButtonEvent,h=\"hp-mixed-reality\",u={x:0,y:0,z:.06},d={_x:Math.PI/4,_y:0,_z:0,_order:\"XYZ\"};e.exports.Component=r(\"hp-mixed-reality-controls\",{schema:{hand:{default:\"none\"},model:{default:!0},orientationOffset:{type:\"vec3\"}},mapping:{left:{axes:{touchpad:[2,3]},buttons:[\"trigger\",\"grip\",\"none\",\"thumbstick\",\"xbutton\",\"ybutton\"]},right:{axes:{touchpad:[2,3]},buttons:[\"trigger\",\"grip\",\"none\",\"thumbstick\",\"abutton\",\"bbutton\"]}},init:function(){var e=this;this.controllerPresent=!1,this.lastControllerCheck=0,this.onButtonChanged=i(this.onButtonChanged,this),this.onButtonDown=function(t){c(t.detail.id,\"down\",e,e.data.hand)},this.onButtonUp=function(t){c(t.detail.id,\"up\",e,e.data.hand)},this.onButtonTouchEnd=function(t){c(t.detail.id,\"touchend\",e,e.data.hand)},this.onButtonTouchStart=function(t){c(t.detail.id,\"touchstart\",e,e.data.hand)},this.previousButtonValues={},this.rendererSystem=this.el.sceneEl.systems.renderer,this.bindMethods()},update:function(){var e=this.data;this.controllerIndex=\"right\"===e.hand?0:\"left\"===e.hand?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=i(this.onModelLoaded,this),this.onControllersUpdate=i(this.onControllersUpdate,this),this.checkIfControllerPresent=i(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=i(this.removeControllersUpdateListener,this),this.onAxisMoved=i(this.onAxisMoved,this)},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"axismove\",this.onAxisMoved),e.addEventListener(\"model-loaded\",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"axismove\",this.onAxisMoved),e.removeEventListener(\"model-loaded\",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var e=this.data;a(this,h,{index:this.controllerIndex,hand:e.hand})},injectTrackedControls:function(){var e=this.el,t=this.data;e.setAttribute(\"tracked-controls\",{idPrefix:h,hand:t.hand,controller:this.controllerIndex,orientationOffset:t.orientationOffset}),this.data.model&&this.el.setAttribute(\"gltf-model\",\"https://cdn.aframe.io/controllers/hp/mixed-reality/\"+this.data.hand+\".glb\")},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(e){var t,n=this.mapping[this.data.hand].buttons[e.detail.id];n&&(\"trigger\"===n&&(t=e.detail.state.value,console.log(\"analog value of trigger press: \"+t)),this.el.emit(n+\"changed\",e.detail.state))},onModelLoaded:function(e){var t=e.detail.model;this.data.model&&(t.position.copy(u),t.rotation.copy(d),this.el.emit(\"controllermodelready\",{name:\"hp-mixed-reality-controls\",model:this.data.model,rayOrigin:new s.Vector3(0,0,0)}))},onAxisMoved:function(e){l(this,this.mapping.axes,e)}})},8686:(e,t,n)=>{n(4649),n(9541),n(57),n(9830),n(9531),n(2503),n(9577),n(3647),n(6655),n(2346),n(4228),n(9359),n(1714),n(7152),n(4893),n(9234),n(109),n(7479),n(240),n(9115),n(4269),n(9536),n(5569),n(4854),n(7454),n(4914),n(3689),n(1684),n(5538),n(6957),n(2761),n(1125),n(8666),n(8057),n(3798),n(8367),n(9507),n(6296),n(7872),n(3431),n(2819),n(1135),n(4046),n(1277),n(3969),n(3638),n(7445),n(4310),n(5670),n(467),n(5834),n(2772)},7152:(e,t,n)=>{var i=n(3515).registerComponent,r=n(8903);i(\"laser-controls\",{schema:{hand:{default:\"right\"},model:{default:!0},defaultModelColor:{type:\"color\",default:\"grey\"}},init:function(){var e=this.config,t=this.data,n=this.el,i=this,s={hand:t.hand,model:t.model};function o(t){var s=e[t.detail.name];if(s){var o=r.extend({showLine:!0},s.raycaster||{});t.detail.rayOrigin&&(o.origin=t.detail.rayOrigin.origin,o.direction=t.detail.rayOrigin.direction,o.showLine=!0),t.detail.rayOrigin||!i.modelReady?n.setAttribute(\"raycaster\",o):n.setAttribute(\"raycaster\",\"showLine\",!0),n.setAttribute(\"cursor\",r.extend({fuse:!1},s.cursor))}}n.setAttribute(\"daydream-controls\",s),n.setAttribute(\"gearvr-controls\",s),n.setAttribute(\"hp-mixed-reality-controls\",s),n.setAttribute(\"magicleap-controls\",s),n.setAttribute(\"oculus-go-controls\",s),n.setAttribute(\"oculus-touch-controls\",s),n.setAttribute(\"valve-index-controls\",s),n.setAttribute(\"vive-controls\",s),n.setAttribute(\"vive-focus-controls\",s),n.setAttribute(\"windows-motion-controls\",s),n.setAttribute(\"generic-tracked-controller-controls\",{hand:s.hand}),n.addEventListener(\"controllerconnected\",o),n.addEventListener(\"controllerdisconnected\",(function(){n.setAttribute(\"raycaster\",\"showLine\",!1)})),n.addEventListener(\"controllermodelready\",(function(e){o(e),i.modelReady=!0}))},config:{\"daydream-controls\":{cursor:{downEvents:[\"trackpaddown\",\"triggerdown\"],upEvents:[\"trackpadup\",\"triggerup\"]}},\"gearvr-controls\":{cursor:{downEvents:[\"triggerdown\"],upEvents:[\"triggerup\"]},raycaster:{origin:{x:0,y:.001,z:0}}},\"generic-tracked-controller-controls\":{cursor:{downEvents:[\"triggerdown\"],upEvents:[\"triggerup\"]}},\"hp-mixed-reality-controls\":{cursor:{downEvents:[\"triggerdown\"],upEvents:[\"triggerup\"]},raycaster:{origin:{x:0,y:0,z:0}}},\"magicleap-controls\":{cursor:{downEvents:[\"trackpaddown\",\"triggerdown\"],upEvents:[\"trackpadup\",\"triggerup\"]}},\"oculus-go-controls\":{cursor:{downEvents:[\"triggerdown\"],upEvents:[\"triggerup\"]},raycaster:{origin:{x:0,y:5e-4,z:0}}},\"oculus-touch-controls\":{cursor:{downEvents:[\"triggerdown\"],upEvents:[\"triggerup\"]},raycaster:{origin:{x:0,y:0,z:0}}},\"valve-index-controls\":{cursor:{downEvents:[\"triggerdown\"],upEvents:[\"triggerup\"]}},\"vive-controls\":{cursor:{downEvents:[\"triggerdown\"],upEvents:[\"triggerup\"]}},\"vive-focus-controls\":{cursor:{downEvents:[\"trackpaddown\",\"triggerdown\"],upEvents:[\"trackpadup\",\"triggerup\"]}},\"windows-motion-controls\":{cursor:{downEvents:[\"triggerdown\"],upEvents:[\"triggerup\"]},raycaster:{showLine:!1}}}})},1714:(e,t,n)=>{var i=n(3515).registerComponent,r=n(8903).debug(\"components:layer:warn\");e.exports.Component=i(\"layer\",{schema:{type:{default:\"quad\",oneOf:[\"quad\",\"monocubemap\",\"stereocubemap\"]},src:{type:\"map\"},rotateCubemap:{default:!1},width:{default:0},height:{default:0}},init:function(){var e=this.el.sceneEl.renderer.getContext();this.quaternion=new THREE.Quaternion,this.position=new THREE.Vector3,this.bindMethods(),this.needsRedraw=!1,this.frameBuffer=e.createFramebuffer();var t=this.el.sceneEl.getAttribute(\"webxr\").requiredFeatures;t.push(\"layers\"),this.el.sceneEl.getAttribute(\"webxr\",\"requiredFeatures\",t),this.el.sceneEl.addEventListener(\"enter-vr\",this.onEnterVR),this.el.sceneEl.addEventListener(\"exit-vr\",this.onExitVR)},bindMethods:function(){this.onRequestedReferenceSpace=this.onRequestedReferenceSpace.bind(this),this.onEnterVR=this.onEnterVR.bind(this),this.onExitVR=this.onExitVR.bind(this)},update:function(e){this.data.src!==e.src&&this.updateSrc()},updateSrc:function(){var e=this.data.type;this.texture=void 0,\"quad\"!==e?\"monocubemap\"!==e&&\"stereocubemap\"!==e||this.loadCubeMapImages():this.loadQuadImage()},loadCubeMapImages:function(){var e,t=this.xrGLFactory,n=this.el.sceneEl.frame,i=this.data.src,r=this.data.type;this.visibilityChanged=!1,this.layer&&(\"monocubemap\"!==r&&\"stereocubemap\"!==r||(i.complete?this.pendingCubeMapUpdate=!1:this.pendingCubeMapUpdate=!0,this.loadingScreen?this.loadingScreen=!1:this.loadingScreen=!0,\"monocubemap\"===r?(e=t.getSubImage(this.layer,n),this.loadCubeMapImage(e.colorTexture,i,0)):(e=t.getSubImage(this.layer,n,\"left\"),this.loadCubeMapImage(e.colorTexture,i,0),e=t.getSubImage(this.layer,n,\"right\"),this.loadCubeMapImage(e.colorTexture,i,6))))},loadQuadImage:function(){var e=this.data.src,t=this;this.el.sceneEl.systems.material.loadTexture(e,{src:e},(function(n){t.el.sceneEl.renderer.initTexture(n),t.texture=n,\"VIDEO\"===e.tagName&&setTimeout((function(){t.textureIsVideo=!0}),1e3),t.layer&&(t.layer.height=t.data.height/2||t.texture.image.height/1e3,t.layer.width=t.data.width/2||t.texture.image.width/1e3,t.needsRedraw=!0),t.updateQuadPanel()}))},preGenerateCubeMapTextures:function(e,t){\"monocubemap\"===this.data.type?this.generateCubeMapTextures(e,0,t):(this.generateCubeMapTextures(e,0,t),this.generateCubeMapTextures(e,6,t))},generateCubeMapTextures:function(e,t,n){for(var i,r,s=this.data,o=this.cubeFaceSize,a=Math.min(e.width,e.height),l=[],c=0;c\u003C6;c++){var h=document.createElement(\"CANVAS\");h.width=h.height=o;var u=h.getContext(\"2d\");s.rotateCubemap&&(2!==c&&3!==c||(u.save(),u.translate(o,o),u.rotate(Math.PI))),u.drawImage(e,(c+t)*a,0,a,a,0,0,o,o),u.restore(),n&&n(),l.push(h)}return s.rotateCubemap&&(i=l[0],r=l[1],l[0]=r,l[1]=i,i=l[4],r=l[5],l[4]=r,l[5]=i),n&&n(),l},loadCubeMapImage:function(e,t,n){var i,r=this.el.sceneEl.renderer.getContext();r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1),r.bindTexture(r.TEXTURE_CUBE_MAP,e),i=!t.complete||this.loadingScreen?this.loadingScreenImages:this.generateCubeMapTextures(t,n);var s=0;i.forEach((function(e,t){r.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,0,0,r.RGBA,r.UNSIGNED_BYTE,e),s=r.getError()})),0!==s&&console.log(\"renderingError, WebGL Error Code: \"+s),r.bindTexture(r.TEXTURE_CUBE_MAP,null)},tick:function(){this.el.sceneEl.xrSession&&(!this.layer&&this.el.sceneEl.is(\"vr-mode\")&&this.initLayer(),this.updateTransform(),this.data.src.complete&&(this.pendingCubeMapUpdate||this.loadingScreen||this.visibilityChanged)&&this.loadCubeMapImages(),(this.needsRedraw||this.layer.needsRedraw||this.textureIsVideo)&&(\"quad\"===this.data.type&&this.draw(),this.needsRedraw=!1))},initLayer:function(){var e=this,t=this.data.type;this.el.sceneEl.xrSession.onvisibilitychange=function(t){e.visibilityChanged=\"hidden\"!==t.session.visibilityState},\"quad\"!==t?\"monocubemap\"!==t&&\"stereocubemap\"!==t||this.initCubeMapLayer():this.initQuadLayer()},initQuadLayer:function(){var e=this.el.sceneEl,t=e.renderer.getContext(),n=this.xrGLFactory=new XRWebGLBinding(e.xrSession,t);this.texture&&(this.layer=n.createQuadLayer({space:this.referenceSpace,viewPixelHeight:2048,viewPixelWidth:2048,height:this.data.height/2||this.texture.image.height/1e3,width:this.data.width/2||this.texture.image.width/1e3}),this.initLoadingScreenImages(),e.renderer.xr.addLayer(this.layer))},initCubeMapLayer:function(){var e=this.data.src,t=this.el.sceneEl,n=t.renderer.getContext(),i=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),r=this.cubeFaceSize=Math.min(i,Math.min(e.width,e.height)),s=this.xrGLFactory=new XRWebGLBinding(t.xrSession,n);this.layer=s.createCubeLayer({space:this.referenceSpace,viewPixelWidth:r,viewPixelHeight:r,layout:\"monocubemap\"===this.data.type?\"mono\":\"stereo\",isStatic:!1}),this.initLoadingScreenImages(),this.loadCubeMapImages(),t.renderer.xr.addLayer(this.layer)},initLoadingScreenImages:function(){for(var e=this.cubeFaceSize,t=this.loadingScreenImages=[],n=0;n\u003C6;n++){var i=document.createElement(\"CANVAS\");i.width=i.height=e;var r=i.getContext(\"2d\");i.width=i.height=e,r.fillStyle=\"black\",r.fillRect(0,0,e,e),2!==n&&3!==n&&(r.translate(e,0),r.scale(-1,1),r.fillStyle=\"white\",r.font=\"30px Arial\",r.fillText(\"Loading\",e/2,e/2)),t.push(i)}},destroyLayer:function(){this.layer&&(this.el.sceneEl.renderer.xr.removeLayer(this.layer),this.layer.destroy(),this.layer=void 0)},toggleCompositorLayer:function(){this.enableCompositorLayer(!this.layerEnabled)},enableCompositorLayer:function(e){this.layerEnabled=e,this.quadPanelEl.object3D.visible=!this.layerEnabled},updateQuadPanel:function(){var e=this.quadPanelEl;this.quadPanelEl||(e=this.quadPanelEl=document.createElement(\"a-entity\"),this.el.appendChild(e)),e.setAttribute(\"material\",{shader:\"flat\",src:this.data.src,transparent:!0}),e.setAttribute(\"geometry\",{primitive:\"plane\",height:this.data.height||this.texture.image.height/1e3,width:this.data.width||this.texture.image.height/1e3})},draw:function(){var e=this.el.sceneEl,t=this.el.sceneEl.renderer.getContext(),n=this.xrGLFactory.getSubImage(this.layer,e.frame),i=e.renderer.properties.get(this.texture).__webglTexture,r=t.getParameter(t.FRAMEBUFFER_BINDING);t.viewport(n.viewport.x,n.viewport.y,n.viewport.width,n.viewport.height),t.bindFramebuffer(t.FRAMEBUFFER,this.frameBuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n.colorTexture,0),function(e,t,n,i){var r=e.createFramebuffer();let s=n.viewport.x,o=n.viewport.y,a=n.viewport.x+n.viewport.width,l=n.viewport.y+n.viewport.height;\"VIDEO\"===i.tagName&&(e.bindTexture(e.TEXTURE_2D,t),e.texSubImage2D(e.TEXTURE_2D,0,0,0,i.width,i.height,e.RGB,e.UNSIGNED_BYTE,i)),e.bindFramebuffer(e.READ_FRAMEBUFFER,r),e.framebufferTexture2D(e.READ_FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0),e.readBuffer(e.COLOR_ATTACHMENT0),e.blitFramebuffer(0,0,i.width,i.height,s,o,a,l,e.COLOR_BUFFER_BIT,e.NEAREST),e.bindFramebuffer(e.READ_FRAMEBUFFER,null),e.deleteFramebuffer(r)}(t,i,n,this.data.src),t.bindFramebuffer(t.FRAMEBUFFER,r)},updateTransform:function(){var e=this.el,t=this.position,n=this.quaternion;e.object3D.updateMatrixWorld(),t.setFromMatrixPosition(e.object3D.matrixWorld),n.setFromRotationMatrix(e.object3D.matrixWorld),this.layerEnabled||t.set(0,0,1e8),this.layer.transform=new XRRigidTransform(t,n)},onEnterVR:function(){var e=this.el.sceneEl,t=e.xrSession;e.hasWebXR&&XRWebGLBinding&&t?(t.requestReferenceSpace(\"local-floor\").then(this.onRequestedReferenceSpace),this.needsRedraw=!0,this.layerEnabled=!0,this.quadPanelEl&&(this.quadPanelEl.object3D.visible=!1),this.data.src.play&&this.data.src.play()):r(\"The layer component requires WebXR and the layers API enabled\")},onExitVR:function(){this.quadPanelEl&&(this.quadPanelEl.object3D.visible=!0),this.destroyLayer()},onRequestedReferenceSpace:function(e){this.referenceSpace=e}})},4893:(e,t,n)=>{var i,r,s,o,a,l,c=n(7629),h=n(8903),u=h.diff,d=n(4219),p=n(3515).registerComponent,A=n(2666),f=n(3437),m=A.MathUtils.degToRad,g=d(\"components:light:warn\"),v=new A.CubeTextureLoader,y={};e.exports.Component=p(\"light\",{schema:{angle:{default:60,if:{type:[\"spot\"]}},color:{type:\"color\",if:{type:[\"ambient\",\"directional\",\"hemisphere\",\"point\",\"spot\"]}},envMap:{default:\"\",if:{type:[\"probe\"]}},groundColor:{type:\"color\",if:{type:[\"hemisphere\"]}},decay:{default:1,if:{type:[\"point\",\"spot\"]}},distance:{default:0,min:0,if:{type:[\"point\",\"spot\"]}},intensity:{default:1,min:0,if:{type:[\"ambient\",\"directional\",\"hemisphere\",\"point\",\"spot\",\"probe\"]}},penumbra:{default:0,min:0,max:1,if:{type:[\"spot\"]}},type:{default:\"directional\",oneOf:[\"ambient\",\"directional\",\"hemisphere\",\"point\",\"spot\",\"probe\"],schemaChange:!0},target:{type:\"selector\",if:{type:[\"spot\",\"directional\"]}},castShadow:{default:!1,if:{type:[\"point\",\"spot\",\"directional\"]}},shadowBias:{default:0,if:{castShadow:!0}},shadowCameraFar:{default:500,if:{castShadow:!0}},shadowCameraFov:{default:90,if:{castShadow:!0}},shadowCameraNear:{default:.5,if:{castShadow:!0}},shadowCameraTop:{default:5,if:{castShadow:!0}},shadowCameraRight:{default:5,if:{castShadow:!0}},shadowCameraBottom:{default:-5,if:{castShadow:!0}},shadowCameraLeft:{default:-5,if:{castShadow:!0}},shadowCameraVisible:{default:!1,if:{castShadow:!0}},shadowCameraAutomatic:{default:\"\",if:{type:[\"directional\"]}},shadowMapHeight:{default:512,if:{castShadow:!0}},shadowMapWidth:{default:512,if:{castShadow:!0}},shadowRadius:{default:1,if:{castShadow:!0}}},init:function(){var e=this.el;this.light=null,this.defaultTarget=null,this.rendererSystem=this.el.sceneEl.systems.renderer,this.system.registerLight(e)},update:function(e){var t=this.data,n=u(t,e),i=this.light,r=this.rendererSystem,s=this;if(!i||\"type\"in n)this.setLight(this.data),this.updateShadow();else{var o=!1;Object.keys(n).forEach((function(e){var n=t[e];switch(e){case\"color\":i.color.set(n),r.applyColorCorrection(i.color);break;case\"groundColor\":i.groundColor.set(n),r.applyColorCorrection(i.groundColor);break;case\"angle\":i.angle=m(n);break;case\"target\":null===n?\"spot\"!==t.type&&\"directional\"!==t.type||(i.target=s.defaultTarget):n.hasLoaded?s.onSetTarget(n,i):n.addEventListener(\"loaded\",c(s.onSetTarget,s,n,i));break;case\"envMap\":s.updateProbeMap(t,i);break;case\"castShadow\":case\"shadowBias\":case\"shadowCameraFar\":case\"shadowCameraFov\":case\"shadowCameraNear\":case\"shadowCameraTop\":case\"shadowCameraRight\":case\"shadowCameraBottom\":case\"shadowCameraLeft\":case\"shadowCameraVisible\":case\"shadowMapHeight\":case\"shadowMapWidth\":case\"shadowRadius\":o||(s.updateShadow(),o=!0);break;case\"shadowCameraAutomatic\":t.shadowCameraAutomatic?s.shadowCameraAutomaticEls=Array.from(document.querySelectorAll(t.shadowCameraAutomatic)):s.shadowCameraAutomaticEls=[];break;default:i[e]=n}}))}},tick:(i=new A.Box3,r=new A.Vector3,s=new A.Vector3,o=new A.Matrix4,a=new A.Sphere,l=new A.Vector3,function(){if(\"directional\"===this.data.type&&this.light.shadow&&this.light.shadow.camera instanceof A.OrthographicCamera&&this.shadowCameraAutomaticEls.length){var e=this.light.shadow.camera;e.getWorldDirection(r),e.getWorldPosition(s),o.copy(e.matrixWorld),o.invert(),e.near=1,e.left=1e5,e.right=-1e5,e.top=-1e5,e.bottom=1e5,this.shadowCameraAutomaticEls.forEach((function(t){i.setFromObject(t.object3D),i.getBoundingSphere(a);var n=f.distanceOfPointFromPlane(s,r,a.center),c=f.nearestPointInPlane(s,r,a.center,l).applyMatrix4(o);e.near=Math.min(-n-a.radius-1,e.near),e.left=Math.min(-a.radius+c.x,e.left),e.right=Math.max(a.radius+c.x,e.right),e.top=Math.max(a.radius+c.y,e.top),e.bottom=Math.min(-a.radius+c.y,e.bottom)})),e.updateProjectionMatrix()}}),setLight:function(e){var t=this.el,n=this.getLight(e);n&&(this.light&&t.removeObject3D(\"light\"),this.light=n,this.light.el=t,t.setObject3D(\"light\",this.light),\"spot\"!==e.type&&\"directional\"!==e.type&&\"hemisphere\"!==e.type||t.getObject3D(\"light\").translateY(-1),\"spot\"===e.type&&(t.setObject3D(\"light-target\",this.defaultTarget),t.getObject3D(\"light-target\").position.set(0,0,-1)),e.shadowCameraAutomatic?this.shadowCameraAutomaticEls=Array.from(document.querySelectorAll(e.shadowCameraAutomatic)):this.shadowCameraAutomaticEls=[])},updateShadow:function(){var e=this.el,t=this.data,n=this.light;n.castShadow=t.castShadow;var i=e.getObject3D(\"cameraHelper\");if(t.shadowCameraVisible&&!i?e.setObject3D(\"cameraHelper\",new A.CameraHelper(n.shadow.camera)):!t.shadowCameraVisible&&i&&e.removeObject3D(\"cameraHelper\"),!t.castShadow)return n;n.shadow.bias=t.shadowBias,n.shadow.radius=t.shadowRadius,n.shadow.mapSize.height=t.shadowMapHeight,n.shadow.mapSize.width=t.shadowMapWidth,n.shadow.camera.near=t.shadowCameraNear,n.shadow.camera.far=t.shadowCameraFar,n.shadow.camera instanceof A.OrthographicCamera?(n.shadow.camera.top=t.shadowCameraTop,n.shadow.camera.right=t.shadowCameraRight,n.shadow.camera.bottom=t.shadowCameraBottom,n.shadow.camera.left=t.shadowCameraLeft):n.shadow.camera.fov=t.shadowCameraFov,n.shadow.camera.updateProjectionMatrix(),i&&i.update()},getLight:function(e){var t=e.angle,n=new A.Color(e.color);this.rendererSystem.applyColorCorrection(n),n=n.getHex();var i=e.decay,r=e.distance,s=new A.Color(e.groundColor);this.rendererSystem.applyColorCorrection(s),s=s.getHex();var o=e.intensity,a=e.type,l=e.target,h=null;switch(a.toLowerCase()){case\"ambient\":return new A.AmbientLight(n,o);case\"directional\":return h=new A.DirectionalLight(n,o),this.defaultTarget=h.target,l&&(l.hasLoaded?this.onSetTarget(l,h):l.addEventListener(\"loaded\",c(this.onSetTarget,this,l,h))),h;case\"hemisphere\":return new A.HemisphereLight(n,s,o);case\"point\":return new A.PointLight(n,o,r,i);case\"spot\":return h=new A.SpotLight(n,o,r,m(t),e.penumbra,i),this.defaultTarget=h.target,l&&(l.hasLoaded?this.onSetTarget(l,h):l.addEventListener(\"loaded\",c(this.onSetTarget,this,l,h))),h;case\"probe\":return h=new A.LightProbe,this.updateProbeMap(e,h),h;default:g(\"%s is not a valid light type. Choose from ambient, directional, hemisphere, point, spot.\",a)}},updateProbeMap:function(e,t){e.envMap||t.copy(new A.LightProbe),y[e.envMap]instanceof window.Promise&&y[e.envMap].then((function(e){t.copy(e)})),y[e.envMap]instanceof A.LightProbe&&t.copy(y[e.envMap]),y[e.envMap]=new window.Promise((function(n){h.srcLoader.validateCubemapSrc(e.envMap,(function(n){v.load(n,(function(n){var i=A.LightProbeGenerator.fromCubeTexture(n);y[e.envMap]=i,t.copy(i)}))}))}))},onSetTarget:function(e,t){t.target=e.object3D},remove:function(){var e=this.el;e.removeObject3D(\"light\"),e.getObject3D(\"cameraHelper\")&&e.removeObject3D(\"cameraHelper\")}})},9234:(e,t,n)=>{var i=n(3515).registerComponent;function r(e,t){return!(!e||!t)&&e.x===t.x&&e.y===t.y&&e.z===t.z}e.exports.Component=i(\"line\",{schema:{start:{type:\"vec3\",default:{x:0,y:0,z:0}},end:{type:\"vec3\",default:{x:0,y:0,z:0}},color:{type:\"color\",default:\"#74BEC1\"},opacity:{type:\"number\",default:1},visible:{default:!0}},multiple:!0,init:function(){var e,t,n=this.data;this.rendererSystem=this.el.sceneEl.systems.renderer,t=this.material=new THREE.LineBasicMaterial({color:n.color,opacity:n.opacity,transparent:n.opacity\u003C1,visible:n.visible}),(e=this.geometry=new THREE.BufferGeometry).setAttribute(\"position\",new THREE.BufferAttribute(new Float32Array(6),3)),this.rendererSystem.applyColorCorrection(t.color),this.line=new THREE.Line(e,t),this.el.setObject3D(this.attrName,this.line)},update:function(e){var t=this.data,n=this.geometry,i=!1,s=this.material,o=n.attributes.position.array;r(t.start,e.start)||(o[0]=t.start.x,o[1]=t.start.y,o[2]=t.start.z,i=!0),r(t.end,e.end)||(o[3]=t.end.x,o[4]=t.end.y,o[5]=t.end.z,i=!0),i&&(n.attributes.position.needsUpdate=!0,n.computeBoundingSphere()),s.color.setStyle(t.color),this.rendererSystem.applyColorCorrection(s.color),s.opacity=t.opacity,s.transparent=t.opacity\u003C1,s.visible=t.visible},remove:function(){this.el.removeObject3D(this.attrName,this.line)}})},109:(e,t,n)=>{var i,r,s,o,a,l,c,h,u=n(3515).registerComponent,d=n(9644).registerShader,p=n(2666);e.exports.Component=u(\"link\",{schema:{backgroundColor:{default:\"red\",type:\"color\"},borderColor:{default:\"white\",type:\"color\"},highlighted:{default:!1},highlightedColor:{default:\"#24CAFF\",type:\"color\"},href:{default:\"\"},image:{type:\"asset\"},on:{default:\"click\"},peekMode:{default:!1},title:{default:\"\"},titleColor:{default:\"white\",type:\"color\"},visualAspectEnabled:{default:!1}},init:function(){this.navigate=this.navigate.bind(this),this.previousQuaternion=void 0,this.quaternionClone=new p.Quaternion,this.hiddenEls=[]},update:function(e){var t,n,i=this.data,r=this.el;i.visualAspectEnabled&&(this.initVisualAspect(),t=i.highlighted?i.highlightedColor:i.backgroundColor,n=i.highlighted?i.highlightedColor:i.borderColor,r.setAttribute(\"material\",\"backgroundColor\",t),r.setAttribute(\"material\",\"strokeColor\",n),i.on!==e.on&&this.updateEventListener(),void 0!==e.peekMode&&i.peekMode!==e.peekMode&&this.updatePeekMode(),i.image&&e.image!==i.image&&r.setAttribute(\"material\",\"pano\",\"string\"==typeof i.image?i.image:i.image.src))},updatePeekMode:function(){var e=this.el,t=this.sphereEl;this.data.peekMode?(this.hideAll(),e.getObject3D(\"mesh\").visible=!1,t.setAttribute(\"visible\",!0)):(this.showAll(),e.getObject3D(\"mesh\").visible=!0,t.setAttribute(\"visible\",!1))},play:function(){this.updateEventListener()},pause:function(){this.removeEventListener()},updateEventListener:function(){var e=this.el;e.isPlaying&&(this.removeEventListener(),e.addEventListener(this.data.on,this.navigate))},removeEventListener:function(){var e=this.data.on;e&&this.el.removeEventListener(e,this.navigate)},initVisualAspect:function(){var e,t,n,i=this.el;this.data.visualAspectEnabled&&!this.visualAspectInitialized&&(n=this.textEl=this.textEl||document.createElement(\"a-entity\"),t=this.sphereEl=this.sphereEl||document.createElement(\"a-entity\"),e=this.semiSphereEl=this.semiSphereEl||document.createElement(\"a-entity\"),i.setAttribute(\"geometry\",{primitive:\"circle\",radius:1,segments:64}),i.setAttribute(\"material\",{shader:\"portal\",pano:this.data.image,side:\"double\"}),n.setAttribute(\"text\",{color:this.data.titleColor,align:\"center\",font:\"kelsonsans\",value:this.data.title||this.data.href,width:4}),n.setAttribute(\"position\",\"0 1.5 0\"),i.appendChild(n),e.setAttribute(\"geometry\",{primitive:\"sphere\",radius:1,phiStart:0,segmentsWidth:64,segmentsHeight:64,phiLength:180,thetaStart:0,thetaLength:360}),e.setAttribute(\"material\",{shader:\"portal\",borderEnabled:0,pano:this.data.image,side:\"back\"}),e.setAttribute(\"rotation\",\"0 180 0\"),e.setAttribute(\"position\",\"0 0 0\"),e.setAttribute(\"visible\",!1),i.appendChild(e),t.setAttribute(\"geometry\",{primitive:\"sphere\",radius:10,segmentsWidth:64,segmentsHeight:64}),t.setAttribute(\"material\",{shader:\"portal\",borderEnabled:0,pano:this.data.image,side:\"back\"}),t.setAttribute(\"visible\",!1),i.appendChild(t),this.visualAspectInitialized=!0)},navigate:function(){window.location=this.data.href},tick:(a=new p.Vector3,l=new p.Vector3,c=new p.Quaternion,h=new p.Vector3,function(){var e,t,n=this.el,i=n.object3D,r=n.sceneEl.camera,s=this.textEl;if(this.data.visualAspectEnabled)if(i.updateMatrixWorld(),r.parent.updateMatrixWorld(),r.updateMatrixWorld(),i.matrix.decompose(l,c,h),l.setFromMatrixPosition(i.matrixWorld),a.setFromMatrixPosition(r.matrixWorld),(t=l.distanceTo(a))>20)this.previousQuaternion||(this.quaternionClone.copy(c),this.previousQuaternion=this.quaternionClone),i.lookAt(a);else{if(e=this.calculateCameraPortalOrientation(),t\u003C.5){if(!0===this.semiSphereEl.getAttribute(\"visible\"))return;s.setAttribute(\"text\",\"width\",1.5),e\u003C=0?(s.setAttribute(\"position\",\"0 0 0.75\"),s.setAttribute(\"rotation\",\"0 180 0\"),this.semiSphereEl.setAttribute(\"rotation\",\"0 0 0\")):(s.setAttribute(\"position\",\"0 0 -0.75\"),s.setAttribute(\"rotation\",\"0 0 0\"),this.semiSphereEl.setAttribute(\"rotation\",\"0 180 0\")),n.getObject3D(\"mesh\").visible=!1,this.semiSphereEl.setAttribute(\"visible\",!0),this.peekCameraPortalOrientation=e}else e\u003C=0?s.setAttribute(\"rotation\",\"0 180 0\"):s.setAttribute(\"rotation\",\"0 0 0\"),s.setAttribute(\"text\",\"width\",5),s.setAttribute(\"position\",\"0 1.5 0\"),n.getObject3D(\"mesh\").visible=!0,this.semiSphereEl.setAttribute(\"visible\",!1),this.peekCameraPortalOrientation=void 0;this.previousQuaternion&&(i.quaternion.copy(this.previousQuaternion),this.previousQuaternion=void 0)}}),hideAll:function(){var e=this.el,t=this.hiddenEls,n=this;t.length>0||e.sceneEl.object3D.traverse((function(i){i&&i.el&&i.el.hasAttribute(\"link-controls\")||i.el&&i!==e.sceneEl.object3D&&i.el!==e&&i.el!==n.sphereEl&&i.el!==e.sceneEl.cameraEl&&!1!==i.el.getAttribute(\"visible\")&&i.el!==n.textEl&&i.el!==n.semiSphereEl&&(i.el.setAttribute(\"visible\",!1),t.push(i.el))}))},showAll:function(){this.hiddenEls.forEach((function(e){e.setAttribute(\"visible\",!0)})),this.hiddenEls=[]},calculateCameraPortalOrientation:(i=new p.Matrix4,r=new p.Vector3,s=new p.Vector3(0,0,1),o=new p.Vector3(0,0,0),function(){var e=this.el,t=e.sceneEl.camera;return r.set(0,0,0),s.set(0,0,1),o.set(0,0,0),e.object3D.matrixWorld.extractRotation(i),s.applyMatrix4(i),e.object3D.updateMatrixWorld(),e.object3D.localToWorld(o),t.parent.parent.updateMatrixWorld(),t.parent.updateMatrixWorld(),t.updateMatrixWorld(),t.localToWorld(r),r.sub(o).normalize(),s.normalize(),Math.sign(s.dot(r))}),remove:function(){this.removeEventListener()}}),d(\"portal\",{schema:{borderEnabled:{default:1,type:\"int\",is:\"uniform\"},backgroundColor:{default:\"red\",type:\"color\",is:\"uniform\"},pano:{type:\"map\",is:\"uniform\"},strokeColor:{default:\"white\",type:\"color\",is:\"uniform\"}},vertexShader:[\"vec3 portalPosition;\",\"varying vec3 vWorldPosition;\",\"varying float vDistanceToCenter;\",\"varying float vDistance;\",\"void main() {\",\"vDistanceToCenter = clamp(length(position - vec3(0.0, 0.0, 0.0)), 0.0, 1.0);\",\"portalPosition = (modelMatrix * vec4(0.0, 0.0, 0.0, 1.0)).xyz;\",\"vDistance = length(portalPosition - cameraPosition);\",\"vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;\",\"gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\",\"}\"].join(\"\\n\"),fragmentShader:[\"#define RECIPROCAL_PI2 0.15915494\",\"uniform sampler2D pano;\",\"uniform vec3 strokeColor;\",\"uniform vec3 backgroundColor;\",\"uniform float borderEnabled;\",\"varying float vDistanceToCenter;\",\"varying float vDistance;\",\"varying vec3 vWorldPosition;\",\"void main() {\",\"vec3 direction = normalize(vWorldPosition - cameraPosition);\",\"vec2 sampleUV;\",\"float borderThickness = clamp(exp(-vDistance / 50.0), 0.6, 0.95);\",\"sampleUV.y = clamp(direction.y * 0.5 + 0.5, 0.0, 1.0);\",\"sampleUV.x = atan(direction.z, -direction.x) * -RECIPROCAL_PI2 + 0.5;\",\"if (vDistanceToCenter > borderThickness && borderEnabled == 1.0) {\",\"gl_FragColor = vec4(strokeColor, 1.0);\",\"} else {\",\"gl_FragColor = mix(texture2D(pano, sampleUV), vec4(backgroundColor, 1.0), clamp(pow((vDistance / 15.0), 2.0), 0.0, 1.0));\",\"}\",\"}\"].join(\"\\n\")})},7479:(e,t,n)=>{var i=n(3515).registerComponent,r=n(2666),s=n(8903),o=s.bind,a=Math.PI/2;e.exports.Component=i(\"look-controls\",{dependencies:[\"position\",\"rotation\"],schema:{enabled:{default:!0},magicWindowTrackingEnabled:{default:!0},pointerLockEnabled:{default:!1},reverseMouseDrag:{default:!1},reverseTouchDrag:{default:!1},touchEnabled:{default:!0},mouseEnabled:{default:!0}},init:function(){this.deltaYaw=0,this.previousHMDPosition=new r.Vector3,this.hmdQuaternion=new r.Quaternion,this.magicWindowAbsoluteEuler=new r.Euler,this.magicWindowDeltaEuler=new r.Euler,this.position=new r.Vector3,this.magicWindowObject=new r.Object3D,this.rotation={},this.deltaRotation={},this.savedPose=null,this.pointerLocked=!1,this.setupMouseControls(),this.bindMethods(),this.previousMouseEvent={},this.setupMagicWindowControls(),this.savedPose={position:new r.Vector3,rotation:new r.Euler},(this.el.sceneEl.is(\"vr-mode\")||this.el.sceneEl.is(\"ar-mode\"))&&this.onEnterVR()},setupMagicWindowControls:function(){var e,t=this.data;(s.device.isMobile()||s.device.isMobileDeviceRequestingDesktopSite())&&(e=this.magicWindowControls=new r.DeviceOrientationControls(this.magicWindowObject),\"undefined\"!=typeof DeviceOrientationEvent&&DeviceOrientationEvent.requestPermission&&(e.enabled=!1,this.el.sceneEl.components[\"device-orientation-permission-ui\"].permissionGranted?e.enabled=t.magicWindowTrackingEnabled:this.el.sceneEl.addEventListener(\"deviceorientationpermissiongranted\",(function(){e.enabled=t.magicWindowTrackingEnabled}))))},update:function(e){var t=this.data;t.enabled!==e.enabled&&this.updateGrabCursor(t.enabled),e&&!t.magicWindowTrackingEnabled&&e.magicWindowTrackingEnabled&&(this.magicWindowAbsoluteEuler.set(0,0,0),this.magicWindowDeltaEuler.set(0,0,0)),this.magicWindowControls&&(this.magicWindowControls.enabled=t.magicWindowTrackingEnabled),e&&!t.pointerLockEnabled!==e.pointerLockEnabled&&(this.removeEventListeners(),this.addEventListeners(),this.pointerLocked&&this.exitPointerLock())},tick:function(e){this.data.enabled&&this.updateOrientation()},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners(),this.pointerLocked&&this.exitPointerLock()},remove:function(){this.removeEventListeners(),this.pointerLocked&&this.exitPointerLock()},bindMethods:function(){this.onMouseDown=o(this.onMouseDown,this),this.onMouseMove=o(this.onMouseMove,this),this.onMouseUp=o(this.onMouseUp,this),this.onTouchStart=o(this.onTouchStart,this),this.onTouchMove=o(this.onTouchMove,this),this.onTouchEnd=o(this.onTouchEnd,this),this.onEnterVR=o(this.onEnterVR,this),this.onExitVR=o(this.onExitVR,this),this.onPointerLockChange=o(this.onPointerLockChange,this),this.onPointerLockError=o(this.onPointerLockError,this)},setupMouseControls:function(){this.mouseDown=!1,this.pitchObject=new r.Object3D,this.yawObject=new r.Object3D,this.yawObject.position.y=10,this.yawObject.add(this.pitchObject)},addEventListeners:function(){var e=this.el.sceneEl,t=e.canvas;t?(t.addEventListener(\"mousedown\",this.onMouseDown,!1),window.addEventListener(\"mousemove\",this.onMouseMove,!1),window.addEventListener(\"mouseup\",this.onMouseUp,!1),t.addEventListener(\"touchstart\",this.onTouchStart),window.addEventListener(\"touchmove\",this.onTouchMove),window.addEventListener(\"touchend\",this.onTouchEnd),e.addEventListener(\"enter-vr\",this.onEnterVR),e.addEventListener(\"exit-vr\",this.onExitVR),this.data.pointerLockEnabled&&(document.addEventListener(\"pointerlockchange\",this.onPointerLockChange,!1),document.addEventListener(\"mozpointerlockchange\",this.onPointerLockChange,!1),document.addEventListener(\"pointerlockerror\",this.onPointerLockError,!1))):e.addEventListener(\"render-target-loaded\",o(this.addEventListeners,this))},removeEventListeners:function(){var e=this.el.sceneEl,t=e&&e.canvas;t&&(t.removeEventListener(\"mousedown\",this.onMouseDown),window.removeEventListener(\"mousemove\",this.onMouseMove),window.removeEventListener(\"mouseup\",this.onMouseUp),t.removeEventListener(\"touchstart\",this.onTouchStart),window.removeEventListener(\"touchmove\",this.onTouchMove),window.removeEventListener(\"touchend\",this.onTouchEnd),e.removeEventListener(\"enter-vr\",this.onEnterVR),e.removeEventListener(\"exit-vr\",this.onExitVR),document.removeEventListener(\"pointerlockchange\",this.onPointerLockChange,!1),document.removeEventListener(\"mozpointerlockchange\",this.onPointerLockChange,!1),document.removeEventListener(\"pointerlockerror\",this.onPointerLockError,!1))},updateOrientation:function(){var e=this.el.object3D,t=this.pitchObject,n=this.yawObject,i=this.el.sceneEl;(i.is(\"vr-mode\")||i.is(\"ar-mode\"))&&i.checkHeadsetConnected()||(this.updateMagicWindowOrientation(),e.rotation.x=this.magicWindowDeltaEuler.x+t.rotation.x,e.rotation.y=this.magicWindowDeltaEuler.y+n.rotation.y,e.rotation.z=this.magicWindowDeltaEuler.z)},updateMagicWindowOrientation:function(){var e=this.magicWindowAbsoluteEuler,t=this.magicWindowDeltaEuler;this.magicWindowControls&&this.magicWindowControls.enabled&&(this.magicWindowControls.update(),e.setFromQuaternion(this.magicWindowObject.quaternion,\"YXZ\"),this.previousMagicWindowYaw||0===e.y||(this.previousMagicWindowYaw=e.y),this.previousMagicWindowYaw&&(t.x=e.x,t.y+=e.y-this.previousMagicWindowYaw,t.z=e.z,this.previousMagicWindowYaw=e.y))},onMouseMove:function(e){var t,n,i,r=this.pitchObject,s=this.previousMouseEvent,o=this.yawObject;this.data.enabled&&(this.mouseDown||this.pointerLocked)&&(this.pointerLocked?(n=e.movementX||e.mozMovementX||0,i=e.movementY||e.mozMovementY||0):(n=e.screenX-s.screenX,i=e.screenY-s.screenY),this.previousMouseEvent.screenX=e.screenX,this.previousMouseEvent.screenY=e.screenY,t=this.data.reverseMouseDrag?1:-1,o.rotation.y+=.002*n*t,r.rotation.x+=.002*i*t,r.rotation.x=Math.max(-a,Math.min(a,r.rotation.x)))},onMouseDown:function(e){var t=this.el.sceneEl;if(this.data.enabled&&this.data.mouseEnabled&&(!t.is(\"vr-mode\")&&!t.is(\"ar-mode\")||!t.checkHeadsetConnected())&&0===e.button){var n=t&&t.canvas;this.mouseDown=!0,this.previousMouseEvent.screenX=e.screenX,this.previousMouseEvent.screenY=e.screenY,this.showGrabbingCursor(),this.data.pointerLockEnabled&&!this.pointerLocked&&(n.requestPointerLock?n.requestPointerLock():n.mozRequestPointerLock&&n.mozRequestPointerLock())}},showGrabbingCursor:function(){this.el.sceneEl.canvas.style.cursor=\"grabbing\"},hideGrabbingCursor:function(){this.el.sceneEl.canvas.style.cursor=\"\"},onMouseUp:function(){this.mouseDown=!1,this.hideGrabbingCursor()},onTouchStart:function(e){1!==e.touches.length||!this.data.touchEnabled||this.el.sceneEl.is(\"vr-mode\")||this.el.sceneEl.is(\"ar-mode\")||(this.touchStart={x:e.touches[0].pageX,y:e.touches[0].pageY},this.touchStarted=!0)},onTouchMove:function(e){var t,n,i=this.el.sceneEl.canvas,r=this.yawObject;this.touchStarted&&this.data.touchEnabled&&(n=2*Math.PI*(e.touches[0].pageX-this.touchStart.x)/i.clientWidth,t=this.data.reverseTouchDrag?1:-1,r.rotation.y-=.5*n*t,this.touchStart={x:e.touches[0].pageX,y:e.touches[0].pageY})},onTouchEnd:function(){this.touchStarted=!1},onEnterVR:function(){var e=this.el.sceneEl;e.checkHeadsetConnected()&&(this.saveCameraPose(),this.el.object3D.position.set(0,0,0),this.el.object3D.rotation.set(0,0,0),e.hasWebXR&&(this.el.object3D.matrixAutoUpdate=!1,this.el.object3D.updateMatrix()))},onExitVR:function(){this.el.sceneEl.checkHeadsetConnected()&&(this.restoreCameraPose(),this.previousHMDPosition.set(0,0,0),this.el.object3D.matrixAutoUpdate=!0)},onPointerLockChange:function(){this.pointerLocked=!(!document.pointerLockElement&&!document.mozPointerLockElement)},onPointerLockError:function(){this.pointerLocked=!1},exitPointerLock:function(){document.exitPointerLock(),this.pointerLocked=!1},updateGrabCursor:function(e){var t=this.el.sceneEl;function n(){t.canvas.classList.add(\"a-grab-cursor\")}function i(){t.canvas.classList.remove(\"a-grab-cursor\")}t.canvas?e?n():i():e?t.addEventListener(\"render-target-loaded\",n):t.addEventListener(\"render-target-loaded\",i)},saveCameraPose:function(){var e=this.el;this.savedPose.position.copy(e.object3D.position),this.savedPose.rotation.copy(e.object3D.rotation),this.hasSavedPose=!0},restoreCameraPose:function(){var e=this.el,t=this.savedPose;this.hasSavedPose&&(e.object3D.position.copy(t.position),e.object3D.rotation.copy(t.rotation),this.hasSavedPose=!1)}})},240:(e,t,n)=>{var i=n(7629),r=n(3515).registerComponent,s=n(6600),o=s.checkControllerPresentAndSetup,a=s.emitIfAxesChanged,l=s.onButtonEvent,c=\"magicleap-one\";e.exports.Component=r(\"magicleap-controls\",{schema:{hand:{default:\"none\"},model:{default:!0},orientationOffset:{type:\"vec3\"}},mapping:{axes:{touchpad:[0,1]},buttons:[\"trigger\",\"grip\",\"touchpad\",\"menu\"]},init:function(){var e=this;this.controllerPresent=!1,this.lastControllerCheck=0,this.onButtonChanged=i(this.onButtonChanged,this),this.onButtonDown=function(t){l(t.detail.id,\"down\",e)},this.onButtonUp=function(t){l(t.detail.id,\"up\",e)},this.onButtonTouchEnd=function(t){l(t.detail.id,\"touchend\",e)},this.onButtonTouchStart=function(t){l(t.detail.id,\"touchstart\",e)},this.previousButtonValues={},this.rendererSystem=this.el.sceneEl.systems.renderer,this.bindMethods()},update:function(){var e=this.data;this.controllerIndex=\"right\"===e.hand?0:\"left\"===e.hand?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=i(this.onModelLoaded,this),this.onControllersUpdate=i(this.onControllersUpdate,this),this.checkIfControllerPresent=i(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=i(this.removeControllersUpdateListener,this),this.onAxisMoved=i(this.onAxisMoved,this)},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"axismove\",this.onAxisMoved),e.addEventListener(\"model-loaded\",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"axismove\",this.onAxisMoved),e.removeEventListener(\"model-loaded\",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var e=this.data;o(this,c,{index:this.controllerIndex,hand:e.hand})},injectTrackedControls:function(){var e=this.el,t=this.data;e.setAttribute(\"tracked-controls\",{idPrefix:c,hand:t.hand,controller:this.controllerIndex,orientationOffset:t.orientationOffset}),this.data.model&&this.el.setAttribute(\"gltf-model\",\"https://cdn.aframe.io/controllers/magicleap/magicleap-one-controller.glb\")},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(e){var t,n=this.mapping.buttons[e.detail.id];n&&(\"trigger\"===n&&(t=e.detail.state.value,console.log(\"analog value of trigger press: \"+t)),this.el.emit(n+\"changed\",e.detail.state))},onModelLoaded:function(e){e.detail.model.scale.set(.01,.01,.01)},onAxisMoved:function(e){a(this,this.mapping.axes,e)},updateModel:function(e,t){},setButtonColor:function(e,t){}})},9115:(e,t,n)=>{var i=n(8903),r=n(3515),s=n(2666),o=n(9644),a=i.debug(\"components:material:error\"),l=r.registerComponent,c=o.shaders,h=o.shaderNames;function u(e,t){e.dispose(),t.unregisterMaterial(e)}e.exports.Component=l(\"material\",{schema:{alphaTest:{default:0,min:0,max:1},depthTest:{default:!0},depthWrite:{default:!0},flatShading:{default:!1},npot:{default:!1},offset:{type:\"vec2\",default:{x:0,y:0}},opacity:{default:1,min:0,max:1},repeat:{type:\"vec2\",default:{x:1,y:1}},shader:{default:\"standard\",oneOf:h,schemaChange:!0},side:{default:\"front\",oneOf:[\"front\",\"back\",\"double\"]},transparent:{default:!1},vertexColors:{type:\"string\",default:\"none\",oneOf:[\"face\",\"vertex\"]},visible:{default:!0},blending:{default:\"normal\",oneOf:[\"none\",\"normal\",\"additive\",\"subtractive\",\"multiply\"]},dithering:{default:!0}},init:function(){this.material=null},update:function(e){var t=this.data;this.shader&&t.shader===e.shader||this.updateShader(t.shader),this.shader.update(this.data),this.updateMaterial(e)},updateSchema:function(e){var t,n,i,r;n=e&&e.shader,t=this.oldData&&this.oldData.shader,(i=c[r=n||t]&&c[r].schema)||a(\"Unknown shader schema \"+r),t&&n===t||(this.extendSchema(i),this.updateBehavior())},updateBehavior:function(){var e,t,n=this.el.sceneEl,i=this.schema,r=this;function s(e,n){var i;for(i in t)t[i]=e;r.shader.update(t)}for(e in this.tick=void 0,t={},i)\"time\"===i[e].type&&(this.tick=s,t[e]=!0);n&&(this.tick?n.addBehavior(this):n.removeBehavior(this))},updateShader:function(e){var t,n=this.data,i=c[e]&&c[e].Shader;if(!i)throw new Error(\"Unknown shader \"+e);(t=this.shader=new i).el=this.el,t.init(n),this.setMaterial(t.material),this.updateSchema(n)},updateMaterial:function(e){var t,n=this.data,i=this.material;for(t in i.alphaTest=n.alphaTest,i.depthTest=!1!==n.depthTest,i.depthWrite=!1!==n.depthWrite,i.opacity=n.opacity,i.flatShading=n.flatShading,i.side=function(e){switch(e){case\"back\":return s.BackSide;case\"double\":return s.DoubleSide;default:return s.FrontSide}}(n.side),i.transparent=!1!==n.transparent||n.opacity\u003C1,i.vertexColors=function(e){switch(e){case\"face\":return s.FaceColors;case\"vertex\":return s.VertexColors;default:return s.NoColors}}(n.vertexColors),i.visible=n.visible,i.blending=function(e){switch(e){case\"none\":return s.NoBlending;case\"additive\":return s.AdditiveBlending;case\"subtractive\":return s.SubtractiveBlending;case\"multiply\":return s.MultiplyBlending;default:return s.NormalBlending}}(n.blending),i.dithering=n.dithering,e)break;!t||e.alphaTest===n.alphaTest&&e.side===n.side&&e.vertexColors===n.vertexColors||(i.needsUpdate=!0)},remove:function(){var e=new s.MeshBasicMaterial,t=this.material,n=this.el.getObject3D(\"mesh\");n&&(n.material=e),u(t,this.system)},setMaterial:function(e){var t,n=this.el,i=this.system;this.material&&u(this.material,i),this.material=e,i.registerMaterial(e),(t=n.getObject3D(\"mesh\"))?t.material=e:n.addEventListener(\"object3dset\",(function t(i){\"mesh\"===i.detail.type&&i.target===n&&(n.getObject3D(\"mesh\").material=e,n.removeEventListener(\"object3dset\",t))}))}})},4269:(e,t,n)=>{var i=n(4219),r=n(3515).registerComponent,s=n(2666),o=i(\"components:obj-model:warn\");e.exports.Component=r(\"obj-model\",{schema:{mtl:{type:\"model\"},obj:{type:\"model\"}},init:function(){var e=this;this.model=null,this.objLoader=new s.OBJLoader,this.mtlLoader=new s.MTLLoader(this.objLoader.manager),this.mtlLoader.crossOrigin=\"\",this.el.addEventListener(\"componentinitialized\",(function(t){e.model&&\"material\"===t.detail.name&&e.applyMaterial()}))},update:function(){var e=this.data;e.obj&&(this.resetMesh(),this.loadObj(e.obj,e.mtl))},remove:function(){this.model&&this.resetMesh()},resetMesh:function(){this.el.removeObject3D(\"mesh\")},loadObj:function(e,t){var n=this,i=this.el,r=this.mtlLoader,s=this.objLoader,a=this.el.sceneEl.systems.renderer,l=t.substr(0,t.lastIndexOf(\"/\")+1);if(t)return i.hasAttribute(\"material\")&&o(\"Material component properties are ignored when a .MTL is provided\"),r.setResourcePath(l),void r.load(t,(function(t){t.preload(),s.setMaterials(t),s.load(e,(function(e){n.model=e,n.model.traverse((function(e){if(e.isMesh){var t=e.material;t.color&&a.applyColorCorrection(t.color),t.map&&a.applyColorCorrection(t.map),t.emissive&&a.applyColorCorrection(t.emissive),t.emissiveMap&&a.applyColorCorrection(t.emissiveMap)}})),i.setObject3D(\"mesh\",e),i.emit(\"model-loaded\",{format:\"obj\",model:e})}))}));s.load(e,(function(e){n.model=e,n.applyMaterial(),i.setObject3D(\"mesh\",e),i.emit(\"model-loaded\",{format:\"obj\",model:e})}))},applyMaterial:function(){var e=this.el.components.material;e&&this.model.traverse((function(t){t instanceof s.Mesh&&(t.material=e.material)}))}})},9536:(e,t,n)=>{var i=n(3515).registerComponent,r=n(7629),s=n(6600),o=s.checkControllerPresentAndSetup,a=s.emitIfAxesChanged,l=s.onButtonEvent,c=n(8903).device.isWebXRAvailable,h=c?\"oculus-go\":\"Oculus Go\",u=c?{axes:{touchpad:[0,1]},buttons:[\"trigger\",\"none\",\"touchpad\"]}:{axes:{trackpad:[0,1]},buttons:[\"trackpad\",\"trigger\"]};e.exports.Component=i(\"oculus-go-controls\",{schema:{hand:{default:\"\"},buttonColor:{type:\"color\",default:\"#FFFFFF\"},buttonTouchedColor:{type:\"color\",default:\"#BBBBBB\"},buttonHighlightColor:{type:\"color\",default:\"#7A7A7A\"},model:{default:!0},orientationOffset:{type:\"vec3\"},armModel:{default:!0}},mapping:u,bindMethods:function(){this.onModelLoaded=r(this.onModelLoaded,this),this.onControllersUpdate=r(this.onControllersUpdate,this),this.checkIfControllerPresent=r(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=r(this.removeControllersUpdateListener,this),this.onAxisMoved=r(this.onAxisMoved,this)},init:function(){var e=this;this.onButtonChanged=r(this.onButtonChanged,this),this.onButtonDown=function(t){l(t.detail.id,\"down\",e)},this.onButtonUp=function(t){l(t.detail.id,\"up\",e)},this.onButtonTouchStart=function(t){l(t.detail.id,\"touchstart\",e)},this.onButtonTouchEnd=function(t){l(t.detail.id,\"touchend\",e)},this.controllerPresent=!1,this.lastControllerCheck=0,this.rendererSystem=this.el.sceneEl.systems.renderer,this.bindMethods()},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"model-loaded\",this.onModelLoaded),e.addEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"model-loaded\",this.onModelLoaded),e.removeEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){o(this,h,this.data.hand?{hand:this.data.hand}:{})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var e=this.el,t=this.data;e.setAttribute(\"tracked-controls\",{armModel:t.armModel,hand:t.hand,idPrefix:h,orientationOffset:t.orientationOffset}),this.data.model&&this.el.setAttribute(\"gltf-model\",\"https://cdn.aframe.io/controllers/oculus/go/oculus-go-controller.gltf\")},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelLoaded:function(e){var t,n=e.detail.model;this.data.model&&((t=this.buttonMeshes={}).trigger=n.getObjectByName(\"oculus_go_button_trigger\"),t.trackpad=n.getObjectByName(\"oculus_go_touchpad\"),t.touchpad=n.getObjectByName(\"oculus_go_touchpad\"))},onButtonChanged:function(e){var t=this.mapping.buttons[e.detail.id];t&&this.el.emit(t+\"changed\",e.detail.state)},onAxisMoved:function(e){a(this,this.mapping.axes,e)},updateModel:function(e,t){this.data.model&&this.updateButtonModel(e,t)},updateButtonModel:function(e,t){var n=this.buttonMeshes;if(n&&n[e]){var i,r;switch(t){case\"down\":i=this.data.buttonHighlightColor;break;case\"touchstart\":i=this.data.buttonTouchedColor;break;default:i=this.data.buttonColor}(r=n[e]).material.color.set(i),this.rendererSystem.applyColorCorrection(r.material.color)}}})},5569:(e,t,n)=>{var i=n(7629),r=n(3515).registerComponent,s=n(2666),o=n(6600),a=o.checkControllerPresentAndSetup,l=o.emitIfAxesChanged,c=o.onButtonEvent,h=n(8903).device.isWebXRAvailable,u=\"oculus-touch\",d=h?u:\"Oculus Touch\",p=\"https://cdn.aframe.io/controllers/oculus/oculus-touch-controller-\",A=\"https://cdn.aframe.io/controllers/meta/\",f={left:{modelUrl:p+\"left.gltf\",rayOrigin:{origin:{x:.008,y:-.01,z:0},direction:{x:0,y:-.8,z:-1}},modelPivotOffset:new s.Vector3(-.005,.003,-.055),modelPivotRotation:new s.Euler(0,0,0)},right:{modelUrl:p+\"right.gltf\",rayOrigin:{origin:{x:-.008,y:-.01,z:0},direction:{x:0,y:-.8,z:-1}},modelPivotOffset:new s.Vector3(.005,.003,-.055),modelPivotRotation:new s.Euler(0,0,0)}},m={left:{modelUrl:p+\"left.gltf\",rayOrigin:{origin:{x:.002,y:-.005,z:-.03},direction:{x:0,y:-.8,z:-1}},modelPivotOffset:new s.Vector3(-.005,.036,-.037),modelPivotRotation:new s.Euler(Math.PI/4.5,0,0)},right:{modelUrl:p+\"right.gltf\",rayOrigin:{origin:{x:-.002,y:-.005,z:-.03},direction:{x:0,y:-.8,z:-1}},modelPivotOffset:new s.Vector3(.005,.036,-.037),modelPivotRotation:new s.Euler(Math.PI/4.5,0,0)}},g=\"oculus-touch\",v={\"oculus-touch\":h?m:f,\"oculus-touch-v2\":{left:{modelUrl:p+\"gen2-left.gltf\",rayOrigin:{origin:{x:-.006,y:-.03,z:-.04},direction:{x:0,y:-.9,z:-1}},modelPivotOffset:new s.Vector3(0,-.007,-.021),modelPivotRotation:new s.Euler(-Math.PI/4,0,0)},right:{modelUrl:p+\"gen2-right.gltf\",rayOrigin:{origin:{x:.006,y:-.03,z:-.04},direction:{x:0,y:-.9,z:-1}},modelPivotOffset:new s.Vector3(0,-.007,-.021),modelPivotRotation:new s.Euler(-Math.PI/4,0,0)}},\"oculus-touch-v3\":{left:{modelUrl:p+\"v3-left.glb\",rayOrigin:{origin:{x:.0065,y:-.0186,z:-.05},direction:{x:.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)},right:{modelUrl:p+\"v3-right.glb\",rayOrigin:{origin:{x:-.0065,y:-.0186,z:-.05},direction:{x:-.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)}},\"meta-quest-touch-pro\":{left:{modelUrl:A+\"quest-touch-pro-left.glb\",rayOrigin:{origin:{x:.0065,y:-.0186,z:-.05},direction:{x:.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)},right:{modelUrl:A+\"quest-touch-pro-right.glb\",rayOrigin:{origin:{x:-.0065,y:-.0186,z:-.05},direction:{x:-.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)}}},y=h?{left:{axes:{thumbstick:[2,3]},buttons:[\"trigger\",\"grip\",\"none\",\"thumbstick\",\"xbutton\",\"ybutton\",\"surface\"]},right:{axes:{thumbstick:[2,3]},buttons:[\"trigger\",\"grip\",\"none\",\"thumbstick\",\"abutton\",\"bbutton\",\"surface\"]}}:{left:{axes:{thumbstick:[0,1]},buttons:[\"thumbstick\",\"trigger\",\"grip\",\"xbutton\",\"ybutton\",\"surface\"]},right:{axes:{thumbstick:[0,1]},buttons:[\"thumbstick\",\"trigger\",\"grip\",\"abutton\",\"bbutton\",\"surface\"]}};function E(e){e.traverse((function(t){if(\"Mesh\"!==t.type)return;let n=t.material.clone();e.originalColor=t.material.color,t.material.dispose(),t.material=n}))}e.exports.Component=r(\"oculus-touch-controls\",{schema:{hand:{default:\"left\"},buttonColor:{type:\"color\",default:\"#999\"},buttonTouchColor:{type:\"color\",default:\"#8AB\"},buttonHighlightColor:{type:\"color\",default:\"#2DF\"},model:{default:!0},controllerType:{default:\"auto\",oneOf:[\"auto\",\"oculus-touch\",\"oculus-touch-v2\",\"oculus-touch-v3\"]},orientationOffset:{type:\"vec3\",default:{x:43,y:0,z:0}}},mapping:y,bindMethods:function(){this.onButtonChanged=i(this.onButtonChanged,this),this.onThumbstickMoved=i(this.onThumbstickMoved,this),this.onModelLoaded=i(this.onModelLoaded,this),this.onControllersUpdate=i(this.onControllersUpdate,this),this.checkIfControllerPresent=i(this.checkIfControllerPresent,this),this.onAxisMoved=i(this.onAxisMoved,this)},init:function(){var e=this;this.onButtonDown=function(t){c(t.detail.id,\"down\",e,e.data.hand)},this.onButtonUp=function(t){c(t.detail.id,\"up\",e,e.data.hand)},this.onButtonTouchStart=function(t){c(t.detail.id,\"touchstart\",e,e.data.hand)},this.onButtonTouchEnd=function(t){c(t.detail.id,\"touchend\",e,e.data.hand)},this.controllerPresent=!1,this.lastControllerCheck=0,this.previousButtonValues={},this.rendererSystem=this.el.sceneEl.systems.renderer,this.bindMethods(),this.triggerEuler=new s.Euler},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"axismove\",this.onAxisMoved),e.addEventListener(\"model-loaded\",this.onModelLoaded),e.addEventListener(\"thumbstickmoved\",this.onThumbstickMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"axismove\",this.onAxisMoved),e.removeEventListener(\"model-loaded\",this.onModelLoaded),e.removeEventListener(\"thumbstickmoved\",this.onThumbstickMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){a(this,d,{hand:this.data.hand,iterateControllerProfiles:!0})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},loadModel:function(e){var t,n=this.data;if(n.model){if(this.displayModel=v[n.controllerType]||v[g],\"auto\"===n.controllerType){var i=this.el.sceneEl.systems[\"tracked-controls-webvr\"];if(i&&i.vrDisplay){var r=i.vrDisplay.displayName;/^Oculus Quest$/.test(r)&&(this.displayModel=v[\"oculus-touch-v2\"])}else{t=g;for(var s=Object.keys(v),o=0;o\u003Ce.profiles.length;o++)if(-1!==s.indexOf(e.profiles[o])){t=e.profiles[o];break}this.displayModel=v[t]}}var a=this.displayModel[n.hand].modelUrl;this.isOculusTouchV3=this.displayModel===v[\"oculus-touch-v3\"],this.el.setAttribute(\"gltf-model\",a)}},injectTrackedControls:function(e){var t=this.data,n=u,i=\"right\"===t.hand?\"Oculus Touch (Right)\":\"Oculus Touch (Left)\",r=h?n:i;this.el.setAttribute(\"tracked-controls\",{id:r,hand:t.hand,orientationOffset:t.orientationOffset,handTrackingEnabled:!1,iterateControllerProfiles:!0,space:\"gripSpace\"}),this.loadModel(e)},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(e){var t=this.mapping[this.data.hand].buttons[e.detail.id];if(t){if(this.isOculusTouchV3)this.onButtonChangedV3(e);else{var n,i=this.buttonMeshes;\"trigger\"!==t&&\"grip\"!==t||(n=e.detail.state.value),i&&(\"trigger\"===t&&i.trigger&&(i.trigger.rotation.x=this.originalXRotationTrigger-n*(Math.PI/26)),\"grip\"===t&&i.grip&&(n*=\"left\"===this.data.hand?-1:1,i.grip.position.x=this.originalXPositionGrip+.004*n))}this.el.emit(t+\"changed\",e.detail.state)}},clickButtons:[\"xbutton\",\"ybutton\",\"abutton\",\"bbutton\",\"thumbstick\"],onButtonChangedV3:function(e){var t,n=this.mapping[this.data.hand].buttons[e.detail.id],i=this.buttonObjects;t=e.detail.state.value,t*=\"left\"===this.data.hand?-1:1,\"trigger\"===n?(this.triggerEuler.copy(this.buttonRanges.trigger.min.rotation),this.triggerEuler.x+=t*this.buttonRanges.trigger.diff.x,this.triggerEuler.y+=t*this.buttonRanges.trigger.diff.y,this.triggerEuler.z+=t*this.buttonRanges.trigger.diff.z,i.trigger.setRotationFromEuler(this.triggerEuler)):\"grip\"===n?i.grip.position.x=i.grip.minX+.004*t:this.clickButtons.includes(n)&&(i[n].position.y=0===t?this.buttonRanges[n].unpressedY:this.buttonRanges[n].pressedY)},onModelLoaded:function(e){if(this.data.model){if(this.isOculusTouchV3)this.onOculusTouchV3ModelLoaded(e);else{var t,n=this.controllerObject3D=e.detail.model;(t=this.buttonMeshes={}).grip=n.getObjectByName(\"buttonHand\"),this.originalXPositionGrip=t.grip&&t.grip.position.x,t.trigger=n.getObjectByName(\"buttonTrigger\"),this.originalXRotationTrigger=t.trigger&&t.trigger.rotation.x,t.thumbstick=n.getObjectByName(\"stick\"),t.xbutton=n.getObjectByName(\"buttonX\"),t.abutton=n.getObjectByName(\"buttonA\"),t.ybutton=n.getObjectByName(\"buttonY\"),t.bbutton=n.getObjectByName(\"buttonB\")}for(var i in this.buttonMeshes)this.buttonMeshes[i]&&E(this.buttonMeshes[i]);this.applyOffset(e.detail.model),this.el.emit(\"controllermodelready\",{name:\"oculus-touch-controls\",model:this.data.model,rayOrigin:this.displayModel[this.data.hand].rayOrigin})}},applyOffset:function(e){e.position.copy(this.displayModel[this.data.hand].modelPivotOffset),e.rotation.copy(this.displayModel[this.data.hand].modelPivotRotation)},onOculusTouchV3ModelLoaded:function(e){var t=this.controllerObject3D=e.detail.model,n=this.buttonObjects={},i=this.buttonMeshes={},r=this.buttonRanges={};i.grip=t.getObjectByName(\"squeeze\"),n.grip=t.getObjectByName(\"xr_standard_squeeze_pressed_value\"),r.grip={min:t.getObjectByName(\"xr_standard_squeeze_pressed_min\"),max:t.getObjectByName(\"xr_standard_squeeze_pressed_max\")},n.grip.minX=n.grip.position.x,i.thumbstick=t.getObjectByName(\"thumbstick\"),n.thumbstick=t.getObjectByName(\"xr_standard_thumbstick_pressed_value\"),r.thumbstick={min:t.getObjectByName(\"xr_standard_thumbstick_pressed_min\"),max:t.getObjectByName(\"xr_standard_thumbstick_pressed_max\"),originalRotation:this.buttonObjects.thumbstick.rotation.clone()},r.thumbstick.pressedY=n.thumbstick.position.y,r.thumbstick.unpressedY=r.thumbstick.pressedY+Math.abs(r.thumbstick.max.position.y)-Math.abs(r.thumbstick.min.position.y),i.trigger=t.getObjectByName(\"trigger\"),n.trigger=t.getObjectByName(\"xr_standard_trigger_pressed_value\"),r.trigger={min:t.getObjectByName(\"xr_standard_trigger_pressed_min\"),max:t.getObjectByName(\"xr_standard_trigger_pressed_max\")},r.trigger.diff={x:Math.abs(r.trigger.max.rotation.x)-Math.abs(r.trigger.min.rotation.x),y:Math.abs(r.trigger.max.rotation.y)-Math.abs(r.trigger.min.rotation.y),z:Math.abs(r.trigger.max.rotation.z)-Math.abs(r.trigger.min.rotation.z)};var s=\"left\"===this.data.hand?\"x\":\"a\",o=\"left\"===this.data.hand?\"y\":\"b\",a=s+\"button\",l=o+\"button\";i[a]=t.getObjectByName(s+\"_button\"),n[a]=t.getObjectByName(s+\"_button_pressed_value\"),r[a]={min:t.getObjectByName(s+\"_button_pressed_min\"),max:t.getObjectByName(s+\"_button_pressed_max\")},i[l]=t.getObjectByName(o+\"_button\"),n[l]=t.getObjectByName(o+\"_button_pressed_value\"),r[l]={min:t.getObjectByName(o+\"_button_pressed_min\"),max:t.getObjectByName(o+\"_button_pressed_max\")},r[a].unpressedY=n[a].position.y,r[a].pressedY=r[a].unpressedY+Math.abs(r[a].max.position.y)-Math.abs(r[a].min.position.y),r[l].unpressedY=n[l].position.y,r[l].pressedY=r[l].unpressedY-Math.abs(r[l].max.position.y)+Math.abs(r[l].min.position.y)},onAxisMoved:function(e){l(this,this.mapping[this.data.hand].axes,e)},onThumbstickMoved:function(e){if(this.isOculusTouchV3&&this.buttonMeshes&&this.buttonMeshes.thumbstick)for(var t in e.detail)this.buttonObjects.thumbstick.rotation[this.axisMap[t]]=this.buttonRanges.thumbstick.originalRotation[this.axisMap[t]]-Math.PI/8*e.detail[t]*(\"y\"===t||\"right\"===this.data.hand?-1:1)},axisMap:{y:\"x\",x:\"z\"},updateModel:function(e,t){this.data.model&&this.updateButtonModel(e,t)},updateButtonModel:function(e,t){var n,i=\"up\"===t||\"touchend\"===t?this.buttonMeshes[e].originalColor||this.data.buttonColor:\"touchstart\"===t?this.data.buttonTouchColor:this.data.buttonHighlightColor,r=this.buttonMeshes;r&&r[e]&&((n=r[e]).material.color.set(i),this.rendererSystem.applyColorCorrection(n.material.color))}})},4854:(e,t,n)=>{var i=n(3515).registerComponent;e.exports.Component=i(\"position\",{schema:{type:\"vec3\"},update:function(){var e=this.el.object3D,t=this.data;e.position.set(t.x,t.y,t.z)},remove:function(){this.el.object3D.position.set(0,0,0)}})},7454:(e,t,n)=>{var i,r,s=n(3515).registerComponent,o=n(2666),a=n(8903).debug(\"components:raycaster:warn\"),l=/^[\\w\\s-.,[\\]#]*$/,c={childList:!0,attributes:!0,subtree:!0},h=\"raycaster-intersected-cleared\",u=\"raycaster-intersection-cleared\";function d(e,t){var n;for(e.length=t.length,n=0;n\u003Ct.length;n++)e[n]=t[n]}e.exports.Component=s(\"raycaster\",{schema:{autoRefresh:{default:!0},direction:{type:\"vec3\",default:{x:0,y:0,z:-1}},enabled:{default:!0},far:{default:1e3},interval:{default:0},near:{default:0},objects:{default:\"\"},origin:{type:\"vec3\"},showLine:{default:!1},lineColor:{default:\"white\"},lineOpacity:{default:1},useWorldCoordinates:{default:!1}},multiple:!0,init:function(){this.clearedIntersectedEls=[],this.unitLineEndVec3=new o.Vector3,this.intersectedEls=[],this.intersections=[],this.newIntersectedEls=[],this.newIntersections=[],this.objects=[],this.prevCheckTime=void 0,this.prevIntersectedEls=[],this.rawIntersections=[],this.raycaster=new o.Raycaster,this.updateOriginDirection(),this.setDirty=this.setDirty.bind(this),this.updateLine=this.updateLine.bind(this),this.observer=new MutationObserver(this.setDirty),this.dirty=!0,this.lineEndVec3=new o.Vector3,this.otherLineEndVec3=new o.Vector3,this.lineData={end:this.lineEndVec3},this.getIntersection=this.getIntersection.bind(this),this.intersectedDetail={el:this.el,getIntersection:this.getIntersection},this.intersectedClearedDetail={el:this.el},this.intersectionClearedDetail={clearedEls:this.clearedIntersectedEls},this.intersectionDetail={}},update:function(e){var t=this.data,n=this.el,i=this.raycaster;i.far=t.far,i.near=t.near,!t.showLine||t.far===e.far&&t.origin===e.origin&&t.direction===e.direction&&e.showLine||(this.unitLineEndVec3.copy(t.origin).add(t.direction).normalize(),this.drawLine()),!t.showLine&&e.showLine&&n.removeAttribute(\"line\"),t.objects===e.objects||l.test(t.objects)||a('[raycaster] Selector \"'+t.objects+'\" may not update automatically with DOM changes.'),t.objects||a('[raycaster] For performance, please define raycaster.objects when using raycaster or cursor components to whitelist which entities to intersect with. e.g., raycaster=\"objects: [data-raycastable]\".'),t.autoRefresh!==e.autoRefresh&&n.isPlaying&&(t.autoRefresh?this.addEventListeners():this.removeEventListeners()),e.enabled&&!t.enabled&&this.clearAllIntersections(),this.setDirty()},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners()},remove:function(){this.data.showLine&&this.el.removeAttribute(\"line\"),this.clearAllIntersections()},addEventListeners:function(){this.data.autoRefresh&&(this.observer.observe(this.el.sceneEl,c),this.el.sceneEl.addEventListener(\"object3dset\",this.setDirty),this.el.sceneEl.addEventListener(\"object3dremove\",this.setDirty))},removeEventListeners:function(){this.observer.disconnect(),this.el.sceneEl.removeEventListener(\"object3dset\",this.setDirty),this.el.sceneEl.removeEventListener(\"object3dremove\",this.setDirty)},setDirty:function(){this.dirty=!0},refreshObjects:function(){var e,t=this.data;e=t.objects?this.el.sceneEl.querySelectorAll(t.objects):this.el.sceneEl.querySelectorAll(\"*\"),this.objects=this.flattenObject3DMaps(e),this.dirty=!1},tock:function(e){var t=this.data,n=this.prevCheckTime;t.enabled&&(n&&e-n\u003Ct.interval||(this.prevCheckTime=e,this.checkIntersections()))},checkIntersections:function(){var e,t,n=this.clearedIntersectedEls,i=this.el,r=this.data,s=this.intersectedEls,o=this.intersections,a=this.newIntersectedEls,l=this.newIntersections,c=this.prevIntersectedEls,p=this.rawIntersections;for(this.dirty&&this.refreshObjects(),d(this.prevIntersectedEls,this.intersectedEls),this.updateOriginDirection(),p.length=0,this.raycaster.intersectObjects(this.objects,!0,p),o.length=0,s.length=0,e=0;e\u003Cp.length;e++)t=p[e],r.showLine&&t.object===i.getObject3D(\"line\")||t.object.el&&(o.push(t),s.push(t.object.el));for(l.length=0,a.length=0,e=0;e\u003Co.length;e++)-1===c.indexOf(o[e].object.el)&&(l.push(o[e]),a.push(o[e].object.el));for(n.length=0,e=0;e\u003Cc.length;e++)-1===s.indexOf(c[e])&&(c[e].emit(h,this.intersectedClearedDetail),n.push(c[e]));for(n.length&&i.emit(u,this.intersectionClearedDetail),e=0;e\u003Ca.length;e++)a[e].emit(\"raycaster-intersected\",this.intersectedDetail);l.length&&(this.intersectionDetail.els=a,this.intersectionDetail.intersections=l,i.emit(\"raycaster-intersection\",this.intersectionDetail)),(0===c.length&&o.length>0||c.length>0&&0===o.length||c.length&&o.length&&c[0]!==o[0].object.el)&&(this.intersectionDetail.els=this.intersectedEls,this.intersectionDetail.intersections=o,i.emit(\"raycaster-closest-entity-changed\",this.intersectionDetail)),r.showLine&&setTimeout(this.updateLine)},updateLine:function(){var e,t=this.el,n=this.intersections;n.length&&(e=n[0].object.el===t&&n[1]?n[1].distance:n[0].distance),this.drawLine(e)},getIntersection:function(e){var t,n;for(t=0;t\u003Cthis.intersections.length;t++)if((n=this.intersections[t]).object.el===e)return n;return null},updateOriginDirection:(i=new o.Vector3,r=new o.Vector3,function(){var e=this.el,t=this.data;t.useWorldCoordinates?this.raycaster.set(t.origin,t.direction):(e.object3D.updateMatrixWorld(),r.setFromMatrixPosition(e.object3D.matrixWorld),0===t.origin.x&&0===t.origin.y&&0===t.origin.z||(r=e.object3D.localToWorld(r.copy(t.origin))),i.copy(t.direction).transformDirection(e.object3D.matrixWorld).normalize(),this.raycaster.set(r,i))}),drawLine:function(e){var t,n=this.data,i=this.el;t=this.lineData.end===this.lineEndVec3?this.otherLineEndVec3:this.lineEndVec3,void 0===e&&(e=n.far===1/0?1e3:n.far),this.lineData.start=n.origin,this.lineData.end=t.copy(this.unitLineEndVec3).multiplyScalar(e),this.lineData.color=n.lineColor,this.lineData.opacity=n.lineOpacity,i.setAttribute(\"line\",this.lineData)},flattenObject3DMaps:function(e){var t,n,i=this.objects,r=this.el.sceneEl.object3D;function s(e){return e.parent?s(e.parent):e===r}for(i.length=0,n=0;n\u003Ce.length;n++){var o=e[n];if(o.isEntity&&o.object3D&&s(o.object3D))for(t in o.object3DMap)i.push(o.getObject3D(t))}return i},clearAllIntersections:function(){var e;for(e=0;e\u003Cthis.intersectedEls.length;e++)this.intersectedEls[e].emit(h,this.intersectedClearedDetail);d(this.clearedIntersectedEls,this.intersectedEls),this.intersectedEls.length=0,this.intersections.length=0,this.el.emit(u,this.intersectionClearedDetail)}})},4914:(e,t,n)=>{var i=n(2666).MathUtils.degToRad,r=n(3515).registerComponent;e.exports.Component=r(\"rotation\",{schema:{type:\"vec3\"},update:function(){var e=this.data,t=this.el.object3D;t.rotation.set(i(e.x),i(e.y),i(e.z)),t.rotation.order=\"YXZ\"},remove:function(){this.el.object3D.rotation.set(0,0,0)}})},3689:(e,t,n)=>{var i=n(3515).registerComponent,r=1e-5;e.exports.Component=i(\"scale\",{schema:{type:\"vec3\",default:{x:1,y:1,z:1}},update:function(){var e=this.data,t=this.el.object3D,n=0===e.x?r:e.x,i=0===e.y?r:e.y,s=0===e.z?r:e.z;t.scale.set(n,i,s)},remove:function(){this.el.object3D.scale.set(1,1,1)}})},3431:(e,t,n)=>{var i,r,s,o=n(3515).registerComponent,a=n(2666),l=(i=new a.Quaternion,r=new a.Vector3,function(e,t,n){t.position.copy(e.transform.position),t.quaternion.copy(e.transform.orientation),r.copy(n),i.copy(e.transform.orientation),r.applyQuaternion(i),t.position.sub(r)});function c(e,t){this.renderer=e,this.xrHitTestSource=null,e.xr.addEventListener(\"sessionend\",function(){this.xrHitTestSource=null}.bind(this)),e.xr.addEventListener(\"sessionstart\",function(){this.sessionStart(t)}.bind(this)),this.renderer.xr.isPresenting&&this.sessionStart(t)}function h(e){console.warn(e.message),console.warn('Cannot requestHitTestSource Are you missing: webxr=\"optionalFeatures: hit-test;\" from \u003Ca-scene>?')}l.tempFakePose={transform:{orientation:new a.Quaternion,position:new a.Vector3}},c.prototype.previousFrameAnchors=new Set,c.prototype.anchorToObject3D=new Map,c.prototype.sessionStart=function(e){this.session=this.renderer.xr.getSession(),\"requestHitTestSource\"in this.session?e.space?this.session.requestHitTestSource(e).then(function(e){this.xrHitTestSource=e}.bind(this)).catch(h):e.profile&&this.session.requestHitTestSourceForTransientInput(e).then(function(e){this.xrHitTestSource=e,this.transient=!0}.bind(this)).catch(h):h({message:\"No requestHitTestSource on the session.\"})},c.prototype.anchorFromLastHitTestResult=function(e,t){var n=this.lastHitTest;if(n){var i={object3D:e,offset:t};Array.from(this.anchorToObject3D.entries()).forEach(function(t){var n=t[1].object3D,i=t[0];n===e&&(this.anchorToObject3D.delete(i),i.delete())}.bind(this)),n.createAnchor&&n.createAnchor().then(function(e){this.anchorToObject3D.set(e,i)}.bind(this)).catch((function(e){console.warn(e.message),console.warn('Cannot create anchor, are you missing: webxr=\"optionalFeatures: anchors;\" from \u003Ca-scene>?')}))}},c.prototype.doHit=function(e){if(this.renderer.xr.isPresenting){var t,n,i=this.renderer.xr.getReferenceSpace(),r=e.getViewerPose(i);return this.xrHitTestSource&&r?this.transient?(t=e.getHitTestResultsForTransientInput(this.xrHitTestSource)).length>0&&(n=t[0].results).length>0&&(this.lastHitTest=n[0],n[0].getPose(i)):(t=e.getHitTestResults(this.xrHitTestSource)).length>0&&(this.lastHitTest=t[0],t[0].getPose(i)):void 0}},c.updateAnchorPoses=function(e,t){var n=e.trackedAnchors||c.prototype.previousFrameAnchors;c.prototype.previousFrameAnchors.forEach((function(e){n.has(e)||c.prototype.anchorToObject3D.delete(e)})),n.forEach((function(n){var i,r,s,o;try{i=e.getPose(n.anchorSpace,t)}catch(e){}i&&(s=(r=c.prototype.anchorToObject3D.get(n)).offset,o=r.object3D,l(i,o,s))}))},e.exports.Component=o(\"ar-hit-test\",{schema:{target:{type:\"selector\"},enabled:{default:!0},src:{default:\"data:image/webp;base64,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\",type:\"map\"},type:{default:\"footprint\",oneOf:[\"footprint\",\"map\"]},footprintDepth:{default:.1},mapSize:{type:\"vec2\",default:{x:.5,y:.5}}},init:function(){this.hitTest=null,this.imageDataArray=new Uint8ClampedArray(1048576),this.imageData=new ImageData(this.imageDataArray,512,512),this.textureCache=new Map,this.orthoCam=new a.OrthographicCamera,this.orthoCam.layers.set(21),this.textureTarget=new a.WebGLRenderTarget(512,512,{}),this.basicMaterial=new a.MeshBasicMaterial({color:0,side:a.DoubleSide}),this.canvas=document.createElement(\"canvas\"),this.context=this.canvas.getContext(\"2d\"),this.context.imageSmoothingEnabled=!1,this.canvas.width=512,this.canvas.height=512,this.canvasTexture=new a.CanvasTexture(this.canvas,{alpha:!0}),this.canvasTexture.flipY=!1;var e=this.el.getAttribute(\"webxr\"),t=e.optionalFeatures;t.includes(\"hit-test\")&&t.includes(\"anchors\")||(t.push(\"hit-test\"),t.push(\"anchors\"),this.el.setAttribute(\"webxr\",e)),this.el.sceneEl.renderer.xr.addEventListener(\"sessionend\",function(){this.hitTest=null}.bind(this)),this.el.sceneEl.renderer.xr.addEventListener(\"sessionstart\",function(){if(this.el.is(\"ar-mode\")){var e=this.el.sceneEl.renderer,t=this.session=e.xr.getSession();this.hasPosedOnce=!1,this.bboxMesh.visible=!1,s||(s=new Map),t.requestReferenceSpace(\"viewer\").then(function(t){this.hitTest=new c(e,{space:t}),s.set(t,this.hitTest),this.el.emit(\"ar-hit-test-start\")}.bind(this));var n=\"generic-touchscreen\",i=new c(e,{profile:n});t.addEventListener(\"selectstart\",function(t){if(!0===this.data.enabled){var r=t.inputSource;this.bboxMesh.visible=!0,!0===this.hasPosedOnce&&(this.el.emit(\"ar-hit-test-select-start\",{inputSource:r,position:this.bboxMesh.position,orientation:this.bboxMesh.quaternion}),r.profiles[0]===n?this.hitTest=i:(this.hitTest=s.get(r)||new c(e,{space:r.targetRaySpace}),s.set(r,this.hitTest)))}}.bind(this)),t.addEventListener(\"selectend\",function(e){if(this.hitTest&&!0===this.data.enabled){var t,n=e.inputSource;!0===this.hasPosedOnce&&(this.bboxMesh.visible=!1,this.data.target&&(t=this.data.target.object3D)&&(l.tempFakePose.transform.position.copy(this.bboxMesh.position),l.tempFakePose.transform.orientation.copy(this.bboxMesh.quaternion),l(l.tempFakePose,t,this.bboxOffset),t.visible=!0,this.hitTest.anchorFromLastHitTestResult(t,this.bboxOffset)),this.el.emit(\"ar-hit-test-select\",{inputSource:n,position:this.bboxMesh.position,orientation:this.bboxMesh.quaternion})),this.hitTest=null}else this.hitTest=null}.bind(this))}}.bind(this)),this.bboxOffset=new a.Vector3,this.update=this.update.bind(this),this.makeBBox()},update:function(){!1===this.data.enabled&&(this.hitTest=null,this.bboxMesh.visible=!1),this.data.target&&(this.data.target.object3D?(this.data.target.addEventListener(\"model-loaded\",this.update),this.data.target.object3D.layers.enable(21),this.data.target.object3D.traverse((function(e){e.layers.enable(21)}))):this.data.target.addEventListener(\"loaded\",this.update,{once:!0})),this.bboxNeedsUpdate=!0},makeBBox:function(){var e=new a.PlaneGeometry(1,1),t=new a.MeshBasicMaterial({transparent:!0,color:16777215});e.rotateX(-Math.PI/2),e.rotateY(-Math.PI/2),this.bbox=new a.Box3,this.bboxMesh=new a.Mesh(e,t),this.el.setObject3D(\"ar-hit-test\",this.bboxMesh),this.bboxMesh.visible=!1},updateFootprint:function(){var e,t,n,i=this.el.sceneEl.renderer,r=i.xr.enabled;this.bboxMesh.material.map=this.canvasTexture,this.bboxMesh.material.needsUpdate=!0,this.orthoCam.rotation.set(-Math.PI/2,0,-Math.PI/2),this.orthoCam.position.copy(this.bboxMesh.position),this.orthoCam.position.y-=this.bboxMesh.scale.y/2,this.orthoCam.near=.1,this.orthoCam.far=this.orthoCam.near+this.data.footprintDepth*this.bboxMesh.scale.y,this.orthoCam.position.y+=this.orthoCam.far,this.orthoCam.right=this.bboxMesh.scale.z/2,this.orthoCam.left=-this.bboxMesh.scale.z/2,this.orthoCam.top=this.bboxMesh.scale.x/2,this.orthoCam.bottom=-this.bboxMesh.scale.x/2,this.orthoCam.updateProjectionMatrix(),t=i.getRenderTarget(),i.setRenderTarget(this.textureTarget),i.xr.enabled=!1,n=this.el.object3D.background,this.el.object3D.overrideMaterial=this.basicMaterial,this.el.object3D.background=null,i.render(this.el.object3D,this.orthoCam),this.el.object3D.background=n,this.el.object3D.overrideMaterial=null,i.xr.enabled=r,i.setRenderTarget(t),i.readRenderTargetPixels(this.textureTarget,0,0,512,512,this.imageDataArray),this.context.putImageData(this.imageData,0,0),this.context.shadowColor=\"white\",this.context.shadowBlur=10,this.context.drawImage(this.canvas,0,0),e=this.context.getImageData(0,0,512,512);for(var s=0;s\u003C262144;s++)0!==e.data[4*s+3]&&255!==e.data[4*s+3]&&(e.data[4*s+3]=128);this.context.putImageData(e,0,0),this.canvasTexture.needsUpdate=!0},tick:function(){var e,t,n=this.el.sceneEl.frame,i=this.el.sceneEl.renderer;(n&&c.updateAnchorPoses(n,i.xr.getReferenceSpace()),this.bboxNeedsUpdate)&&(this.bboxNeedsUpdate=!1,this.data.target&&\"map\"!==this.data.type||(this.textureCache.has(this.data.src)?t=this.textureCache.get(this.data.src):(t=(new a.TextureLoader).load(this.data.src),this.textureCache.set(this.data.src,t)),this.bboxMesh.material.map=t,this.bboxMesh.material.needsUpdate=!0),this.data.target&&this.data.target.object3D?(this.bbox.setFromObject(this.data.target.object3D),this.bbox.getCenter(this.bboxMesh.position),this.bbox.getSize(this.bboxMesh.scale),\"footprint\"===this.data.type&&(this.bboxMesh.scale.x*=1.04,this.bboxMesh.scale.z*=1.04,this.updateFootprint()),this.bboxMesh.position.y-=this.bboxMesh.scale.y/2,this.bboxOffset.copy(this.bboxMesh.position),this.bboxOffset.sub(this.data.target.object3D.position)):this.bboxMesh.scale.set(this.data.mapSize.x,1,this.data.mapSize.y));this.hitTest&&(e=this.hitTest.doHit(n))&&(!0!==this.hasPosedOnce&&(this.hasPosedOnce=!0,this.el.emit(\"ar-hit-test-achieved\")),this.bboxMesh.visible=!0,this.bboxMesh.position.copy(e.transform.position),this.bboxMesh.quaternion.copy(e.transform.orientation))}})},2819:(e,t,n)=>{var i=n(3515).registerComponent,r=n(3515).components;e.exports.Component=i(\"background\",{schema:{color:{type:\"color\",default:\"black\"},transparent:{default:!1}},update:function(){var e=this.data,t=this.el.object3D;e.transparent?t.background=null:t.background=new THREE.Color(e.color)},remove:function(){var e=this.data,t=this.el.object3D;e.transparent?t.background=null:t.background=r[this.name].schema.color.default}})},1135:(e,t,n)=>{var i=n(3515).registerComponent;e.exports.Component=i(\"debug\",{schema:{default:!0}})},4046:(e,t,n)=>{var i=n(3515).registerComponent,r=n(8903).bind,s=n(8309),o=\"a-dialog-buttons-container\",a=\"a-dialog-button\";function l(e,t){var n,i,r,o;return(n=document.createElement(\"div\")).classList.add(\"a-modal\"),n.setAttribute(s.AFRAME_INJECTED,\"\"),(i=document.createElement(\"div\")).className=\"a-dialog\",i.setAttribute(s.AFRAME_INJECTED,\"\"),n.appendChild(i),(r=document.createElement(\"div\")).classList.add(\"a-dialog-text-container\"),i.appendChild(r),(o=document.createElement(\"div\")).classList.add(\"a-dialog-text\"),o.innerHTML=e,r.appendChild(o),i.appendChild(t),n}e.exports.Component=i(\"device-orientation-permission-ui\",{schema:{enabled:{default:!0},deviceMotionMessage:{default:\"This immersive website requires access to your device motion sensors.\"},httpsMessage:{default:\"Access this site over HTTPS to enter VR mode and grant access to the device sensors.\"},denyButtonText:{default:\"Deny\"},allowButtonText:{default:\"Allow\"},cancelButtonText:{default:\"Cancel\"}},init:function(){var e=this;this.data.enabled&&(\"localhost\"!==location.hostname&&\"127.0.0.1\"!==location.hostname&&\"http:\"===location.protocol&&this.showHTTPAlert(),\"undefined\"!=typeof DeviceOrientationEvent&&DeviceOrientationEvent.requestPermission?(this.onDeviceMotionDialogAllowClicked=r(this.onDeviceMotionDialogAllowClicked,this),this.onDeviceMotionDialogDenyClicked=r(this.onDeviceMotionDialogDenyClicked,this),DeviceOrientationEvent.requestPermission().then((function(){e.el.emit(\"deviceorientationpermissiongranted\"),e.permissionGranted=!0})).catch((function(){var t,n,i,r,c,h,u,d;e.devicePermissionDialogEl=(t=e.data.denyButtonText,n=e.data.allowButtonText,i=e.data.deviceMotionMessage,r=e.onDeviceMotionDialogAllowClicked,c=e.onDeviceMotionDialogDenyClicked,(h=document.createElement(\"div\")).classList.add(o),(u=document.createElement(\"button\")).classList.add(a,\"a-dialog-deny-button\"),u.setAttribute(s.AFRAME_INJECTED,\"\"),u.innerHTML=t,h.appendChild(u),(d=document.createElement(\"button\")).classList.add(a,\"a-dialog-allow-button\"),d.setAttribute(s.AFRAME_INJECTED,\"\"),d.innerHTML=n,h.appendChild(d),d.addEventListener(\"click\",(function(e){e.stopPropagation(),r()})),u.addEventListener(\"click\",(function(e){e.stopPropagation(),c()})),l(i,h)),e.el.appendChild(e.devicePermissionDialogEl)}))):this.permissionGranted=!0)},remove:function(){this.devicePermissionDialogEl&&this.el.removeChild(this.devicePermissionDialogEl)},onDeviceMotionDialogDenyClicked:function(){this.remove()},showHTTPAlert:function(){var e,t,n,i,r,c=this,h=(e=c.data.cancelButtonText,t=c.data.httpsMessage,n=function(){c.el.removeChild(h)},(i=document.createElement(\"div\")).classList.add(o),(r=document.createElement(\"button\")).classList.add(a,\"a-dialog-ok-button\"),r.setAttribute(s.AFRAME_INJECTED,\"\"),r.innerHTML=e,i.appendChild(r),r.addEventListener(\"click\",(function(e){e.stopPropagation(),n()})),l(t,i));this.el.appendChild(h)},onDeviceMotionDialogAllowClicked:function(){var e=this;this.el.emit(\"deviceorientationpermissionrequested\"),DeviceOrientationEvent.requestPermission().then((function(t){\"granted\"===t?(e.el.emit(\"deviceorientationpermissiongranted\"),e.permissionGranted=!0):e.el.emit(\"deviceorientationpermissionrejected\"),e.remove()})).catch(console.error)}})},1277:(e,t,n)=>{var i=n(3515).registerComponent;e.exports.Component=i(\"embedded\",{dependencies:[\"vr-mode-ui\"],schema:{default:!0},update:function(){var e=this.el,t=e.querySelector(\".a-enter-vr\");!0===this.data?(t&&t.classList.add(\"embedded\"),e.removeFullScreenStyles()):(t&&t.classList.remove(\"embedded\"),e.addFullScreenStyles())}})},3638:(e,t,n)=>{var i=n(3515).registerComponent,r=n(2666),s=n(4219)(\"components:fog:warn\");e.exports.Component=i(\"fog\",{schema:{color:{type:\"color\",default:\"#000\"},density:{default:25e-5},far:{default:1e3,min:0},near:{default:1,min:0},type:{default:\"linear\",oneOf:[\"linear\",\"exponential\"]}},update:function(){var e=this.data,t=this.el,n=this.el.object3D.fog;if(t.isScene)return n&&e.type===n.name?void Object.keys(this.schema).forEach((function(t){var i=e[t];\"color\"===t&&(i=new r.Color(i)),n[t]=i})):(t.object3D.fog=function(e){var t;return(t=\"exponential\"===e.type?new r.FogExp2(e.color,e.density):new r.Fog(e.color,e.near,e.far)).name=e.type,t}(e),void t.systems.material.updateMaterials());s(\"Fog component can only be applied to \u003Ca-scene>\")},remove:function(){var e=this.el.object3D.fog;e&&(e.far=0,e.near=.1)}})},3969:(e,t,n)=>{var i,r=n(8309).AFRAME_INJECTED,s=n(4147),o=n(3515).registerComponent,a=n(8903),l=\"https://unpkg.com/aframe-inspector@\"+((i=s.version.split(\".\"))[2]=\"x\",i.join(\".\")+\"/dist/aframe-inspector.min.js\");e.exports.Component=o(\"inspector\",{schema:{url:{default:l}},init:function(){this.firstPlay=!0,this.onKeydown=this.onKeydown.bind(this),this.onMessage=this.onMessage.bind(this),this.initOverlay(),window.addEventListener(\"keydown\",this.onKeydown),window.addEventListener(\"message\",this.onMessage)},play:function(){var e;this.firstPlay&&\"false\"!==(e=a.getUrlParameter(\"inspector\"))&&e&&(this.openInspector(),this.firstPlay=!1)},initOverlay:function(){this.loadingMessageEl=document.createElement(\"div\"),this.loadingMessageEl.classList.add(\"a-inspector-loader\"),this.loadingMessageEl.innerHTML='Loading Inspector\u003Cspan class=\"dots\">\u003Cspan>.\u003C/span>\u003Cspan>.\u003C/span>\u003Cspan>.\u003C/span>\u003C/span>'},remove:function(){this.removeEventListeners()},onKeydown:function(e){73===e.keyCode&&(e.ctrlKey&&e.altKey||e.getModifierState(\"AltGraph\"))&&this.openInspector()},showLoader:function(){document.body.appendChild(this.loadingMessageEl)},hideLoader:function(){document.body.removeChild(this.loadingMessageEl)},onMessage:function(e){\"INJECT_AFRAME_INSPECTOR\"===e.data&&this.openInspector()},openInspector:function(e){var t,n=this;AFRAME.INSPECTOR||AFRAME.inspectorInjected?AFRAME.INSPECTOR.open(e):(this.showLoader(),(t=document.createElement(\"script\")).src=this.data.url,t.setAttribute(\"data-name\",\"aframe-inspector\"),t.setAttribute(r,\"\"),t.onload=function(){AFRAME.INSPECTOR.open(e),n.hideLoader(),n.removeEventListeners()},t.onerror=function(){n.loadingMessageEl.innerHTML=\"Error loading Inspector\"},document.head.appendChild(t),AFRAME.inspectorInjected=!0)},removeEventListeners:function(){window.removeEventListener(\"keydown\",this.onKeydown),window.removeEventListener(\"message\",this.onMessage)}})},7445:(e,t,n)=>{var i=n(3515).registerComponent,r=n(8903).shouldCaptureKeyEvent;e.exports.Component=i(\"keyboard-shortcuts\",{schema:{enterVR:{default:!0},exitVR:{default:!0}},init:function(){this.onKeyup=this.onKeyup.bind(this)},update:function(e){var t=this.data;this.enterVREnabled=t.enterVR},play:function(){window.addEventListener(\"keyup\",this.onKeyup,!1)},pause:function(){window.removeEventListener(\"keyup\",this.onKeyup)},onKeyup:function(e){var t=this.el;r(e)&&(this.enterVREnabled&&70===e.keyCode&&t.enterVR(),this.enterVREnabled&&27===e.keyCode&&t.exitVR())}})},4310:(e,t,n)=>{var i=n(4219),r=n(3515).registerComponent,s=i(\"components:pool:warn\");e.exports.Component=r(\"pool\",{schema:{container:{default:\"\"},mixin:{default:\"\"},size:{default:0},dynamic:{default:!1}},multiple:!0,initPool:function(){var e;for(this.availableEls=[],this.usedEls=[],this.data.mixin||s(\"No mixin provided for pool component.\"),this.data.container&&(this.container=document.querySelector(this.data.container),this.container||s(\"Container \"+this.data.container+\" not found.\")),this.container=this.container||this.el,e=0;e\u003Cthis.data.size;++e)this.createEntity()},update:function(e){var t=this.data;e.mixin===t.mixin&&e.size===t.size||this.initPool()},createEntity:function(){var e;(e=document.createElement(\"a-entity\")).play=this.wrapPlay(e.play),e.setAttribute(\"mixin\",this.data.mixin),e.object3D.visible=!1,e.pause(),this.container.appendChild(e),this.availableEls.push(e);var t=this.usedEls;e.addEventListener(\"loaded\",(function(){-1===t.indexOf(e)&&(e.object3DParent=e.object3D.parent,e.object3D.parent.remove(e.object3D))}))},wrapPlay:function(e){var t=this.usedEls;return function(){-1!==t.indexOf(this)&&e.call(this)}},requestEntity:function(){var e;if(0===this.availableEls.length){if(!1===this.data.dynamic)return void s(\"Requested entity from empty pool: \"+this.attrName);s(\"Requested entity from empty pool. This pool is dynamic and will resize automatically. You might want to increase its initial size: \"+this.attrName),this.createEntity()}return e=this.availableEls.shift(),this.usedEls.push(e),e.object3DParent&&(e.object3DParent.add(e.object3D),this.updateRaycasters()),e.object3D.visible=!0,e},returnEntity:function(e){var t=this.usedEls.indexOf(e);if(-1!==t)return this.usedEls.splice(t,1),this.availableEls.push(e),e.object3DParent=e.object3D.parent,e.object3D.parent.remove(e.object3D),this.updateRaycasters(),e.object3D.visible=!1,e.pause(),e;s(\"The returned entity was not previously pooled from \"+this.attrName)},updateRaycasters(){document.querySelectorAll(\"[raycaster]\").forEach((function(e){e.components.raycaster.setDirty()}))}})},5670:(e,t,n)=>{var i=n(3515).registerComponent;e.exports.Component=i(\"reflection\",{schema:{directionalLight:{type:\"selector\"}},init:function(){var e=this;this.cubeRenderTarget=new THREE.WebGLCubeRenderTarget(16),this.cubeCamera=new THREE.CubeCamera(.1,1e3,this.cubeRenderTarget),this.lightingEstimationTexture=new THREE.WebGLCubeRenderTarget(16).texture,this.needsVREnvironmentUpdate=!0;var t=this.el.getAttribute(\"webxr\"),n=t.optionalFeatures;n.includes(\"light-estimation\")||(n.push(\"light-estimation\"),this.el.setAttribute(\"webxr\",t)),this.el.addEventListener(\"enter-vr\",(function(){e.el.renderer.xr.getSession().requestLightProbe&&e.el.is(\"ar-mode\")&&e.startLightProbe()})),this.el.addEventListener(\"exit-vr\",(function(){e.stopLightProbe()})),this.el.object3D.environment=this.cubeRenderTarget.texture},stopLightProbe:function(){this.xrLightProbe=null,this.probeLight&&(this.probeLight.components.light.light.intensity=0),this.needsVREnvironmentUpdate=!0,this.el.object3D.environment=this.cubeRenderTarget.texture},startLightProbe:function(){this.needsLightProbeUpdate=!0},setupLightProbe:function(){var e=this.el.renderer,t=e.xr.getSession(),n=this,i=e.getContext();if(!this.probeLight){var r=document.createElement(\"a-light\");r.setAttribute(\"type\",\"probe\"),r.setAttribute(\"intensity\",0),this.el.appendChild(r),this.probeLight=r}switch(t.preferredReflectionFormat){case\"srgba8\":i.getExtension(\"EXT_sRGB\");break;case\"rgba16f\":i.getExtension(\"OES_texture_half_float\")}this.glBinding=new XRWebGLBinding(t,i),i.getExtension(\"EXT_sRGB\"),i.getExtension(\"OES_texture_half_float\"),t.requestLightProbe().then((function(e){n.xrLightProbe=e,e.addEventListener(\"reflectionchange\",n.updateXRCubeMap.bind(n))})).catch((function(e){console.warn(\"Lighting estimation not supported: \"+e.message),console.warn('Are you missing: webxr=\"optionalFeatures: light-estimation;\" from \u003Ca-scene>?')}))},updateXRCubeMap:function(){var e=this.el.renderer,t=this.glBinding.getReflectionCubeMap(this.xrLightProbe);t&&(e.properties.get(this.lightingEstimationTexture).__webglTexture=t,this.lightingEstimationTexture.needsPMREMUpdate=!0,this.el.object3D.environment=this.lightingEstimationTexture)},tick:function(){var e=this.el.object3D,t=this.el.renderer,n=this.el.frame;if(n&&this.xrLightProbe){var i=n.getLightEstimate(this.xrLightProbe);i&&function(e,t,n,i){var r=Math.max(e.primaryLightIntensity.x,Math.max(e.primaryLightIntensity.y,e.primaryLightIntensity.z));t.sh.fromArray(e.sphericalHarmonicsCoefficients),t.intensity=1,n&&(n.color.setRGB(e.primaryLightIntensity.x/r,e.primaryLightIntensity.y/r,e.primaryLightIntensity.z/r),n.intensity=r,i.copy(e.primaryLightDirection))}(i,this.probeLight.components.light.light,this.data.directionalLight&&this.data.directionalLight.components.light.light,this.data.directionalLight&&this.data.directionalLight.object3D.position)}this.needsVREnvironmentUpdate&&(e.environment=null,this.needsVREnvironmentUpdate=!1,this.cubeCamera.position.set(0,1.6,0),this.cubeCamera.update(t,e),e.environment=this.cubeRenderTarget.texture),this.needsLightProbeUpdate&&n&&(this.setupLightProbe(),this.needsLightProbeUpdate=!1)},remove:function(){this.el.object3D.environment=null,this.probeLight&&this.el.removeChild(this.probeLight)}})},467:(e,t,n)=>{var i=n(3515).registerComponent,r=n(2666),s=[\"attribute vec3 position;\",\"attribute vec2 uv;\",\"uniform mat4 projectionMatrix;\",\"uniform mat4 modelViewMatrix;\",\"varying vec2 vUv;\",\"void main() {\",\" vUv = vec2( 1.- uv.x, uv.y );\",\" gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),o=[\"precision mediump float;\",\"uniform samplerCube map;\",\"varying vec2 vUv;\",\"#define M_PI 3.141592653589793238462643383279\",\"void main() {\",\" vec2 uv = vUv;\",\" float longitude = uv.x * 2. * M_PI - M_PI + M_PI / 2.;\",\" float latitude = uv.y * M_PI;\",\" vec3 dir = vec3(\",\" - sin( longitude ) * sin( latitude ),\",\" cos( latitude ),\",\" - cos( longitude ) * sin( latitude )\",\" );\",\" normalize( dir );\",\" gl_FragColor = vec4( textureCube( map, dir ).rgb, 1.0 );\",\"}\"].join(\"\\n\");e.exports.Component=i(\"screenshot\",{schema:{width:{default:4096},height:{default:2048},camera:{type:\"selector\"}},init:function(){var e=this.el,t=this;function n(){var n=e.renderer.getContext();n&&(t.cubeMapSize=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),t.material=new r.RawShaderMaterial({uniforms:{map:{type:\"t\",value:null}},vertexShader:s,fragmentShader:o,side:r.DoubleSide}),t.quad=new r.Mesh(new r.PlaneGeometry(1,1),t.material),t.quad.visible=!1,t.camera=new r.OrthographicCamera(-.5,.5,.5,-.5,-1e4,1e4),t.canvas=document.createElement(\"canvas\"),t.ctx=t.canvas.getContext(\"2d\"),e.object3D.add(t.quad),t.onKeyDown=t.onKeyDown.bind(t))}e.renderer?n():e.addEventListener(\"render-target-loaded\",n)},getRenderTarget:function(e,t){return new r.WebGLRenderTarget(e,t,{encoding:this.el.sceneEl.renderer.outputEncoding,minFilter:r.LinearFilter,magFilter:r.LinearFilter,wrapS:r.ClampToEdgeWrapping,wrapT:r.ClampToEdgeWrapping,format:r.RGBAFormat,type:r.UnsignedByteType})},resize:function(e,t){this.quad.scale.set(e,t,1),this.camera.left=-1*e/2,this.camera.right=e/2,this.camera.top=t/2,this.camera.bottom=-1*t/2,this.camera.updateProjectionMatrix(),this.canvas.width=e,this.canvas.height=t},play:function(){window.addEventListener(\"keydown\",this.onKeyDown)},onKeyDown:function(e){var t=83===e.keyCode&&e.ctrlKey&&e.altKey;if(this.data&&t){var n=e.shiftKey?\"equirectangular\":\"perspective\";this.capture(n)}},setCapture:function(e){var t,n,i,s,o=this.el;return\"perspective\"===e?(this.quad.visible=!1,n=this.data.camera&&this.data.camera.components.camera.camera||o.camera,t={width:this.data.width,height:this.data.height}):(n=this.camera,s=new r.WebGLCubeRenderTarget(Math.min(this.cubeMapSize,2048),{format:r.RGBFormat,generateMipmaps:!0,minFilter:r.LinearMipmapLinearFilter,encoding:r.sRGBEncoding}),i=new r.CubeCamera(o.camera.near,o.camera.far,s),o.camera.getWorldPosition(i.position),o.camera.getWorldQuaternion(i.quaternion),i.update(o.renderer,o.object3D),this.quad.material.uniforms.map.value=i.renderTarget.texture,t={width:this.data.width,height:this.data.height},this.quad.visible=!0),{camera:n,size:t,projection:e}},capture:function(e){var t,n=this.el.renderer.xr.enabled,i=this.el.renderer;i.xr.enabled=!1,t=this.setCapture(e),this.renderCapture(t.camera,t.size,t.projection),this.saveCapture(),i.xr.enabled=n},getCanvas:function(e){var t=this.el.renderer.xr.enabled,n=this.el.renderer,i=this.setCapture(e);return n.xr.enabled=!1,this.renderCapture(i.camera,i.size,i.projection),n.xr.enabled=t,this.canvas},renderCapture:function(e,t,n){var i,r,s,o=this.el.renderer.autoClear,a=this.el,l=a.renderer;r=this.getRenderTarget(t.width,t.height),s=new Uint8Array(4*t.width*t.height),this.resize(t.width,t.height),l.autoClear=!0,l.clear(),l.setRenderTarget(r),l.render(a.object3D,e),l.autoClear=o,l.readRenderTargetPixels(r,0,0,t.width,t.height,s),l.setRenderTarget(null),\"perspective\"===n&&(s=this.flipPixelsVertically(s,t.width,t.height)),i=new ImageData(new Uint8ClampedArray(s),t.width,t.height),this.quad.visible=!1,this.ctx.putImageData(i,0,0)},flipPixelsVertically:function(e,t,n){for(var i=e.slice(0),r=0;r\u003Ct;++r)for(var s=0;s\u003Cn;++s)i[4*r+s*t*4]=e[4*r+(n-s)*t*4],i[4*r+1+s*t*4]=e[4*r+1+(n-s)*t*4],i[4*r+2+s*t*4]=e[4*r+2+(n-s)*t*4],i[4*r+3+s*t*4]=e[4*r+3+(n-s)*t*4];return i},saveCapture:function(){this.canvas.toBlob((function(e){var t=\"screenshot-\"+document.title.toLowerCase()+\"-\"+Date.now()+\".png\",n=document.createElement(\"a\"),i=URL.createObjectURL(e);n.href=i,n.setAttribute(\"download\",t),n.innerHTML=\"downloading...\",n.style.display=\"none\",document.body.appendChild(n),setTimeout((function(){n.click(),document.body.removeChild(n)}),1)}),\"image/png\")}})},5834:(e,t,n)=>{var i=n(3515).registerComponent,r=n(1326),s=n(8903);n(9625),n(1543);var o=window.aframeStats,a=s.bind,l=\"a-hidden\",c=window.threeStats;e.exports.Component=i(\"stats\",{schema:{default:!0},init:function(){var e=this.el;\"false\"!==s.getUrlParameter(\"stats\")&&(this.stats=function(e){var t=new c(e.renderer),n=new o(e),i=e.isMobile?[]:[t,n];return new r({css:[],values:{fps:{caption:\"fps\",below:30}},groups:[{caption:\"Framerate\",values:[\"fps\",\"raf\"]}],plugins:i})}(e),this.statsEl=document.querySelector(\".rs-base\"),this.hideBound=a(this.hide,this),this.showBound=a(this.show,this),e.addEventListener(\"enter-vr\",this.hideBound),e.addEventListener(\"exit-vr\",this.showBound))},update:function(){if(this.stats)return this.data?this.show():this.hide()},remove:function(){this.el.removeEventListener(\"enter-vr\",this.hideBound),this.el.removeEventListener(\"exit-vr\",this.showBound),this.statsEl&&this.statsEl.parentNode.removeChild(this.statsEl)},tick:function(){var e=this.stats;e&&(e(\"rAF\").tick(),e(\"FPS\").frame(),e().update())},hide:function(){this.statsEl.classList.add(l)},show:function(){this.statsEl.classList.remove(l)}})},2772:(e,t,n)=>{var i=n(3515).registerComponent,r=n(8309),s=n(8903),o=s.bind,a=\"a-hidden\";function l(e){e.addEventListener(\"touchstart\",(function(){e.classList.remove(\"resethover\")})),e.addEventListener(\"touchend\",(function(){e.classList.add(\"resethover\")}))}e.exports.Component=i(\"vr-mode-ui\",{dependencies:[\"canvas\"],schema:{enabled:{default:!0},cardboardModeEnabled:{default:!1},enterVRButton:{default:\"\"},enterARButton:{default:\"\"}},init:function(){var e=this,t=this.el;\"false\"!==s.getUrlParameter(\"ui\")&&(this.insideLoader=!1,this.enterVREl=null,this.enterAREl=null,this.orientationModalEl=null,this.bindMethods(),t.addEventListener(\"enter-vr\",this.updateEnterInterfaces),t.addEventListener(\"exit-vr\",this.updateEnterInterfaces),t.addEventListener(\"update-vr-devices\",this.updateEnterInterfaces),window.addEventListener(\"message\",(function(t){\"loaderReady\"===t.data.type&&(e.insideLoader=!0,e.remove())})),window.addEventListener(\"orientationchange\",this.toggleOrientationModalIfNeeded))},bindMethods:function(){this.onEnterVRButtonClick=o(this.onEnterVRButtonClick,this),this.onEnterARButtonClick=o(this.onEnterARButtonClick,this),this.onModalClick=o(this.onModalClick,this),this.toggleOrientationModalIfNeeded=o(this.toggleOrientationModalIfNeeded,this),this.updateEnterInterfaces=o(this.updateEnterInterfaces,this)},onModalClick:function(){this.el.exitVR()},onEnterVRButtonClick:function(){this.el.enterVR()},onEnterARButtonClick:function(){this.el.enterAR()},update:function(){var e,t,n,i=this.data,o=this.el;if(!i.enabled||this.insideLoader||\"false\"===s.getUrlParameter(\"ui\"))return this.remove();this.enterVREl||this.enterAREl||this.orientationModalEl||(i.enterVRButton?(this.enterVREl=document.querySelector(i.enterVRButton),this.enterVREl.addEventListener(\"click\",this.onEnterVRButtonClick)):(this.enterVREl=(e=this.onEnterVRButtonClick,(n=document.createElement(\"div\")).classList.add(\"a-enter-vr\"),n.setAttribute(r.AFRAME_INJECTED,\"\"),(t=document.createElement(\"button\")).className=\"a-enter-vr-button\",t.setAttribute(\"title\",\"Enter VR mode with a headset or fullscreen without\"),t.setAttribute(r.AFRAME_INJECTED,\"\"),s.device.isMobile()&&l(t),n.appendChild(t),t.addEventListener(\"click\",(function(t){e(),t.stopPropagation()})),n),o.appendChild(this.enterVREl)),i.enterARButton?(this.enterAREl=document.querySelector(i.enterARButton),this.enterAREl.addEventListener(\"click\",this.onEnterARButtonClick)):(this.enterAREl=function(e){var t,n;return(n=document.createElement(\"div\")).classList.add(\"a-enter-ar\"),n.setAttribute(r.AFRAME_INJECTED,\"\"),(t=document.createElement(\"button\")).className=\"a-enter-ar-button\",t.setAttribute(\"title\",\"Enter AR mode with a headset or handheld device.\"),t.setAttribute(r.AFRAME_INJECTED,\"\"),s.device.isMobile()&&l(t),n.appendChild(t),t.addEventListener(\"click\",(function(t){e(),t.stopPropagation()})),n}(this.onEnterARButtonClick),o.appendChild(this.enterAREl)),this.orientationModalEl=function(e){var t=document.createElement(\"div\");t.className=\"a-orientation-modal\",t.classList.add(a),t.setAttribute(r.AFRAME_INJECTED,\"\");var n=document.createElement(\"button\");return n.setAttribute(r.AFRAME_INJECTED,\"\"),n.innerHTML=\"Exit VR\",n.addEventListener(\"click\",e),t.appendChild(n),t}(this.onModalClick),o.appendChild(this.orientationModalEl),this.updateEnterInterfaces())},remove:function(){[this.enterVREl,this.enterAREl,this.orientationModalEl].forEach((function(e){e&&e.parentNode&&e.parentNode.removeChild(e)})),this.enterVREl=void 0,this.enterAREl=void 0,this.orientationModalEl=void 0},updateEnterInterfaces:function(){this.toggleEnterVRButtonIfNeeded(),this.toggleEnterARButtonIfNeeded(),this.toggleOrientationModalIfNeeded()},toggleEnterVRButtonIfNeeded:function(){var e=this.el;this.enterVREl&&(e.is(\"vr-mode\")||(e.isMobile||s.device.isMobileDeviceRequestingDesktopSite())&&!this.data.cardboardModeEnabled&&!s.device.checkVRSupport()?this.enterVREl.classList.add(a):(s.device.checkVRSupport()||this.enterVREl.classList.add(\"fullscreen\"),this.enterVREl.classList.remove(a)))},toggleEnterARButtonIfNeeded:function(){var e=this.el;this.enterAREl&&(e.is(\"vr-mode\")||!s.device.checkARSupport()?this.enterAREl.classList.add(a):this.enterAREl.classList.remove(a))},toggleOrientationModalIfNeeded:function(){var e=this.el,t=this.orientationModalEl;t&&e.isMobile&&(!s.device.isLandscape()&&e.is(\"vr-mode\")?t.classList.remove(a):t.classList.add(a))}})},1684:(e,t,n)=>{var i=n(3515),r=n(2666),s=n(7629),o=i.registerComponent;e.exports.Component=o(\"shadow\",{schema:{cast:{default:!0},receive:{default:!0}},init:function(){this.onMeshChanged=s(this.update,this),this.el.addEventListener(\"object3dset\",this.onMeshChanged),this.system.setShadowMapEnabled(!0)},update:function(){var e=this.data;this.updateDescendants(e.cast,e.receive)},remove:function(){this.el.removeEventListener(\"object3dset\",this.onMeshChanged),this.updateDescendants(!1,!1)},updateDescendants:function(e,t){var n=this.el.sceneEl;this.el.object3D.traverse((function(i){if(i instanceof r.Mesh&&(i.castShadow=e,i.receiveShadow=t,n.hasLoaded&&i.material))for(var s=Array.isArray(i.material)?i.material:[i.material],o=0;o\u003Cs.length;o++)s[o].needsUpdate=!0}))}})},5538:(e,t,n)=>{var i=n(3515).registerComponent,r=n(4219),s=n(2666),o=r(\"components:sound:warn\");e.exports.Component=i(\"sound\",{schema:{autoplay:{default:!1},distanceModel:{default:\"inverse\",oneOf:[\"linear\",\"inverse\",\"exponential\"]},loop:{default:!1},maxDistance:{default:1e4},on:{default:\"\"},poolSize:{default:1},positional:{default:!0},refDistance:{default:1},rolloffFactor:{default:1},src:{type:\"audio\"},volume:{default:1}},multiple:!0,init:function(){var e=this;this.listener=null,this.audioLoader=new s.AudioLoader,this.pool=new s.Group,this.loaded=!1,this.mustPlay=!1,this.playSoundBound=function(){e.playSound()}},update:function(e){var t,n,i=this.data,r=i.src!==e.src;if(r){if(!i.src)return;this.setupSound()}for(t=0;t\u003Cthis.pool.children.length;t++)n=this.pool.children[t],i.positional&&(n.setDistanceModel(i.distanceModel),n.setMaxDistance(i.maxDistance),n.setRefDistance(i.refDistance),n.setRolloffFactor(i.rolloffFactor)),n.setLoop(i.loop),n.setVolume(i.volume),n.isPaused=!1;if(i.on!==e.on&&this.updateEventListener(e.on),r){var o=this;this.loaded=!1,this.audioLoader.load(i.src,(function(e){for(t=0;t\u003Co.pool.children.length;t++)(n=o.pool.children[t]).setBuffer(e);o.loaded=!0,s.Cache.remove(i.src),(o.data.autoplay||o.mustPlay)&&o.playSound(),o.el.emit(\"sound-loaded\",o.evtDetail,!1)}))}},pause:function(){this.stopSound(),this.removeEventListener()},play:function(){this.data.autoplay&&this.playSound(),this.updateEventListener()},remove:function(){var e;this.removeEventListener(),this.el.getObject3D(this.attrName)&&this.el.removeObject3D(this.attrName);try{for(e=0;e\u003Cthis.pool.children.length;e++)this.pool.children[e].disconnect()}catch(e){o(\"Audio source not properly disconnected\")}},updateEventListener:function(e){var t=this.el;e&&t.removeEventListener(e,this.playSoundBound),t.addEventListener(this.data.on,this.playSoundBound)},removeEventListener:function(){this.el.removeEventListener(this.data.on,this.playSoundBound)},setupSound:function(){var e,t,n=this.el,i=n.sceneEl,r=this;this.pool.children.length>0&&(this.stopSound(),n.removeObject3D(\"sound\"));var o=this.listener=i.audioListener||new s.AudioListener;for(i.audioListener=o,i.camera&&i.camera.add(o),i.addEventListener(\"camera-set-active\",(function(e){e.detail.cameraEl.getObject3D(\"camera\").add(o)})),this.pool=new s.Group,e=0;e\u003Cthis.data.poolSize;e++)t=this.data.positional?new s.PositionalAudio(o):new s.Audio(o),this.pool.add(t);for(n.setObject3D(this.attrName,this.pool),e=0;e\u003Cthis.pool.children.length;e++)(t=this.pool.children[e]).onEnded=function(){this.isPlaying=!1,r.el.emit(\"sound-ended\",r.evtDetail,!1)}},pauseSound:function(){var e,t;for(this.isPlaying=!1,e=0;e\u003Cthis.pool.children.length;e++)(t=this.pool.children[e]).source&&t.source.buffer&&t.isPlaying&&!t.isPaused&&(t.isPaused=!0,t.pause())},playSound:function(e){var t,n,i;if(!this.loaded)return o(\"Sound not loaded yet. It will be played once it finished loading\"),void(this.mustPlay=!0);for(t=!1,this.isPlaying=!0,n=0;n\u003Cthis.pool.children.length;n++)(i=this.pool.children[n]).isPlaying||!i.buffer||t||(e&&e(i),i.play(),i.isPaused=!1,t=!0);t?this.mustPlay=!1:o(\"All the sounds are playing. If you need to play more sounds simultaneously consider increasing the size of pool with the `poolSize` attribute.\",this.el)},stopSound:function(){var e,t;for(this.isPlaying=!1,e=0;e\u003Cthis.pool.children.length;e++){if(!(t=this.pool.children[e]).source||!t.source.buffer)return;t.stop()}}})},6957:(e,t,n)=>{var i=n(6559),r=n(1880),s=n(3515).registerComponent,o=n(9644),a=n(2666),l=n(8903),c=l.debug(\"components:text:error\"),h=o.shaders,u=l.debug(\"components:text:warn\"),d=\"https://cdn.aframe.io/fonts/\",p={aileronsemibold:d+\"Aileron-Semibold.fnt\",dejavu:d+\"DejaVu-sdf.fnt\",exo2bold:d+\"Exo2Bold.fnt\",exo2semibold:d+\"Exo2SemiBold.fnt\",kelsonsans:d+\"KelsonSans.fnt\",monoid:d+\"Monoid.fnt\",mozillavr:d+\"mozillavr.fnt\",roboto:d+\"Roboto-msdf.json\",sourcecodepro:d+\"SourceCodePro.fnt\"},A=[\"roboto\"],f=\"roboto\";e.exports.FONTS=p;var m,g,v,y,E=new function(){var e=this.cache={};this.get=function(t,n){return t in e||(e[t]=n()),e[t]}},b={},x={},w=/^\\w+:/;function C(e,t,n){return e||(.5+t)*n}e.exports.Component=s(\"text\",{multiple:!0,schema:{align:{type:\"string\",default:\"left\",oneOf:[\"left\",\"right\",\"center\"]},alphaTest:{default:.5},anchor:{default:\"center\",oneOf:[\"left\",\"right\",\"center\",\"align\"]},baseline:{default:\"center\",oneOf:[\"top\",\"center\",\"bottom\"]},color:{type:\"color\",default:\"#FFF\"},font:{type:\"string\",default:f},fontImage:{type:\"string\"},height:{type:\"number\"},letterSpacing:{type:\"number\",default:0},lineHeight:{type:\"number\"},negate:{type:\"boolean\",default:!0},opacity:{type:\"number\",default:1},shader:{default:\"sdf\",oneOf:h},side:{default:\"front\",oneOf:[\"front\",\"back\",\"double\"]},tabSize:{default:4},transparent:{default:!0},value:{type:\"string\"},whiteSpace:{default:\"normal\",oneOf:[\"normal\",\"pre\",\"nowrap\"]},width:{type:\"number\"},wrapCount:{type:\"number\",default:40},wrapPixels:{type:\"number\"},xOffset:{type:\"number\",default:0},yOffset:{type:\"number\",default:0},zOffset:{type:\"number\",default:.001}},init:function(){this.shaderData={},this.geometry=i(),this.createOrUpdateMaterial()},update:function(e){var t=this.data,n=this.currentFont;x[t.font]?this.texture=x[t.font]:(this.texture=x[t.font]=new a.Texture,this.texture.anisotropy=16),this.createOrUpdateMaterial(),e.font===t.font?n&&(this.updateGeometry(this.geometry,n),this.updateLayout()):this.updateFont()},remove:function(){this.geometry.dispose(),this.geometry=null,this.el.removeObject3D(this.attrName),this.material.dispose(),this.material=null,this.texture.dispose(),this.texture=null,this.shaderObject&&delete this.shaderObject},createOrUpdateMaterial:function(){var e,t,n,i=this.data,r=this.material,s=this.shaderData;if(n=i.shader,-1!==A.indexOf(i.font)||i.font.indexOf(\"-msdf.\")>=0?n=\"msdf\":i.font in p&&-1===A.indexOf(i.font)&&(n=\"sdf\"),e=(this.shaderObject&&this.shaderObject.name)!==n,s.alphaTest=i.alphaTest,s.color=i.color,s.map=this.texture,s.opacity=i.opacity,s.side=function(e){switch(e){case\"back\":return a.FrontSide;case\"double\":return a.DoubleSide;default:return a.BackSide}}(i.side),s.transparent=i.transparent,s.negate=i.negate,!e)return this.shaderObject.update(s),r.transparent=s.transparent,void(r.side=s.side);t=function(e,t,n){var i,r;return(r=new h[t].Shader).el=e,r.init(n),r.update(n),(i=r.material).transparent=n.transparent,{material:i,shader:r}}(this.el,n,s),this.material=t.material,this.shaderObject=t.shader,this.material.side=s.side,this.mesh&&(this.mesh.material=this.material)},updateFont:function(){var e,t=this.data,n=this.el,i=this.geometry,s=this;t.font||u(\"No font specified. Using the default font.\"),this.mesh&&(this.mesh.visible=!1),e=this.lookupFont(t.font||f)||t.font,E.get(e,(function(){return n=e,i=t.yOffset,new Promise((function(e,t){r(n,(function(r,s){if(r)return c(\"Error loading font\",n),void t(r);n.indexOf(\"/Roboto-msdf.json\")>=0&&(i=30),i&&s.chars.map((function(e){e.yoffset+=i})),e(s)}))}));var n,i})).then((function(r){var o;if(1!==r.pages.length)throw new Error(\"Currently only single-page bitmap fonts are supported.\");b[e]||(r.widthFactor=b[r]=function(e){var t=0,n=0,i=0;return e.chars.map((function(e){t+=e.xadvance,e.id>=48&&e.id\u003C=57&&(i++,n+=e.xadvance)})),i?n/i:t/e.chars.length}(r)),s.currentFont=r,o=s.getFontImageSrc(),E.get(o,(function(){return e=o,new Promise((function(t,n){(new a.ImageLoader).load(e,(function(e){t(e)}),void 0,(function(){c(\"Error loading font image\",e),n(null)}))}));var e})).then((function(e){var o=s.texture;o&&(o.image=e,o.needsUpdate=!0,x[t.font]=o,s.texture=o,s.initMesh(),s.currentFont=r,s.updateGeometry(i,r),s.updateLayout(),s.mesh.visible=!0,n.emit(\"textfontset\",{font:t.font,fontObj:r}))})).catch((function(e){c(e.message),c(e.stack)}))})).catch((function(e){c(e.message),c(e.stack)}))},initMesh:function(){this.mesh||(this.mesh=new a.Mesh(this.geometry,this.material),this.el.setObject3D(this.attrName,this.mesh))},getFontImageSrc:function(){if(this.data.fontImage)return this.data.fontImage;var e=this.lookupFont(this.data.font||f)||this.data.font,t=this.currentFont.pages[0];return t.match(w)&&0!==t.indexOf(\"http\")?e.replace(/(\\.fnt)|(\\.json)/,\".png\"):a.LoaderUtils.extractUrlBase(e)+t},updateLayout:function(){var e,t,n,i,r,s,o,a,l,c=this.el,h=this.data,u=this.geometry,d=this.mesh;if(d&&u.layout){if(n=c.getAttribute(\"geometry\"),i=(s=(o=h.width||n&&n.width||1)/C(h.wrapPixels,h.wrapCount,this.currentFont.widthFactor))*((r=u.layout).height+r.descender),n&&\"plane\"===n.primitive&&(n.width||c.setAttribute(\"geometry\",\"width\",o),n.height||c.setAttribute(\"geometry\",\"height\",i)),\"left\"===(e=\"align\"===h.anchor?h.align:h.anchor))a=0;else if(\"right\"===e)a=-1*r.width;else{if(\"center\"!==e)throw new TypeError(\"Invalid text.anchor property value\",e);a=-1*r.width/2}if(\"bottom\"===(t=h.baseline))l=0;else if(\"top\"===t)l=-1*r.height+r.ascender;else{if(\"center\"!==t)throw new TypeError(\"Invalid text.baseline property value\",t);l=-1*r.height/2}d.position.x=a*s+h.xOffset,d.position.y=l*s,d.position.z=h.zOffset,d.scale.set(s,-1*s,s)}},lookupFont:function(e){return p[e]},updateGeometry:(m={},g={},v=/\\\\n/g,y=/\\\\t/g,function(e,t){var n=this.data;g.font=t,g.lineHeight=n.lineHeight&&isFinite(n.lineHeight)?n.lineHeight:t.common.lineHeight,g.text=n.value.toString().replace(v,\"\\n\").replace(y,\"\\t\"),g.width=C(n.wrapPixels,n.wrapCount,t.widthFactor),e.update(l.extend(m,n,g))})})},1125:(e,t,n)=>{var i=n(3515).registerComponent,r=n(6600),s=n(8309).DEFAULT_CAMERA_HEIGHT,o=n(2666),a=n(8309).DEFAULT_HANDEDNESS,l={touches:[]};e.exports.Component=i(\"tracked-controls-webvr\",{schema:{autoHide:{default:!0},controller:{default:0},id:{type:\"string\",default:\"\"},hand:{type:\"string\",default:\"\"},idPrefix:{type:\"string\",default:\"\"},orientationOffset:{type:\"vec3\"},armModel:{default:!1},headElement:{type:\"selector\"}},init:function(){this.axis=this.el.components[\"tracked-controls\"].axis=[0,0,0],this.buttonStates=this.el.components[\"tracked-controls\"].buttonStates={},this.changedAxes=[],this.targetControllerNumber=this.data.controller,this.axisMoveEventDetail={axis:this.axis,changed:this.changedAxes},this.deltaControllerPosition=new o.Vector3,this.controllerQuaternion=new o.Quaternion,this.controllerEuler=new o.Euler,this.updateGamepad(),this.buttonEventDetails={}},tick:function(e,t){var n=this.el.getObject3D(\"mesh\");n&&n.update&&n.update(t/1e3),this.updateGamepad(),this.updatePose(),this.updateButtons()},defaultUserHeight:function(){return s},getHeadElement:function(){return this.data.headElement||this.el.sceneEl.camera.el},updateGamepad:function(){var e=this.data,t=r.findMatchingControllerWebVR(this.system.controllers,e.id,e.idPrefix,e.hand,e.controller);this.controller=t,this.el.components[\"tracked-controls\"].controller=t,this.data.autoHide&&(this.el.object3D.visible=!!this.controller)},applyArmModel:function(e){var t,n,i,r,s=this.controller,o=this.controllerEuler,l=this.controllerQuaternion,c=this.deltaControllerPosition;n=this.getHeadElement().object3D,r=this.defaultUserHeight(),i=s.pose,t=(s?s.hand:void 0)||a,e.copy(n.position),c.set(.175*(\"left\"===t?-1:\"right\"===t?1:0),-.3,-.03),c.multiplyScalar(r),c.applyAxisAngle(n.up,n.rotation.y),e.add(c),c.set(0,0,-.175),c.multiplyScalar(r),i.orientation?l.fromArray(i.orientation):l.copy(n.quaternion),o.setFromQuaternion(l),o.set(o.x,o.y,0),c.applyEuler(o),e.add(c)},updatePose:function(){var e,t,n=this.controller,i=this.data,r=this.el.object3D,s=this.system.vrDisplay;n&&((e=n.pose).position?r.position.fromArray(e.position):i.armModel&&this.applyArmModel(r.position),e.orientation&&r.quaternion.fromArray(e.orientation),s&&e.position&&(t=this.el.sceneEl.renderer.xr.getStandingMatrix(),r.matrix.compose(r.position,r.quaternion,r.scale),r.matrix.multiplyMatrices(t,r.matrix),r.matrix.decompose(r.position,r.quaternion,r.scale)),r.rotateX(this.data.orientationOffset.x*o.MathUtils.DEG2RAD),r.rotateY(this.data.orientationOffset.y*o.MathUtils.DEG2RAD),r.rotateZ(this.data.orientationOffset.z*o.MathUtils.DEG2RAD))},updateButtons:function(){var e,t,n=this.controller;if(n){for(t=0;t\u003Cn.buttons.length;++t)this.buttonStates[t]||(this.buttonStates[t]={pressed:!1,touched:!1,value:0}),this.buttonEventDetails[t]||(this.buttonEventDetails[t]={id:t,state:this.buttonStates[t]}),e=n.buttons[t],this.handleButton(t,e);this.handleAxes()}},handleButton:function(e,t){return!!(this.handlePress(e,t)|this.handleTouch(e,t)|this.handleValue(e,t))&&(this.el.emit(\"buttonchanged\",this.buttonEventDetails[e],!1),!0)},handleAxes:function(){var e,t=!1,n=this.controller.axes,i=this.axis,r=this.changedAxes;for(this.changedAxes.splice(0,this.changedAxes.length),e=0;e\u003Cn.length;++e)r.push(i[e]!==n[e]),r[e]&&(t=!0);if(!t)return!1;for(this.axis.splice(0,this.axis.length),e=0;e\u003Cn.length;e++)this.axis.push(n[e]);return this.el.emit(\"axismove\",this.axisMoveEventDetail,!1),!0},handlePress:function(e,t){var n,i=this.buttonStates[e];return t.pressed!==i.pressed&&(n=t.pressed?\"buttondown\":\"buttonup\",this.el.emit(n,this.buttonEventDetails[e],!1),i.pressed=t.pressed,!0)},handleTouch:function(e,t){var n,i=this.buttonStates[e];return t.touched!==i.touched&&(n=t.touched?\"touchstart\":\"touchend\",this.el.emit(n,this.buttonEventDetails[e],!1,l),i.touched=t.touched,!0)},handleValue:function(e,t){var n=this.buttonStates[e];return t.value!==n.value&&(n.value=t.value,!0)}})},8666:(e,t,n)=>{var i=n(6600),r=n(3515).registerComponent;e.exports.Component=r(\"tracked-controls-webxr\",{schema:{id:{type:\"string\",default:\"\"},hand:{type:\"string\",default:\"\"},handTrackingEnabled:{default:!1},index:{type:\"int\",default:-1},iterateControllerProfiles:{default:!1},space:{type:\"string\",oneOf:[\"targetRaySpace\",\"gripSpace\"],default:\"gripSpace\"}},init:function(){this.updateController=this.updateController.bind(this),this.buttonEventDetails={},this.buttonStates=this.el.components[\"tracked-controls\"].buttonStates={},this.axis=this.el.components[\"tracked-controls\"].axis=[0,0,0],this.changedAxes=[],this.axisMoveEventDetail={axis:this.axis,changed:this.changedAxes}},update:function(){this.updateController()},play:function(){var e=this.el.sceneEl;this.updateController(),e.addEventListener(\"controllersupdated\",this.updateController)},pause:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.updateController)},isControllerPresent:function(e){return!(!this.controller||this.controller.gamepad||\"none\"!==e.inputSource.handedness&&e.inputSource.handedness!==this.data.hand)},updateController:function(){this.controller=i.findMatchingControllerWebXR(this.system.controllers,this.data.id,this.data.hand,this.data.index,this.data.iterateControllerProfiles,this.data.handTrackingEnabled),this.el.components[\"tracked-controls\"].controller=this.controller,this.data.autoHide&&(this.el.object3D.visible=!!this.controller)},tick:function(){var e=this.el.sceneEl,t=this.controller,n=e.frame;t&&e.frame&&this.system.referenceSpace&&(t.hand||(this.pose=n.getPose(t[this.data.space],this.system.referenceSpace),this.updatePose(),this.updateButtons()))},updatePose:function(){var e=this.el.object3D,t=this.pose;t&&(e.matrix.elements=t.transform.matrix,e.matrix.decompose(e.position,e.rotation,e.scale))},updateButtons:function(){var e,t,n,i=this.controller;if(i&&i.gamepad){for(n=i.gamepad,t=0;t\u003Cn.buttons.length;++t)this.buttonStates[t]||(this.buttonStates[t]={pressed:!1,touched:!1,value:0}),this.buttonEventDetails[t]||(this.buttonEventDetails[t]={id:t,state:this.buttonStates[t]}),e=n.buttons[t],this.handleButton(t,e);this.handleAxes()}},handleButton:function(e,t){return!!(this.handlePress(e,t)|this.handleTouch(e,t)|this.handleValue(e,t))&&(this.el.emit(\"buttonchanged\",this.buttonEventDetails[e],!1),!0)},handleAxes:function(){var e,t=!1,n=this.controller.gamepad.axes,i=this.axis,r=this.changedAxes;for(this.changedAxes.splice(0,this.changedAxes.length),e=0;e\u003Cn.length;++e)r.push(i[e]!==n[e]),r[e]&&(t=!0);if(!t)return!1;for(this.axis.splice(0,this.axis.length),e=0;e\u003Cn.length;e++)this.axis.push(n[e]);return this.el.emit(\"axismove\",this.axisMoveEventDetail,!1),!0},handlePress:function(e,t){var n,i=this.buttonStates[e];return t.pressed!==i.pressed&&(n=t.pressed?\"buttondown\":\"buttonup\",this.el.emit(n,this.buttonEventDetails[e],!1),i.pressed=t.pressed,!0)},handleTouch:function(e,t){var n,i=this.buttonStates[e];return t.touched!==i.touched&&(n=t.touched?\"touchstart\":\"touchend\",this.el.emit(n,this.buttonEventDetails[e],!1),i.touched=t.touched,!0)},handleValue:function(e,t){var n=this.buttonStates[e];return t.value!==n.value&&(n.value=t.value,!0)}})},2761:(e,t,n)=>{var i=n(3515).registerComponent;e.exports.Component=i(\"tracked-controls\",{schema:{autoHide:{default:!0},controller:{default:-1},id:{type:\"string\",default:\"\"},hand:{type:\"string\",default:\"\"},idPrefix:{type:\"string\",default:\"\"},handTrackingEnabled:{default:!1},orientationOffset:{type:\"vec3\"},armModel:{default:!1},headElement:{type:\"selector\"},iterateControllerProfiles:{default:!1},space:{type:\"string\",oneOf:[\"targetRaySpace\",\"gripSpace\"],default:\"targetRaySpace\"}},update:function(){var e=this.data,t=this.el;t.sceneEl.hasWebXR?t.setAttribute(\"tracked-controls-webxr\",{id:e.id,hand:e.hand,index:e.controller,iterateControllerProfiles:e.iterateControllerProfiles,handTrackingEnabled:e.handTrackingEnabled,space:e.space}):t.setAttribute(\"tracked-controls-webvr\",e)}})},3798:(e,t,n)=>{var i=n(3515).registerComponent,r=n(7629),s=n(2666),o=n(6600),a=o.checkControllerPresentAndSetup,l=o.emitIfAxesChanged,c=o.onButtonEvent,h=\"https://cdn.aframe.io/controllers/valve/index/valve-index-\",u={left:h+\"left.glb\",right:h+\"right.glb\"},d=\"valve\",p=n(8903).device.isWebXRAvailable,A={left:{_x:Math.PI/3,_y:0,_z:0,_order:\"XYZ\"},right:{_x:Math.PI/3,_y:0,_z:0,_order:\"XYZ\"}},f=p?A:{left:{_x:.692295102620542,_y:-.0627618864318427,_z:-.06265893149611756,_order:\"XYZ\"},right:{_x:.6484021229942998,_y:-.032563619881892894,_z:-.1327973171917482,_order:\"XYZ\"}},m=p?{left:{x:0,y:-.05,z:.06},right:{x:0,y:-.05,z:.06}}:{left:{x:-.00023692678902063457,y:.04724540367838371,z:-.061959880395271096},right:{x:.002471558599671131,y:.055765208987076195,z:-.061068168708348844}};e.exports.Component=i(\"valve-index-controls\",{schema:{hand:{default:\"left\"},buttonColor:{type:\"color\",default:\"#FAFAFA\"},buttonHighlightColor:{type:\"color\",default:\"#22D1EE\"},model:{default:!0},orientationOffset:{type:\"vec3\"}},mapping:{axes:{trackpad:[0,1],thumbstick:[2,3]},buttons:[\"trigger\",\"grip\",\"trackpad\",\"thumbstick\",\"abutton\"]},init:function(){var e=this;this.controllerPresent=!1,this.lastControllerCheck=0,this.onButtonChanged=r(this.onButtonChanged,this),this.onButtonDown=function(t){c(t.detail.id,\"down\",e)},this.onButtonUp=function(t){c(t.detail.id,\"up\",e)},this.onButtonTouchEnd=function(t){c(t.detail.id,\"touchend\",e)},this.onButtonTouchStart=function(t){c(t.detail.id,\"touchstart\",e)},this.previousButtonValues={},this.rendererSystem=this.el.sceneEl.systems.renderer,this.bindMethods()},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=r(this.onModelLoaded,this),this.onControllersUpdate=r(this.onControllersUpdate,this),this.checkIfControllerPresent=r(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=r(this.removeControllersUpdateListener,this),this.onAxisMoved=r(this.onAxisMoved,this)},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"model-loaded\",this.onModelLoaded),e.addEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"model-loaded\",this.onModelLoaded),e.removeEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var e=this.data,t=\"right\"===e.hand?0:\"left\"===e.hand?1:2;a(this,d,{index:t,iterateControllerProfiles:!0,hand:e.hand})},injectTrackedControls:function(){var e=this.el,t=this.data;e.setAttribute(\"tracked-controls\",{idPrefix:d,controller:\"right\"===t.hand?1:\"left\"===t.hand?0:2,hand:t.hand,orientationOffset:t.orientationOffset}),this.loadModel()},loadModel:function(){var e=this.data;e.model&&this.el.setAttribute(\"gltf-model\",\"\"+u[e.hand])},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(e){var t,n=this.mapping.buttons[e.detail.id],i=this.buttonMeshes;n&&(\"trigger\"===n&&(t=e.detail.state.value,i&&i.trigger&&(i.trigger.rotation.x=this.triggerOriginalRotationX-t*(Math.PI/40))),this.el.emit(n+\"changed\",e.detail.state))},onModelLoaded:function(e){var t,n=e.detail.model,i=this;this.data.model&&((t=this.buttonMeshes={}).grip={left:n.getObjectByName(\"leftgrip\"),right:n.getObjectByName(\"rightgrip\")},t.menu=n.getObjectByName(\"menubutton\"),t.system=n.getObjectByName(\"systembutton\"),t.trackpad=n.getObjectByName(\"touchpad\"),t.trigger=n.getObjectByName(\"trigger\"),this.triggerOriginalRotationX=t.trigger.rotation.x,Object.keys(t).forEach((function(e){i.setButtonColor(e,i.data.buttonColor)})),n.position.copy(m[this.data.hand]),n.rotation.copy(f[this.data.hand]),this.el.emit(\"controllermodelready\",{name:\"valve-index-controlls\",model:this.data.model,rayOrigin:new s.Vector3(0,0,0)}))},onAxisMoved:function(e){l(this,this.mapping.axes,e)},updateModel:function(e,t){var n;this.data.model&&(-1!==t.indexOf(\"touch\")||(n=\"up\"===t?this.data.buttonColor:this.data.buttonHighlightColor,this.setButtonColor(e,n)))},setButtonColor:function(e,t){}})},8057:(e,t,n)=>{var i=n(3515).registerComponent;e.exports.Component=i(\"visible\",{schema:{default:!0},update:function(){this.el.object3D.visible=this.data}})},8367:(e,t,n)=>{var i=n(3515).registerComponent,r=n(7629),s=n(6600),o=s.checkControllerPresentAndSetup,a=s.emitIfAxesChanged,l=s.onButtonEvent,c=n(8903).device.isWebXRAvailable,h=c?\"htc-vive\":\"OpenVR \",u=c?{axes:{thumbstick:[0,1]},buttons:[\"trigger\",\"grip\",\"trackpad\",\"none\",\"menu\"]}:{axes:{trackpad:[0,1]},buttons:[\"trackpad\",\"trigger\",\"grip\",\"menu\",\"system\"]};e.exports.Component=i(\"vive-controls\",{schema:{hand:{default:\"left\"},buttonColor:{type:\"color\",default:\"#FAFAFA\"},buttonHighlightColor:{type:\"color\",default:\"#22D1EE\"},model:{default:!0},orientationOffset:{type:\"vec3\"}},mapping:u,init:function(){var e=this;this.controllerPresent=!1,this.lastControllerCheck=0,this.onButtonChanged=r(this.onButtonChanged,this),this.onButtonDown=function(t){l(t.detail.id,\"down\",e)},this.onButtonUp=function(t){l(t.detail.id,\"up\",e)},this.onButtonTouchEnd=function(t){l(t.detail.id,\"touchend\",e)},this.onButtonTouchStart=function(t){l(t.detail.id,\"touchstart\",e)},this.previousButtonValues={},this.rendererSystem=this.el.sceneEl.systems.renderer,this.bindMethods()},update:function(){var e=this.data;this.controllerIndex=\"right\"===e.hand?0:\"left\"===e.hand?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=r(this.onModelLoaded,this),this.onControllersUpdate=r(this.onControllersUpdate,this),this.checkIfControllerPresent=r(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=r(this.removeControllersUpdateListener,this),this.onAxisMoved=r(this.onAxisMoved,this)},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"model-loaded\",this.onModelLoaded),e.addEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"model-loaded\",this.onModelLoaded),e.removeEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var e=this.data;o(this,h,{index:this.controllerIndex,hand:e.hand})},injectTrackedControls:function(){var e=this.el,t=this.data;e.setAttribute(\"tracked-controls\",{idPrefix:h,hand:t.hand,controller:this.controllerIndex,orientationOffset:t.orientationOffset}),this.data.model&&this.el.setAttribute(\"obj-model\",{obj:\"https://cdn.aframe.io/controllers/vive/vr_controller_vive.obj\",mtl:\"https://cdn.aframe.io/controllers/vive/vr_controller_vive.mtl\"})},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(e){var t,n=this.mapping.buttons[e.detail.id],i=this.buttonMeshes;n&&(\"trigger\"===n&&(t=e.detail.state.value,i&&i.trigger&&(i.trigger.rotation.x=-t*(Math.PI/12))),this.el.emit(n+\"changed\",e.detail.state))},onModelLoaded:function(e){var t,n=e.detail.model,i=this;this.data.model&&((t=this.buttonMeshes={}).grip={left:n.getObjectByName(\"leftgrip\"),right:n.getObjectByName(\"rightgrip\")},t.menu=n.getObjectByName(\"menubutton\"),t.system=n.getObjectByName(\"systembutton\"),t.trackpad=n.getObjectByName(\"touchpad\"),t.trigger=n.getObjectByName(\"trigger\"),Object.keys(t).forEach((function(e){i.setButtonColor(e,i.data.buttonColor)})),n.position.set(0,-.015,.04))},onAxisMoved:function(e){a(this,this.mapping.axes,e)},updateModel:function(e,t){var n;this.data.model&&(-1!==t.indexOf(\"touch\")||(n=\"up\"===t?this.data.buttonColor:this.data.buttonHighlightColor,this.setButtonColor(e,n)))},setButtonColor:function(e,t){var n=this.buttonMeshes,i=this.rendererSystem;if(n){if(\"grip\"===e)return n.grip.left.material.color.set(t),n.grip.right.material.color.set(t),i.applyColorCorrection(n.grip.left.material.color),void i.applyColorCorrection(n.grip.right.material.color);n[e].material.color.set(t),i.applyColorCorrection(n[e].material.color)}}})},9507:(e,t,n)=>{var i=n(3515).registerComponent,r=n(7629),s=n(6600),o=s.checkControllerPresentAndSetup,a=s.emitIfAxesChanged,l=s.onButtonEvent,c=\"HTC Vive Focus\";e.exports.Component=i(\"vive-focus-controls\",{schema:{hand:{default:\"\"},buttonTouchedColor:{type:\"color\",default:\"#BBBBBB\"},buttonHighlightColor:{type:\"color\",default:\"#7A7A7A\"},model:{default:!0},orientationOffset:{type:\"vec3\"},armModel:{default:!0}},mapping:{axes:{trackpad:[0,1]},buttons:[\"trackpad\",\"trigger\"]},bindMethods:function(){this.onModelLoaded=r(this.onModelLoaded,this),this.onControllersUpdate=r(this.onControllersUpdate,this),this.checkIfControllerPresent=r(this.checkIfControllerPresent,this),this.removeControllersUpdateListener=r(this.removeControllersUpdateListener,this),this.onAxisMoved=r(this.onAxisMoved,this)},init:function(){var e=this;this.onButtonChanged=r(this.onButtonChanged,this),this.onButtonDown=function(t){l(t.detail.id,\"down\",e)},this.onButtonUp=function(t){l(t.detail.id,\"up\",e)},this.onButtonTouchStart=function(t){l(t.detail.id,\"touchstart\",e)},this.onButtonTouchEnd=function(t){l(t.detail.id,\"touchend\",e)},this.controllerPresent=!1,this.lastControllerCheck=0,this.bindMethods()},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"model-loaded\",this.onModelLoaded),e.addEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!0,this.addControllersUpdateListener()},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"model-loaded\",this.onModelLoaded),e.removeEventListener(\"axismove\",this.onAxisMoved),this.controllerEventsActive=!1,this.removeControllersUpdateListener()},checkIfControllerPresent:function(){o(this,c,this.data.hand?{hand:this.data.hand}:{})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var e=this.el,t=this.data;e.setAttribute(\"tracked-controls\",{armModel:t.armModel,idPrefix:c,orientationOffset:t.orientationOffset}),this.data.model&&this.el.setAttribute(\"gltf-model\",\"https://cdn.aframe.io/controllers/vive/focus-controller/focus-controller.gltf\")},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelLoaded:function(e){var t,n=e.detail.model;this.data.model&&((t=this.buttonMeshes={}).trigger=n.getObjectByName(\"BumperKey\"),t.triggerPressed=n.getObjectByName(\"BumperKey_Press\"),t.triggerPressed&&(t.triggerPressed.visible=!1),t.trackpad=n.getObjectByName(\"TouchPad\"),t.trackpadPressed=n.getObjectByName(\"TouchPad_Press\"),t.trackpadPressed&&(t.trackpadPressed.visible=!1))},onButtonChanged:function(e){var t=this.mapping.buttons[e.detail.id];t&&this.el.emit(t+\"changed\",e.detail.state)},onAxisMoved:function(e){a(this,this.mapping.axes,e)},updateModel:function(e,t){this.data.model&&this.updateButtonModel(e,t)},updateButtonModel:function(e,t){var n=this.buttonMeshes,i=e+\"Pressed\";if(n&&n[e]&&n[i]){var r;switch(t){case\"down\":r=this.data.buttonHighlightColor;break;case\"touchstart\":r=this.data.buttonTouchedColor}r&&n[i].material.color.set(r),n[i].visible=!!r,n[e].visible=!r}}})},6296:(e,t,n)=>{var i,r,s=n(8309).keyboardevent.KEYCODE_TO_CODE,o=n(3515).registerComponent,a=n(2666),l=n(8903),c=l.bind,h=l.shouldCaptureKeyEvent,u=1e-5,d=[\"KeyW\",\"KeyA\",\"KeyS\",\"KeyD\",\"ArrowUp\",\"ArrowLeft\",\"ArrowRight\",\"ArrowDown\"];e.exports.Component=o(\"wasd-controls\",{schema:{acceleration:{default:65},adAxis:{default:\"x\",oneOf:[\"x\",\"y\",\"z\"]},adEnabled:{default:!0},adInverted:{default:!1},enabled:{default:!0},fly:{default:!1},wsAxis:{default:\"z\",oneOf:[\"x\",\"y\",\"z\"]},wsEnabled:{default:!0},wsInverted:{default:!1}},init:function(){this.keys={},this.easing=1.1,this.velocity=new a.Vector3,this.onBlur=c(this.onBlur,this),this.onContextMenu=c(this.onContextMenu,this),this.onFocus=c(this.onFocus,this),this.onKeyDown=c(this.onKeyDown,this),this.onKeyUp=c(this.onKeyUp,this),this.onVisibilityChange=c(this.onVisibilityChange,this),this.attachVisibilityEventListeners()},tick:function(e,t){var n=this.data,i=this.el,r=this.velocity;(r[n.adAxis]||r[n.wsAxis]||!function(e){var t;for(t in e)return!1;return!0}(this.keys))&&(t/=1e3,this.updateVelocity(t),(r[n.adAxis]||r[n.wsAxis])&&i.object3D.position.add(this.getMovementVector(t)))},update:function(e){e.adAxis!==this.data.adAxis&&(this.velocity[e.adAxis]=0),e.wsAxis!==this.data.wsAxis&&(this.velocity[e.wsAxis]=0)},remove:function(){this.removeKeyEventListeners(),this.removeVisibilityEventListeners()},play:function(){this.attachKeyEventListeners()},pause:function(){this.keys={},this.removeKeyEventListeners()},updateVelocity:function(e){var t,n,i,r,s,o=this.data,a=this.keys,l=this.velocity;if(n=o.adAxis,r=o.wsAxis,e>.2)return l[n]=0,void(l[r]=0);var c=Math.pow(1/this.easing,60*e);0!==l[n]&&(l[n]=l[n]*c),0!==l[r]&&(l[r]=l[r]*c),Math.abs(l[n])\u003Cu&&(l[n]=0),Math.abs(l[r])\u003Cu&&(l[r]=0),o.enabled&&(t=o.acceleration,o.adEnabled&&(i=o.adInverted?-1:1,(a.KeyA||a.ArrowLeft)&&(l[n]-=i*t*e),(a.KeyD||a.ArrowRight)&&(l[n]+=i*t*e)),o.wsEnabled&&(s=o.wsInverted?-1:1,(a.KeyW||a.ArrowUp)&&(l[r]-=s*t*e),(a.KeyS||a.ArrowDown)&&(l[r]+=s*t*e)))},getMovementVector:(i=new a.Vector3(0,0,0),r=new a.Euler(0,0,0,\"YXZ\"),function(e){var t,n=this.el.getAttribute(\"rotation\"),s=this.velocity;return i.copy(s),i.multiplyScalar(e),n?(t=this.data.fly?n.x:0,r.set(a.MathUtils.degToRad(t),a.MathUtils.degToRad(n.y),0),i.applyEuler(r),i):i}),attachVisibilityEventListeners:function(){window.oncontextmenu=this.onContextMenu,window.addEventListener(\"blur\",this.onBlur),window.addEventListener(\"focus\",this.onFocus),document.addEventListener(\"visibilitychange\",this.onVisibilityChange)},removeVisibilityEventListeners:function(){window.removeEventListener(\"blur\",this.onBlur),window.removeEventListener(\"focus\",this.onFocus),document.removeEventListener(\"visibilitychange\",this.onVisibilityChange)},attachKeyEventListeners:function(){window.addEventListener(\"keydown\",this.onKeyDown),window.addEventListener(\"keyup\",this.onKeyUp)},removeKeyEventListeners:function(){window.removeEventListener(\"keydown\",this.onKeyDown),window.removeEventListener(\"keyup\",this.onKeyUp)},onContextMenu:function(){for(var e=Object.keys(this.keys),t=0;t\u003Ce.length;t++)delete this.keys[e[t]]},onBlur:function(){this.pause()},onFocus:function(){this.play()},onVisibilityChange:function(){document.hidden?this.onBlur():this.onFocus()},onKeyDown:function(e){var t;h(e)&&(t=e.code||s[e.keyCode],-1!==d.indexOf(t)&&(this.keys[t]=!0))},onKeyUp:function(e){var t;t=e.code||s[e.keyCode],delete this.keys[t]}})},7872:(e,t,n)=>{var i,r=n(3515).registerComponent,s=n(7629),o=n(6600),a=o.checkControllerPresentAndSetup,l=o.emitIfAxesChanged,c=o.onButtonEvent,h=n(8903),u=h.debug(\"components:windows-motion-controls:debug\"),d=h.debug(\"components:windows-motion-controls:warn\"),p=n(8309).DEFAULT_HANDEDNESS,A={left:\"left.glb\",right:\"right.glb\",default:\"universal.glb\"},f=n(8903).device.isWebXRAvailable,m=/([0-9a-zA-Z]+-[0-9a-zA-Z]+)$/,g=f?\"windows-mixed-reality\":\"Spatial Controller (Spatial Interaction Source) \",v=f?{axes:{touchpad:[0,1],thumbstick:[2,3]},buttons:[\"trigger\",\"squeeze\",\"touchpad\",\"thumbstick\",\"menu\"],axisMeshNames:[\"TOUCHPAD_TOUCH_X\",\"TOUCHPAD_TOUCH_X\",\"THUMBSTICK_X\",\"THUMBSTICK_Y\"],buttonMeshNames:{trigger:\"SELECT\",menu:\"MENU\",squeeze:\"GRASP\",thumbstick:\"THUMBSTICK_PRESS\",touchpad:\"TOUCHPAD_PRESS\"},pointingPoseMeshName:\"POINTING_POSE\"}:{axes:{thumbstick:[0,1],trackpad:[2,3]},buttons:[\"thumbstick\",\"trigger\",\"grip\",\"menu\",\"trackpad\"],axisMeshNames:[\"THUMBSTICK_X\",\"THUMBSTICK_Y\",\"TOUCHPAD_TOUCH_X\",\"TOUCHPAD_TOUCH_Y\"],buttonMeshNames:{trigger:\"SELECT\",menu:\"MENU\",grip:\"GRASP\",thumbstick:\"THUMBSTICK_PRESS\",trackpad:\"TOUCHPAD_PRESS\"},pointingPoseMeshName:\"POINTING_POSE\"};e.exports.Component=r(\"windows-motion-controls\",{schema:{hand:{default:p},pair:{default:0},model:{default:!0},hideDisconnected:{default:!0}},mapping:v,bindMethods:function(){this.onModelError=s(this.onModelError,this),this.onModelLoaded=s(this.onModelLoaded,this),this.onControllersUpdate=s(this.onControllersUpdate,this),this.checkIfControllerPresent=s(this.checkIfControllerPresent,this),this.onAxisMoved=s(this.onAxisMoved,this)},init:function(){var e=this,t=this.el;this.onButtonChanged=s(this.onButtonChanged,this),this.onButtonDown=function(t){c(t.detail.id,\"down\",e)},this.onButtonUp=function(t){c(t.detail.id,\"up\",e)},this.onButtonTouchStart=function(t){c(t.detail.id,\"touchstart\",e)},this.onButtonTouchEnd=function(t){c(t.detail.id,\"touchend\",e)},this.onControllerConnected=function(){e.setModelVisibility(!0)},this.onControllerDisconnected=function(){e.setModelVisibility(!1)},this.controllerPresent=!1,this.lastControllerCheck=0,this.previousButtonValues={},this.bindMethods(),this.loadedMeshInfo={buttonMeshes:null,axisMeshes:null},this.rayOrigin={origin:new THREE.Vector3,direction:new THREE.Vector3(0,0,-1),createdFromMesh:!1},t.addEventListener(\"controllerconnected\",this.onControllerConnected),t.addEventListener(\"controllerdisconnected\",this.onControllerDisconnected)},addEventListeners:function(){var e=this.el;e.addEventListener(\"buttonchanged\",this.onButtonChanged),e.addEventListener(\"buttondown\",this.onButtonDown),e.addEventListener(\"buttonup\",this.onButtonUp),e.addEventListener(\"touchstart\",this.onButtonTouchStart),e.addEventListener(\"touchend\",this.onButtonTouchEnd),e.addEventListener(\"axismove\",this.onAxisMoved),e.addEventListener(\"model-error\",this.onModelError),e.addEventListener(\"model-loaded\",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var e=this.el;e.removeEventListener(\"buttonchanged\",this.onButtonChanged),e.removeEventListener(\"buttondown\",this.onButtonDown),e.removeEventListener(\"buttonup\",this.onButtonUp),e.removeEventListener(\"touchstart\",this.onButtonTouchStart),e.removeEventListener(\"touchend\",this.onButtonTouchEnd),e.removeEventListener(\"axismove\",this.onAxisMoved),e.removeEventListener(\"model-error\",this.onModelError),e.removeEventListener(\"model-loaded\",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){a(this,g,{hand:this.data.hand,index:this.data.pair,iterateControllerProfiles:!0})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},updateControllerModel:function(){if(this.data.model&&!this.rayOrigin.createdFromMesh){var e=this.createControllerModelUrl();this.loadModel(e)}else this.modelReady()},createControllerModelUrl:function(e){var t=this.el.components[\"tracked-controls\"],n=t?t.controller:null,i=\"default\",r=this.data.hand;if(n&&!window.hasNativeWebXRImplementation&&(r=n.hand,!e)){var s=n.id.match(m);i=s&&s[0]||i}return\"https://cdn.aframe.io/controllers/microsoft/\"+i+\"/\"+(A[r]||A.default)},injectTrackedControls:function(){var e=this.data;this.el.setAttribute(\"tracked-controls\",{idPrefix:g,controller:e.pair,hand:e.hand,armModel:!1}),this.updateControllerModel()},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener(\"controllersupdated\",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelError:function(e){var t=this.createControllerModelUrl(!0);e.detail.src!==t?(d(\"Failed to load controller model for device, attempting to load default.\"),this.loadModel(t)):d(\"Failed to load default controller model.\")},loadModel:function(e){this.el.setAttribute(\"gltf-model\",\"url(\"+e+\")\")},onModelLoaded:function(e){var t,n,i,r,s=this.controllerModel=e.detail.model,o=this.loadedMeshInfo;if(u(\"Processing model\"),o.buttonMeshes={},o.axisMeshes={},s){for(t=0;t\u003Cthis.mapping.buttons.length;t++)(n=this.mapping.buttonMeshNames[this.mapping.buttons[t]])?(i=s.getObjectByName(n))?(r={index:t,value:a(i,\"VALUE\"),pressed:a(i,\"PRESSED\"),unpressed:a(i,\"UNPRESSED\")}).value&&r.pressed&&r.unpressed?o.buttonMeshes[this.mapping.buttons[t]]=r:d(\"Missing button submesh under mesh with name: \"+n+\"(VALUE: \"+!!r.value+\", PRESSED: \"+!!r.pressed+\", UNPRESSED:\"+!!r.unpressed+\")\"):d(\"Missing button mesh with name: \"+n):u(\"Skipping unknown button at index: \"+t+\" with mapped name: \"+this.mapping.buttons[t]);for(t=0;t\u003Cthis.mapping.axisMeshNames.length;t++)(n=this.mapping.axisMeshNames[t])?(i=s.getObjectByName(n))?(r={index:t,value:a(i,\"VALUE\"),min:a(i,\"MIN\"),max:a(i,\"MAX\")}).value&&r.min&&r.max?o.axisMeshes[t]=r:d(\"Missing axis submesh under mesh with name: \"+n+\"(VALUE: \"+!!r.value+\", MIN: \"+!!r.min+\", MAX:\"+!!r.max+\")\"):d(\"Missing axis mesh with name: \"+n):u(\"Skipping unknown axis at index: \"+t);this.calculateRayOriginFromMesh(s),this.setModelVisibility()}function a(e,t){for(var n=0,i=e.children.length;n\u003Ci;n++){var r=e.children[n];if(r&&r.name===t)return r}}u(\"Model load complete.\")},calculateRayOriginFromMesh:(i=new THREE.Quaternion,function(e){var t;if(this.rayOrigin.origin.set(0,0,0),this.rayOrigin.direction.set(0,0,-1),this.rayOrigin.createdFromMesh=!0,t=e.getObjectByName(this.mapping.pointingPoseMeshName)){var n=e.parent;n&&(e.parent=null,e.updateMatrixWorld(!0),e.parent=n),t.getWorldPosition(this.rayOrigin.origin),t.getWorldQuaternion(i),this.rayOrigin.direction.applyQuaternion(i),n&&e.updateMatrixWorld(!0)}else u(\"Mesh does not contain pointing origin data, defaulting to none.\");this.modelReady()}),lerpAxisTransform:function(){var e=new THREE.Quaternion;return function(t,n){var i=this.loadedMeshInfo.axisMeshes[t];if(i){var r=i.min,s=i.max,o=i.value,a=.5*n+.5;o.setRotationFromQuaternion(e.copy(r.quaternion).slerp(s.quaternion,a)),o.position.lerpVectors(r.position,s.position,a)}}}(),lerpButtonTransform:function(){var e=new THREE.Quaternion;return function(t,n){var i=this.loadedMeshInfo.buttonMeshes[t];if(i){var r=i.unpressed,s=i.pressed,o=i.value;o.setRotationFromQuaternion(e.copy(r.quaternion).slerp(s.quaternion,n)),o.position.lerpVectors(r.position,s.position,n)}}}(),modelReady:function(){this.el.emit(\"controllermodelready\",{name:\"windows-motion-controls\",model:this.data.model,rayOrigin:this.rayOrigin})},onButtonChanged:function(e){var t=this.mapping.buttons[e.detail.id];t&&(this.loadedMeshInfo&&this.loadedMeshInfo.buttonMeshes&&this.lerpButtonTransform(t,e.detail.state.value),this.el.emit(t+\"changed\",e.detail.state))},onAxisMoved:function(e){var t=this.mapping.axisMeshNames.length;if(this.loadedMeshInfo&&this.loadedMeshInfo.axisMeshes)for(var n=0;n\u003Ct;n++)this.lerpAxisTransform(n,e.detail.axis[n]||0);l(this,this.mapping.axes,e)},setModelVisibility:function(e){var t=this.el.getObject3D(\"mesh\");e=void 0!==e?e:this.modelVisible,this.modelVisible=e,t&&(t.visible=e)}})},8309:(e,t,n)=>{e.exports={AFRAME_INJECTED:\"aframe-injected\",DEFAULT_CAMERA_HEIGHT:1.6,DEFAULT_HANDEDNESS:\"right\",keyboardevent:n(5065)}},5065:e=>{e.exports={KEYCODE_TO_CODE:{38:\"ArrowUp\",37:\"ArrowLeft\",40:\"ArrowDown\",39:\"ArrowRight\",87:\"KeyW\",65:\"KeyA\",83:\"KeyS\",68:\"KeyD\"}}},2385:(e,t,n)=>{var i=n(9721).X,r=n(7629),s=n(4219),o=n(2666),a=new o.FileLoader,l=s(\"core:a-assets:warn\");function c(e){if(e.hasAttribute(\"autoplay\")||\"auto\"===e.getAttribute(\"preload\"))return new Promise((function(t,n){if(4===e.readyState)return t();if(e.error)return n();function i(){for(var n=0,i=0;i\u003Ce.buffered.length;i++)n+=e.buffered.end(i)-e.buffered.start(i);n>=e.duration&&(\"VIDEO\"===e.tagName&&o.Cache.add(e.getAttribute(\"src\"),e),t())}e.addEventListener(\"loadeddata\",i,!1),e.addEventListener(\"progress\",i,!1),e.addEventListener(\"error\",n,!1)}))}function h(e){var t=function(e){var t,n,i;if(e.hasAttribute(\"crossorigin\"))return e;if(null!==(t=e.getAttribute(\"src\"))){if(-1===t.indexOf(\"://\"))return e;if((i=(n=t).indexOf(\"://\")>-1?n.split(\"/\")[2]:n.split(\"/\")[0]).substring(0,i.indexOf(\":\"))===window.location.host)return e}return l('Cross-origin element (e.g., \u003Cimg>) was requested without `crossorigin` set. A-Frame will re-request the asset with `crossorigin` attribute set. Please set `crossorigin` on the element (e.g., \u003Cimg crossorigin=\"anonymous\">)',t),e.crossOrigin=\"anonymous\",e.cloneNode(!0)}(e);return t.tagName&&\"video\"===t.tagName.toLowerCase()&&(t.setAttribute(\"playsinline\",\"\"),t.setAttribute(\"webkit-playsinline\",\"\")),t!==e&&(e.parentNode.appendChild(t),e.parentNode.removeChild(e)),t}function u(e){var t=d(e),n=t.lastIndexOf(\".\");return n>=0&&\".glb\"===t.slice(n,e.search(/\\?|#|$/))?\"arraybuffer\":\"text\"}function d(e){var t=document.createElement(\"a\");t.href=e;var n=t.search.replace(/^\\?/,\"\"),i=e.replace(n,\"\").replace(\"?\",\"\");return i.substring(i.lastIndexOf(\"/\")+1)}customElements.define(\"a-assets\",class extends i{constructor(){super(),this.isAssets=!0,this.fileLoader=a,this.timeout=null}connectedCallback(){\"loading\"!==document.readyState?this.doConnectedCallback():document.addEventListener(\"DOMContentLoaded\",this.connectedCallback.bind(this))}doConnectedCallback(){var e,t,n,i,s,a,u=this,d=[];if(super.connectedCallback(),!this.parentNode.isScene)throw new Error(\"\u003Ca-assets> must be a child of a \u003Ca-scene>.\");for(s=this.querySelectorAll(\"img\"),e=0;e\u003Cs.length;e++)i=h(s[e]),d.push(new Promise((function(t,n){o.Cache.add(s[e].getAttribute(\"src\"),i),i.onload=t,i.onerror=n})));for(n=this.querySelectorAll(\"audio, video\"),e=0;e\u003Cn.length;e++)(t=h(n[e])).src||t.srcObject||l(\"Audio/video asset has neither `src` nor `srcObject` attributes.\"),d.push(c(t));Promise.allSettled(d).then(r(this.load,this)),a=parseInt(this.getAttribute(\"timeout\"),10)||3e3,this.timeout=setTimeout((function(){u.hasLoaded||(l(\"Asset loading timed out in \",a,\"ms\"),u.emit(\"timeout\"),u.load())}),a)}disconnectedCallback(){super.disconnectedCallback(),this.timeout&&clearTimeout(this.timeout)}load(){super.load.call(this,null,(function(e){return e.isAssetItem&&e.hasAttribute(\"src\")}))}}),customElements.define(\"a-asset-item\",class extends i{constructor(){super(),this.data=null,this.isAssetItem=!0}connectedCallback(){var e=this,t=this.getAttribute(\"src\");a.setResponseType(this.getAttribute(\"response-type\")||u(t)),a.load(t,(function(t){e.data=t,setTimeout((function(){i.prototype.load.call(e)}))}),(function(t){e.emit(\"progress\",{loadedBytes:t.loaded,totalBytes:t.total,xhr:t})}),(function(t){e.emit(\"error\",{xhr:t})}))}}),e.exports.inferResponseType=u,e.exports.getFileNameFromURL=d},1397:(e,t,n)=>{var i=n(4219)(\"core:cubemap:warn\");class r extends HTMLElement{constructor(e){return(e=super(e)).srcs=e.validate(),e}validate(){var e,t=this.querySelectorAll(\"[src]\"),n=[];if(6===t.length){for(e=0;e\u003Ct.length;e++)n.push(t[e].getAttribute(\"src\"));return n}i(\"\u003Ca-cubemap> did not contain exactly six elements each with a `src` attribute.\")}}customElements.define(\"a-cubemap\",r)},1956:(e,t,n)=>{var i=n(9721).X,r=n(3515).components,s=n(2666),o=n(8903),a=o.debug(\"core:a-entity:debug\"),l=o.debug(\"core:a-entity:warn\"),c=\"__\",h=[\"position\",\"rotation\",\"scale\",\"visible\"],u={once:!0};class d extends i{constructor(){super(),this.components={},this.initializingComponents={},this.componentsToUpdate={},this.isEntity=!0,this.isPlaying=!1,this.object3D=new s.Group,this.object3D.el=this,this.object3DMap={},this.parentEl=null,this.rotationObj={},this.states=[]}attributeChangedCallback(e,t,n){var i=this.components[e];super.attributeChangedCallback(),i&&i.justInitialized&&\"\"===n?delete i.justInitialized:(i||null!==n)&&this.setEntityAttribute(e,t,n)}connectedCallback(){\"loading\"!==document.readyState?d.prototype.doConnectedCallback.call(this):document.addEventListener(\"DOMContentLoaded\",this.connectedCallback.bind(this))}doConnectedCallback(){var e,t,n=this;super.connectedCallback(),t=this.sceneEl,this.addToParent(),this.isScene||(t?!(e=t.querySelector(\"a-assets\"))||e.hasLoaded?this.load():e.addEventListener(\"loaded\",(function(){n.load()})):this.load())}disconnectedCallback(){var e;if(this.parentEl){for(e in this.components)this.removeComponent(e,!1);this.isScene||(this.removeFromParent(),super.disconnectedCallback(),this.object3D.el=null)}}getObject3D(e){return this.object3DMap[e]}setObject3D(e,t){var n,i=this;if(!(t instanceof s.Object3D))throw new Error(\"`Entity.setObject3D` was called with an object that was not an instance of THREE.Object3D.\");(n=this.getObject3D(e))&&this.object3D.remove(n),t.el=this,t.children.length&&t.traverse((function(e){e.el=i})),this.object3D.add(t),this.object3DMap[e]=t,this.emit(\"object3dset\",{object:t,type:e})}removeObject3D(e){var t=this.getObject3D(e);t?(this.object3D.remove(t),delete this.object3DMap[e],this.emit(\"object3dremove\",{type:e})):l(\"Tried to remove `Object3D` of type:\",e,\"which was not defined.\")}getOrCreateObject3D(e,t){var n=this.getObject3D(e);return!n&&t&&(n=new t,this.setObject3D(e,n)),l(\"`getOrCreateObject3D` has been deprecated. Use `setObject3D()` and `object3dset` event instead.\"),n}add(e){if(!e.object3D)throw new Error(\"Trying to add an element that doesn't have an `object3D`\");this.object3D.add(e.object3D),this.emit(\"child-attached\",{el:e})}addToParent(){var e=this.parentEl=this.parentNode;e&&e.add&&!this.attachedToParent&&(e.add(this),this.attachedToParent=!0)}removeFromParent(){var e=this.parentEl;this.parentEl.remove(this),this.attachedToParent=!1,this.parentEl=null,e.emit(\"child-detached\",{el:this})}load(){var e=this;!this.hasLoaded&&this.parentEl&&super.load.call(this,(function(){e.parentEl&&(e.updateComponents(),(e.isScene||e.parentEl.isPlaying)&&e.play())}))}remove(e){e?this.object3D.remove(e.object3D):this.parentNode.removeChild(this)}getChildEntities(){for(var e=this.children,t=[],n=0;n\u003Ce.length;n++){var i=e[n];i instanceof d&&t.push(i)}return t}initComponent(e,t,n){var i,s,l,h;if(h=(l=o.split(e,c))[0],s=l.length>2?l.slice(1).join(\"__\"):l[1],r[h]&&(p(this,e)||void 0!==t||n)&&!(e in this.components)){if(this.initComponentDependencies(h),s&&!r[h].multiple)throw new Error(\"Trying to initialize multiple components of type `\"+h+\"`. There can only be one component of this type per entity.\");i=new r[h].Component(this,t,s),this.isPlaying&&i.play(),this.hasAttribute(e)||(i.justInitialized=!0,window.HTMLElement.prototype.setAttribute.call(this,e,\"\")),a(\"Component initialized: %s\",e)}}initComponentDependencies(e){var t,n;if(r[e]&&(t=r[e].dependencies))for(n=0;n\u003Ct.length;n++)this.initComponent(t[n],window.HTMLElement.prototype.getAttribute.call(this,t[n])||void 0,!0)}removeComponent(e,t){var n;(n=this.components[e])&&(n.initialized?(n.pause(),n.remove(),t&&(n.destroy(),delete this.components[e]),this.emit(\"componentremoved\",n.evtDetail,!1)):this.addEventListener(\"componentinitialized\",(function n(i){i.detail.name===e&&(this.removeComponent(e,t),this.removeEventListener(\"componentinitialized\",n))})))}updateComponents(){var e,t,n,i,r,s,a=this.componentsToUpdate;if(this.hasLoaded){for(n=0;n\u003Cthis.mixinEls.length;n++)for(i in this.mixinEls[n].componentCache)A(i)&&(a[i]=!0);if(this.getExtraComponents)for(i in t=this.getExtraComponents())A(i)&&(a[i]=!0);for(n=0;n\u003Cthis.attributes.length;++n)i=this.attributes[n].name,-1===h.indexOf(i)&&A(i)&&(a[i]=!0);for(n=0;n\u003Ch.length;n++)i=h[n],this.hasAttribute(i)&&this.updateComponent(i,this.getDOMAttribute(i));for(i in a)r=this.getDOMAttribute(i),e=(s=t&&t[i])?s.constructor===Object?o.extend(s,o.styleParser.parse(r||{})):r||s:r,this.updateComponent(i,e),delete a[i]}}updateComponent(e,t,n){var i=this.components[e];if(i)return null!==t||p(this,e)?void i.updateProperties(t,n):void this.removeComponent(e,!0);this.initComponent(e,t,!1)}removeAttribute(e,t){var n=this.components[e];n&&void 0===t&&this.removeComponent(e,!0),n&&void 0!==t?n.resetProperty(t):(\"mixin\"===e&&this.mixinUpdate(\"\"),window.HTMLElement.prototype.removeAttribute.call(this,e))}play(){var e,t,n;if(!this.isPlaying&&this.hasLoaded){for(n in this.isPlaying=!0,this.components)this.components[n].play();for(e=this.getChildEntities(),t=0;t\u003Ce.length;t++)e[t].play();this.emit(\"play\")}}pause(){var e,t,n;if(this.isPlaying){for(n in this.isPlaying=!1,this.components)this.components[n].pause();for(e=this.getChildEntities(),t=0;t\u003Ce.length;t++)e[t].pause();this.emit(\"pause\")}}setEntityAttribute(e,t,n){if(r[e]||this.components[e])this.updateComponent(e,n);else if(\"mixin\"===e){if(n===this.computedMixinStr)return;this.mixinUpdate(n,t)}}mixinUpdate(e,t){var n,i,r,s,o=d.componentsUpdated,a=this;if(this.hasLoaded){for(t=t||this.getAttribute(\"mixin\"),r=this.updateMixins(e,t),o.length=0,s=0;s\u003Cthis.mixinEls.length;s++)for(n in this.mixinEls[s].componentCache)-1===o.indexOf(n)&&(this.components[n]?this.components[n].handleMixinUpdate():this.initComponent(n,null),o.push(n));for(s=0;s\u003Cr.oldMixinIds.length;s++)if(i=document.getElementById(r.oldMixinIds[s]))for(n in i.componentCache)-1===o.indexOf(n)&&this.components[n]&&(this.getDOMAttribute(n)?this.components[n].handleMixinUpdate():this.removeComponent(n,!0))}else this.addEventListener(\"loaded\",(function(){a.mixinUpdate(e,t)}),u)}setAttribute(e,t,n){var i,s,a,l,h,u=d.singlePropUpdate;if(a=(l=e.indexOf(c))>0?e.substring(0,l):e,!r[a])return\"mixin\"===e&&this.mixinUpdate(t),void super.setAttribute.call(this,e,t);if(!this.components[e]&&this.hasAttribute(e)&&this.updateComponent(e,window.HTMLElement.prototype.getAttribute.call(this,e)),void 0!==n&&\"string\"==typeof t&&t.length>0&&\"string\"==typeof o.styleParser.parse(t)){for(h in u)delete u[h];(i=u)[t]=n,s=!1}else i=t,s=!0===n;this.updateComponent(e,i,s),this.sceneEl&&this.sceneEl.getAttribute(\"debug\")&&this.components[e].flushToDOM()}flushToDOM(e){var t,n,i,r=this.components,s=this.children;for(i in r)r[i].flushToDOM();if(e)for(n=0;n\u003Cs.length;++n)(t=s[n]).flushToDOM&&t.flushToDOM(e)}getAttribute(e){var t,n,i,r;return\"position\"===e?this.object3D.position:\"rotation\"===e?(this,n=s.MathUtils.radToDeg,i=this.object3D.rotation,(r=this.rotationObj).x=n(i.x),r.y=n(i.y),r.z=n(i.z),r):\"scale\"===e?this.object3D.scale:\"visible\"===e?this.object3D.visible:(t=this.components[e])?t.data:window.HTMLElement.prototype.getAttribute.call(this,e)}getDOMAttribute(e){var t=this.components[e];return t?t.attrValue:window.HTMLElement.prototype.getAttribute.call(this,e)}addState(e){this.is(e)||(this.states.push(e),this.emit(\"stateadded\",e))}removeState(e){var t=this.states.indexOf(e);-1!==t&&(this.states.splice(t,1),this.emit(\"stateremoved\",e))}is(e){return-1!==this.states.indexOf(e)}inspect(){this.sceneEl.components.inspector.openInspector(this)}destroy(){var e;if(this.parentNode)l(\"Entity can only be destroyed if detached from scenegraph.\");else for(e in this.components)this.components[e].destroy()}}function p(e,t){return!(!e.components[t]||!e.components[t].attrValue)||function(e,t){var n,i=!1;for(n=0;n\u003Ct.length&&!(i=t[n].hasAttribute(e));++n);return i}(t,e.mixinEls)}function A(e){return-1!==e.indexOf(c)&&(e=o.split(e,c)[0]),!!r[e]}d.componentsUpdated=[],d.singlePropUpdate={},customElements.define(\"a-entity\",d),e.exports.F=d},8022:(e,t,n)=>{var i=n(9721).X,r=n(3515).components,s=n(8903);customElements.define(\"a-mixin\",class extends i{constructor(){super(),this.componentCache={},this.isMixin=!0}connectedCallback(){\"loading\"!==document.readyState?this.doConnectedCallback():document.addEventListener(\"DOMContentLoaded\",this.connectedCallback.bind(this))}doConnectedCallback(){super.connectedCallback(),this.sceneEl=this.closestScene(),this.id=this.getAttribute(\"id\"),this.cacheAttributes(),this.updateEntities(),this.load()}attributeChangedCallback(e,t,n){super.attributeChangedCallback(),this.cacheAttribute(e,n),this.updateEntities()}setAttribute(e,t){window.HTMLElement.prototype.setAttribute.call(this,e,t),this.cacheAttribute(e,t)}cacheAttribute(e,t){var n,i;i=s.split(e,\"__\")[0],(n=r[i])&&(void 0===t&&(t=window.HTMLElement.prototype.getAttribute.call(this,e)),this.componentCache[e]=n.parseAttrValueForCache(t))}getAttribute(e){return this.componentCache[e]||window.HTMLElement.prototype.getAttribute.call(this,e)}cacheAttributes(){var e,t,n=this.attributes;for(t=0;t\u003Cn.length;t++)e=n[t].name,this.cacheAttribute(e)}updateEntities(){var e,t,n;if(this.sceneEl)for(t=this.sceneEl.querySelectorAll(\"[mixin~=\"+this.id+\"]\"),n=0;n\u003Ct.length;n++)(e=t[n]).hasLoaded&&!e.isMixin&&e.mixinUpdate(this.id)}})},9721:(e,t,n)=>{var i=n(8903),r=i.debug(\"core:a-node:warn\"),s={\"a-scene\":!0,\"a-assets\":!0,\"a-assets-items\":!0,\"a-cubemap\":!0,\"a-mixin\":!0,\"a-node\":!0,\"a-entity\":!0};function o(e){return e.tagName.toLowerCase()in s||e.isNode}class a extends HTMLElement{constructor(){super(),this.computedMixinStr=\"\",this.hasLoaded=!1,this.isNode=!0,this.mixinEls=[]}connectedCallback(){\"loading\"!==document.readyState?a.prototype.doConnectedCallback.call(this):document.addEventListener(\"DOMContentLoaded\",this.connectedCallback.bind(this))}doConnectedCallback(){var e;this.sceneEl=this.closestScene(),this.sceneEl||r(\"You are attempting to attach \u003C\"+this.tagName+\"> outside of an A-Frame scene. Append this element to `\u003Ca-scene>` instead.\"),this.hasLoaded=!1,this.emit(\"nodeready\",void 0,!1),this.isMixin||(e=this.getAttribute(\"mixin\"))&&this.updateMixins(e)}attributeChangedCallback(e,t,n){n!==this.computedMixinStr&&(\"mixin\"!==e||this.isMixin||this.updateMixins(n,t))}closestScene(){for(var e=this;e&&!e.isScene;)e=e.parentElement;return e}closest(e){for(var t=this.matches||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector,n=this;n&&!t.call(n,e);)n=n.parentElement;return n}disconnectedCallback(){this.hasLoaded=!1}load(e,t){var n,i=this;this.hasLoaded||(t=t||o,n=this.getChildren().filter(t).map((function(e){return new Promise((function(t,n){if(e.hasLoaded)return t();e.addEventListener(\"loaded\",t),e.addEventListener(\"error\",n)}))})),Promise.allSettled(n).then((function(t){t.forEach((function(e){\"rejected\"===e.status&&r(\"Rendering scene with errors on node: \",e.reason.target)})),i.hasLoaded=!0,e&&e(),i.setupMutationObserver(),i.emit(\"loaded\",void 0,!1)})))}setupMutationObserver(){var e=this;new MutationObserver((function(t){var n;for(n=0;n\u003Ct.length;n++)if(\"attributes\"===t[n].type){var i=t[n].attributeName,r=window.HTMLElement.prototype.getAttribute.call(e,i),s=t[n].oldValue;e.attributeChangedCallback(i,s,r)}})).observe(this,{attributes:!0,attributeOldValue:!0})}getChildren(){return Array.prototype.slice.call(this.children,0)}updateMixins(e,t){var n,r,s,o=a.newMixinIdArray,l=a.oldMixinIdArray,c=a.mixinIds;for(o.length=0,l.length=0,r=e?i.split(e.trim(),/\\s+/):o,s=t?i.split(t.trim(),/\\s+/):l,c.newMixinIds=r,c.oldMixinIds=s,n=0;n\u003Cs.length;n++)-1===r.indexOf(s[n])&&this.unregisterMixin(s[n]);for(this.computedMixinStr=\"\",this.mixinEls.length=0,n=0;n\u003Cr.length;n++)this.registerMixin(document.getElementById(r[n]));return this.computedMixinStr&&(this.computedMixinStr=this.computedMixinStr.trim(),window.HTMLElement.prototype.setAttribute.call(this,\"mixin\",this.computedMixinStr)),c}registerMixin(e){var t,n,r;if(e){if(r=e.getAttribute(\"mixin\"))for(t=i.split(r.trim(),/\\s+/),n=0;n\u003Ct.length;n++)this.registerMixin(document.getElementById(t[n]));this.computedMixinStr=this.computedMixinStr+\" \"+e.id,this.mixinEls.push(e)}}setAttribute(e,t){\"mixin\"===e&&this.updateMixins(t),window.HTMLElement.prototype.setAttribute.call(this,e,t)}unregisterMixin(e){var t,n=this.mixinEls;for(t=0;t\u003Cn.length;++t)if(e===n[t].id){n.splice(t,1);break}}emit(e,t,n,r){var s=a.evtData;void 0===n&&(n=!0),s.bubbles=!!n,s.detail=t,r&&(s=i.extend({},r,s)),this.dispatchEvent(new CustomEvent(e,s))}}a.evtData={},a.newMixinIdArray=[],a.oldMixinIdArray=[],a.mixinIds={},customElements.define(\"a-node\",a),e.exports.X=a,e.exports.U=s},3515:(e,t,n)=>{var i=n(5941),r=n(1435),s=n(365),o=n(8903),a=e.exports.components={},l=i.parseProperties,c=i.parseProperty,h=i.process,u=i.isSingleProperty,d=i.stringifyProperties,p=i.stringifyProperty,A=o.styleParser,f=o.debug(\"core:component:warn\"),m=document.currentScript,g=new RegExp(\"[A-Z]+\"),v={},y=e.exports.Component=function(e,t,n){var i=this;this.el=e,this.id=n,this.attrName=this.name+(n?\"__\"+n:\"\"),this.evtDetail={id:this.id,name:this.name},this.initialized=!1,this.isSingleProperty=u(this.schema),this.isSinglePropertyObject=this.isSingleProperty&&C(c(void 0,this.schema))&&!(this.schema.default instanceof window.HTMLElement),this.isObjectBased=!this.isSingleProperty||this.isSinglePropertyObject,this.el.components[this.attrName]=this,this.objectPool=v[this.name];var r=this.events;this.events={},function(e,t){var n;for(n in t)e.events[n]=t[n].bind(e)}(this,r),this.attrValue=void 0,this.isObjectBased?(this.nextData=this.objectPool.use(),o.objectPool.removeUnusedKeys(this.nextData,this.schema),this.oldData=this.objectPool.use(),o.objectPool.removeUnusedKeys(this.oldData,this.schema),this.previousOldData=this.objectPool.use(),o.objectPool.removeUnusedKeys(this.previousOldData,this.schema),this.parsingAttrValue=this.objectPool.use(),o.objectPool.removeUnusedKeys(this.parsingAttrValue,this.schema)):(this.nextData=void 0,this.oldData=void 0,this.previousOldData=void 0,this.parsingAttrValue=void 0),this.throttledEmitComponentChanged=o.throttleLeadingAndTrailing((function(){e.emit(\"componentchanged\",i.evtDetail,!1)}),200),this.updateProperties(t)};if(y.prototype={schema:{},init:function(){},events:{},update:function(e){},updateSchema:void 0,tick:void 0,tock:void 0,play:function(){},pause:function(){},remove:function(){},parse:function(e,t){var n=this.schema;return this.isSingleProperty?c(e,n):l(A.parse(e),n,!0,this.name,t)},stringify:function(e){var t=this.schema;return\"string\"==typeof e?e:this.isSingleProperty?p(e,t):(e=d(e,t),A.stringify(e))},updateCachedAttrValue:function(e,t){var n,i,r;if(void 0!==e){if(null===e)return this.isObjectBased&&this.attrValue&&this.objectPool.recycle(this.attrValue),void(this.attrValue=void 0);if(e instanceof Object&&!(e instanceof window.HTMLElement)?(i=this.objectPool.use(),n=o.extend(i,e)):n=this.parseAttrValueForCache(e),this.isObjectBased&&!t&&this.attrValue)for(r in this.attrValue)void 0===n[r]&&(n[r]=this.attrValue[r]);this.isObjectBased&&!this.attrValue&&(this.attrValue=this.objectPool.use()),o.objectPool.clearObject(this.attrValue),this.attrValue=x(this.attrValue,n,this.isObjectBased),o.objectPool.clearObject(i)}},parseAttrValueForCache:function(e){var t;return\"string\"!=typeof e?e:(this.isSingleProperty?\"string\"==typeof(t=this.schema.parse(e))&&(t=e):(o.objectPool.clearObject(this.parsingAttrValue),t=A.parse(e,this.parsingAttrValue)),t)},flushToDOM:function(e){var t=e?this.data:this.attrValue;null!=t&&window.HTMLElement.prototype.setAttribute.call(this.el,this.attrName,this.stringify(t))},updateProperties:function(e,t){this.el.hasLoaded?(null!==e&&(e=this.parseAttrValueForCache(e)),this.updateCachedAttrValue(e,t),this.initialized?(this.updateComponent(e,t),this.callUpdateHandler()):this.initComponent()):this.updateCachedAttrValue(e)},initComponent:function(){var e,t=this.el;this.updateSchema&&this.updateSchema(this.buildData(this.attrValue,!1,!0)),this.data=this.buildData(this.attrValue),t.initializingComponents[this.name]||(t.initializingComponents[this.name]=!0,this.init(),this.initialized=!0,delete t.initializingComponents[this.name],this.oldData=x(this.oldData,this.data,this.isObjectBased),e=this.isObjectBased?this.objectPool.use():void 0,this.update(e),this.isObjectBased&&this.objectPool.recycle(e),t.isPlaying&&this.play(),t.emit(\"componentinitialized\",this.evtDetail,!1))},updateComponent:function(e,t){var n,i;if(t)return this.updateSchema&&this.updateSchema(this.buildData(this.attrValue,!0,!0)),void(this.data=this.buildData(this.attrValue,!0,!1));if(this.isSingleProperty)return this.isObjectBased&&c(e,this.schema),void(this.data=e);if(l(e,this.schema,!0,this.name),this.schemaChangeKeys.length)for(n in e)if(this.schema[n].schemaChange){i=!0;break}if(i)return this.updateSchema&&this.updateSchema(this.buildData(this.attrValue,!0,!0)),void(this.data=this.buildData(this.attrValue,!0,!1));for(n in e)void 0!==e[n]&&(this.data[n]=e[n])},callUpdateHandler:function(){var e;this.previousOldData instanceof Object&&o.objectPool.clearObject(this.previousOldData),this.isObjectBased?b(this.previousOldData,this.oldData):this.previousOldData=this.oldData,e=!o.deepEqual(this.oldData,this.data),(this.isPositionRotationScale||e)&&(this.oldData instanceof Object&&o.objectPool.clearObject(this.oldData),this.oldData=x(this.oldData,this.data,this.isObjectBased),this.update(this.previousOldData),this.throttledEmitComponentChanged())},handleMixinUpdate:function(){this.data=this.buildData(this.attrValue),this.callUpdateHandler()},resetProperty:function(e){if(this.isObjectBased){if(!(e in this.attrValue))return;delete this.attrValue[e],this.data[e]=this.schema[e].default}else this.attrValue=this.schema.default,this.data=this.schema.default;this.updateProperties(this.attrValue)},extendSchema:function(e){var t;t=o.extend({},a[this.name].schema),o.extend(t,e),this.schema=h(t),this.el.emit(\"schemachanged\",this.evtDetail)},buildData:function(e,t,n){var i,r,s,a,h,u,d,p=this.nextData,A=this.schema,f=this.el.mixinEls;if(i=e&&e.constructor===Array?e.length:null!=e,this.isObjectBased&&o.objectPool.clearObject(p),this.isSingleProperty)r=this.isObjectBased?b(p,A.default):M(A.default)?o.clone(A.default):A.default;else for(a in r=(d=!t&&this.attrValue)instanceof Object?b(p,d):p,A)s=A[a].default,void 0===r[a]&&(r[a]=M(s)?o.clone(s):s);for(u=0;u\u003Cf.length;u++)(h=f[u].getAttribute(this.attrName))&&(r=x(r,h,this.isObjectBased));if(i){if(this.isSingleProperty)return C(e)?(b(this.parsingAttrValue,e),c(this.parsingAttrValue,A)):c(e,A);r=x(r,e,this.isObjectBased)}else if(this.isSingleProperty)return c(r,A);return l(r,A,void 0,this.name,n)},eventsAttach:function(){var e;for(e in this.eventsDetach(),this.events)this.el.addEventListener(e,this.events[e])},eventsDetach:function(){var e;for(e in this.events)this.el.removeEventListener(e,this.events[e])},destroy:function(){this.objectPool.recycle(this.attrValue),this.objectPool.recycle(this.oldData),this.objectPool.recycle(this.parsingAttrValue),this.attrValue=this.oldData=this.parsingAttrValue=void 0}},window.debug)var E=e.exports.registrationOrderWarnings={};function b(e,t){var n,i;for(i in t)void 0!==t[i]&&(n=t[i],e[i]=M(n)?o.clone(n):n);return e}function x(e,t,n){var i;if(n&&t.constructor===Object){for(i in t)void 0!==t[i]&&(t[i]&&t[i].constructor===Object?e[i]=o.clone(t[i]):e[i]=t[i]);return e}return t}function w(e){return e.tick||e.tock}function C(e){return e&&e.constructor===Object&&!(e instanceof window.HTMLElement)}function M(e){return e&&(e.constructor===Object||e.constructor===Array)&&!(e instanceof window.HTMLElement)}e.exports.registerComponent=function(e,t){var n,i,l,c,d,p,A={};if(document.currentScript&&document.currentScript!==m&&r.forEach((function(t){t.hasLoaded||document.currentScript.compareDocumentPosition(t)!==Node.DOCUMENT_POSITION_FOLLOWING&&(f(\"The component `\"+e+\"` was registered in a \u003Cscript> tag after the scene. Component \u003Cscript> tags in an HTML file should be declared *before* the scene such that the component is available to entities during scene initialization.\"),window.debug&&(E[e]=!0))})),!0===g.test(e)&&f(\"The component name `\"+e+\"` contains uppercase characters, but HTML will ignore the capitalization of attribute names. Change the name to be lowercase: `\"+e.toLowerCase()+\"`\"),-1!==e.indexOf(\"__\"))throw new Error(\"The component name `\"+e+\"` is not allowed. The sequence __ (double underscore) is reserved to specify an id for multiple components of the same type\");if(Object.keys(t).forEach((function(e){A[e]={value:t[e],writable:!0}})),a[e])throw new Error(\"The component `\"+e+\"` has been already registered. Check that you are not loading two versions of the same component or two different components of the same name.\");if(((n=function(e,t,n){y.call(this,e,t,n)}).prototype=Object.create(y.prototype,A)).name=e,n.prototype.isPositionRotationScale=\"position\"===e||\"rotation\"===e||\"scale\"===e,n.prototype.constructor=n,n.prototype.system=s&&s.systems[e],n.prototype.play=(d=n.prototype.play,function(){var e=this.el.sceneEl,t=this.el.isPlaying&&!this.isPlaying;this.initialized&&t&&(d.call(this),this.isPlaying=!0,this.eventsAttach(),w(this)&&e.addBehavior(this))}),n.prototype.pause=(p=n.prototype.pause,function(){var e=this.el.sceneEl;this.isPlaying&&(p.call(this),this.isPlaying=!1,this.eventsDetach(),w(this)&&e.removeBehavior(this))}),l=o.extend(h(n.prototype.schema,n.prototype.name)),!(c=u(n.prototype.schema)))for(i in n.prototype.schemaChangeKeys=[],l)l[i].schemaChange&&n.prototype.schemaChangeKeys.push(i);return v[e]=o.objectPool.createPool(),a[e]={Component:n,dependencies:n.prototype.dependencies,isSingleProp:c,multiple:n.prototype.multiple,name:e,parse:n.prototype.parse,parseAttrValueForCache:n.prototype.parseAttrValueForCache,schema:l,stringify:n.prototype.stringify,type:n.prototype.type},n}},4863:(e,t,n)=>{var i=n(5941).process,r=e.exports.xZ={},s=e.exports.ib=[],o=n(2666),a=function(){};a.prototype={schema:{},init:function(e){return this.geometry=new o.BufferGeometry,this.geometry},update:function(e){}},e.exports.dZ=function(e,t){var n,o={};if(Object.keys(t).forEach((function(e){o[e]={value:t[e],writable:!0}})),r[e])throw new Error(\"The geometry `\"+e+\"` has been already registered\");return((n=function(){a.call(this)}).prototype=Object.create(a.prototype,o)).name=e,n.prototype.constructor=n,r[e]={Geometry:n,schema:i(n.prototype.schema)},s.push(e),n}},8813:(e,t,n)=>{var i=n(395),r=n(695),s=r(\"core:propertyTypes:warn\"),o=r(\"core:propertyTypes:warn\"),a=e.exports.propertyTypes={},l=/[,> .[\\]:]/,c=/\\url\\((.+)\\)/;function h(e,t,n,i){\"type\"in a?s(\"Property type \"+e+\" is already registered.\"):a[e]={default:t,parse:n||d,stringify:i||p}}function u(e){var t,n;return\"string\"!=typeof e?e:(n=e.match(c))?n[1]:\"#\"===e.charAt(0)?(t=document.getElementById(e.substring(1)))?\"CANVAS\"===t.tagName||\"VIDEO\"===t.tagName||\"IMG\"===t.tagName?t:t.getAttribute(\"src\"):void o('\"'+e+'\" asset not found.'):e}function d(e){return e}function p(e){return null===e?\"null\":e.toString()}function A(e){return parseInt(e,10)}function f(e){return i.parse(e,this.default)}function m(e,t){if(null===e)return!0;if(\"object\"!=typeof e)return!1;if(Object.keys(e).length!==t)return!1;var n=e.x,i=e.y,r=e.z,s=e.w;return!(\"number\"!=typeof n||\"number\"!=typeof i||t>2&&\"number\"!=typeof r||t>3&&\"number\"!=typeof s)}h(\"audio\",\"\",u),h(\"array\",[],(function(e){return Array.isArray(e)?e:e&&\"string\"==typeof e?e.split(\",\").map((function(e){return e.trim()})):[]}),(function(e){return e.join(\", \")})),h(\"asset\",\"\",u),h(\"boolean\",!1,(function(e){return\"false\"!==e&&!1!==e})),h(\"color\",\"#FFF\",d,p),h(\"int\",0,A),h(\"number\",0,(function(e){return parseFloat(e,10)})),h(\"map\",\"\",u),h(\"model\",\"\",u),h(\"selector\",null,(function(e){return e?\"string\"!=typeof e?e:\"#\"!==e[0]||l.test(e)?document.querySelector(e):document.getElementById(e.substring(1)):null}),(function(e){return e.getAttribute?\"#\"+e.getAttribute(\"id\"):p(e)})),h(\"selectorAll\",null,(function(e){return e?\"string\"!=typeof e?e:Array.prototype.slice.call(document.querySelectorAll(e),0):null}),(function(e){return e instanceof Array?e.map((function(e){return\"#\"+e.getAttribute(\"id\")})).join(\", \"):p(e)})),h(\"src\",\"\",(function(e){return o(\"`src` property type is deprecated. Use `asset` instead.\"),u(e)})),h(\"string\",\"\",d,p),h(\"time\",0,A),h(\"vec2\",{x:0,y:0},f,i.stringify),h(\"vec3\",{x:0,y:0,z:0},f,i.stringify),h(\"vec4\",{x:0,y:0,z:0,w:1},f,i.stringify),e.exports.registerPropertyType=h,e.exports.isValidDefaultValue=function(e,t){return(\"audio\"!==e||\"string\"==typeof t)&&!(\"array\"===e&&!Array.isArray(t))&&(\"asset\"!==e||\"string\"==typeof t)&&(\"boolean\"!==e||\"boolean\"==typeof t)&&(\"color\"!==e||\"string\"==typeof t)&&(\"int\"!==e||\"number\"==typeof t)&&(\"number\"!==e||\"number\"==typeof t)&&(\"map\"!==e||\"string\"==typeof t)&&(\"model\"!==e||\"string\"==typeof t)&&(\"selector\"!==e||\"string\"==typeof t||null===t)&&(\"selectorAll\"!==e||\"string\"==typeof t||null===t)&&(\"src\"!==e||\"string\"==typeof t)&&(\"string\"!==e||\"string\"==typeof t)&&(\"time\"!==e||\"number\"==typeof t)&&(\"vec2\"===e?m(t,2):\"vec3\"===e?m(t,3):\"vec4\"!==e||m(t,4))},e.exports.isValidDefaultCoordinate=m},6450:(e,t,n)=>{var i=n(770).f,r=n(9035),s=n(4713),o=n(1435),a=n(365).systems,l=n(2666),c=n(8903),h=n(1956).F,u=n(9721).X,d=n(8225),p=c.bind,A=c.device.isIOS(),f=c.device.isMobile(),m=c.device.isWebXRAvailable,g=c.debug(\"core:a-scene:warn\");A&&n(9609);class v extends h{constructor(){var e;super(),(e=this).clock=new l.Clock,e.isIOS=A,e.isMobile=f,e.hasWebXR=m,e.isAR=!1,e.isScene=!0,e.object3D=new l.Scene,e.object3D.onAfterRender=function(t,n,i){e.isPlaying&&e.tock(e.time,e.delta,i)},e.resize=p(e.resize,e),e.render=p(e.render,e),e.systems={},e.systemNames=[],e.time=e.delta=0,e.behaviors={tick:[],tock:[]},e.hasLoaded=!1,e.isPlaying=!1,e.originalHTML=e.innerHTML}addFullScreenStyles(){document.documentElement.classList.add(\"a-fullscreen\")}removeFullScreenStyles(){document.documentElement.classList.remove(\"a-fullscreen\")}connectedCallback(){\"loading\"!==document.readyState?this.doConnectedCallback():document.addEventListener(\"DOMContentLoaded\",this.connectedCallback.bind(this))}doConnectedCallback(){var e=this,t=this.hasAttribute(\"embedded\");this.setAttribute(\"inspector\",\"\"),this.setAttribute(\"keyboard-shortcuts\",\"\"),this.setAttribute(\"screenshot\",\"\"),this.setAttribute(\"vr-mode-ui\",\"\"),this.setAttribute(\"device-orientation-permission-ui\",\"\"),super.connectedCallback(),function(e){var t;function n(){document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||e.exitVR(),document.activeElement.blur(),document.body.focus()}(t=document.createElement(\"canvas\")).classList.add(\"a-canvas\"),t.dataset.aframeCanvas=!0,e.appendChild(t),document.addEventListener(\"fullscreenchange\",n),document.addEventListener(\"mozfullscreenchange\",n),document.addEventListener(\"webkitfullscreenchange\",n),document.addEventListener(\"MSFullscreenChange\",n),t.addEventListener(\"touchmove\",(function(e){e.preventDefault()})),e.canvas=t,e.emit(\"render-target-loaded\",{target:t}),setTimeout(p(e.resize,e),0)}(this),this.setupRenderer(),s.setup(this,E),this.resize(),t||this.addFullScreenStyles(),d(this),i(this),r(this),this.onVRPresentChangeBound=p(this.onVRPresentChange,this),window.addEventListener(\"vrdisplaypresentchange\",this.onVRPresentChangeBound),this.enterVRBound=function(){e.enterVR()},this.exitVRBound=function(){e.exitVR()},this.exitVRTrueBound=function(){e.exitVR(!0)},this.pointerRestrictedBound=function(){e.pointerRestricted()},this.pointerUnrestrictedBound=function(){e.pointerUnrestricted()},m||(window.addEventListener(\"vrdisplaydeactivate\",this.exitVRBound),window.addEventListener(\"vrdisplaydisconnect\",this.exitVRTrueBound),window.addEventListener(\"vrdisplaypointerrestricted\",this.pointerRestrictedBound),window.addEventListener(\"vrdisplaypointerunrestricted\",this.pointerUnrestrictedBound)),window.addEventListener(\"sessionend\",this.resize),this.addEventListener(\"cameraready\",(function(){e.attachedCallbackPostCamera()})),this.initSystems(),this.hasWebXR&&navigator.xr&&navigator.xr.addEventListener&&navigator.xr.addEventListener(\"sessiongranted\",(function(){e.enterVR()}))}attachedCallbackPostCamera(){var e=this;window.addEventListener(\"load\",void 0),window.addEventListener(\"resize\",(function(){e.isIOS?setTimeout(e.resize,100):e.resize()})),this.play(),o.push(this)}initSystems(){var e;for(e in this.initSystem(\"camera\"),a)\"camera\"!==e&&this.initSystem(e)}initSystem(e){this.systems[e]||(this.systems[e]=new a[e](this),this.systemNames.push(e))}disconnectedCallback(){var e=o.indexOf(this);super.disconnectedCallback(),o.splice(e,1),window.removeEventListener(\"vrdisplaypresentchange\",this.onVRPresentChangeBound),window.removeEventListener(\"vrdisplayactivate\",this.enterVRBound),window.removeEventListener(\"vrdisplaydeactivate\",this.exitVRBound),window.removeEventListener(\"vrdisplayconnect\",this.enterVRBound),window.removeEventListener(\"vrdisplaydisconnect\",this.exitVRTrueBound),window.removeEventListener(\"vrdisplaypointerrestricted\",this.pointerRestrictedBound),window.removeEventListener(\"vrdisplaypointerunrestricted\",this.pointerUnrestrictedBound),window.removeEventListener(\"sessionend\",this.resize),this.renderer.dispose()}addBehavior(e){var t,n,i=this.behaviors;for(n in i)e[n]&&-1===(t=this.behaviors[n]).indexOf(e)&&t.push(e)}getPointerLockElement(){return document.pointerLockElement}checkHeadsetConnected(){return c.device.checkHeadsetConnected()}enterAR(){var e;if(!this.hasWebXR)throw e=\"Failed to enter AR mode, WebXR not supported.\",new Error(e);if(!c.device.checkARSupport())throw e=\"Failed to enter AR, WebXR immersive-ar mode not supported in your browser or device.\",new Error(e);return this.enterVR(!0)}enterVR(e){var t,n,i=this,r=i.renderer.xr;if(this.is(\"vr-mode\"))return Promise.resolve(\"Already in VR.\");if(this.checkHeadsetConnected()||this.isMobile){var s=i.getAttribute(\"renderer\");if(r.enabled=!0,this.hasWebXR){this.xrSession&&this.xrSession.removeEventListener(\"end\",this.exitVRBound);var o=this.sceneEl.systems.webxr.sessionReferenceSpaceType;r.setReferenceSpaceType(o);var a=e?\"immersive-ar\":\"immersive-vr\";return n=this.sceneEl.systems.webxr.sessionConfiguration,new Promise((function(e,t){navigator.xr.requestSession(a,n).then((function(t){i.xrSession=t,r.layersEnabled=-1!==n.requiredFeatures.indexOf(\"layers\"),r.setSession(t).then((function(){r.setFoveation(s.foveationLevel)})),t.addEventListener(\"end\",i.exitVRBound),h(e)}),(function(e){throw new Error(\"Failed to enter \"+(\"immersive-ar\"===a?\"AR\":\"VR\")+\" mode (`requestSession`) \"+e)}))}))}if(t=c.device.getVRDisplay(),r.setDevice(t),t.isPresenting&&!window.hasNativeWebVRImplementation)return h(),Promise.resolve();var l={highRefreshRate:s.highRefreshRate};return t.requestPresent([{source:this.canvas,attributes:l}]).then(h,(function(e){throw i.removeState(\"vr-mode\"),e&&e.message?new Error(\"Failed to enter VR mode (`requestPresent`): \"+e.message):new Error(\"Failed to enter VR mode (`requestPresent`).\")}))}return h(),Promise.resolve();function h(t){var n,r;window.hasNativeWebVRImplementation&&!window.hasNativeWebXRImplementation&&(n=new CustomEvent(\"vrdisplaypresentchange\",{detail:{display:c.device.getVRDisplay()}}),window.dispatchEvent(n)),e?i.addState(\"ar-mode\"):i.addState(\"vr-mode\"),i.emit(\"enter-vr\",{target:i}),!m&&i.isMobile&&screen.orientation&&screen.orientation.lock&&screen.orientation.lock(\"landscape\"),i.addFullScreenStyles(),i.isMobile||i.checkHeadsetConnected()||((r=i.canvas).requestFullscreen||r.webkitRequestFullscreen||r.mozRequestFullScreen||r.msRequestFullscreen).apply(r,[{navigationUI:\"hide\"}]),i.resize(),t&&t()}}exitVR(){var e,t=this,n=this.renderer.xr;if(!this.is(\"vr-mode\")&&!this.is(\"ar-mode\"))return Promise.resolve(\"Not in immersive mode.\");if(this.checkHeadsetConnected()||this.isMobile){if(n.enabled=!1,e=c.device.getVRDisplay(),this.hasWebXR)this.xrSession.removeEventListener(\"end\",this.exitVRBound),this.xrSession.end().then((function(){}),(function(){})),this.xrSession=void 0,n.setSession(null);else if(e.isPresenting)return e.exitPresent().then(i,(function(e){throw e&&e.message?new Error(\"Failed to exit VR mode (`exitPresent`): \"+e.message):new Error(\"Failed to exit VR mode (`exitPresent`).\")}))}else(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement)&&(document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen());return i(),Promise.resolve();function i(){t.removeState(\"vr-mode\"),t.removeState(\"ar-mode\"),t.isMobile&&screen.orientation&&screen.orientation.unlock&&screen.orientation.unlock(),t.hasAttribute(\"embedded\")&&t.removeFullScreenStyles(),t.resize(),t.isIOS&&c.forceCanvasResizeSafariMobile(t.canvas),t.renderer.setPixelRatio(window.devicePixelRatio),t.emit(\"exit-vr\",{target:t})}}pointerRestricted(){if(this.canvas){var e=this.getPointerLockElement();e&&e!==this.canvas&&document.exitPointerLock&&document.exitPointerLock(),this.canvas.requestPointerLock&&this.canvas.requestPointerLock()}}pointerUnrestricted(){var e=this.getPointerLockElement();e&&e===this.canvas&&document.exitPointerLock&&document.exitPointerLock()}onVRPresentChange(e){var t=e.display||e.detail.display;t&&t.isPresenting?this.enterVR():this.exitVR()}getAttribute(e){var t=this.systems[e];return t?t.data:h.prototype.getAttribute.call(this,e)}getComputedAttribut(e){g(\"`getComputedAttribute` is deprecated. Use `getAttribute` instead.\"),this.getAttribute(e)}getDOMAttribute(e){var t=this.systems[e];return t?t.data:h.prototype.getDOMAttribute.call(this,e)}setAttribute(e,t,n){var i=this.systems[e];if(i)return u.prototype.setAttribute.call(this,e,t),void i.updateProperties(t);h.prototype.setAttribute.call(this,e,t,n)}removeBehavior(e){var t,n,i,r=this.behaviors;for(n in r)e[n]&&-1!==(i=(t=this.behaviors[n]).indexOf(e))&&t.splice(i,1)}resize(){var e,t,n=this.camera,i=this.canvas,r=this.renderer.xr.isPresenting;e=this.renderer.xr.enabled&&r,!n||!i||this.is(\"vr-mode\")&&(this.isMobile||e)||(t=E(i,this.getAttribute(\"embedded\")&&!this.is(\"vr-mode\"),this.maxCanvasSize,this.is(\"vr-mode\")),n.aspect=t.width/t.height,n.updateProjectionMatrix(),this.renderer.setSize(t.width,t.height,!1),this.emit(\"rendererresize\",null,!1))}setupRenderer(){var e,t,n,i,r=this;i={alpha:!0,antialias:!f,canvas:this.canvas,logarithmicDepthBuffer:!1,powerPreference:\"high-performance\"},this.maxCanvasSize={height:1920,width:1920},this.hasAttribute(\"renderer\")&&(n=this.getAttribute(\"renderer\"),(t=c.styleParser.parse(n)).precision&&(i.precision=t.precision+\"p\"),t.antialias&&\"auto\"!==t.antialias&&(i.antialias=\"true\"===t.antialias),t.logarithmicDepthBuffer&&\"auto\"!==t.logarithmicDepthBuffer&&(i.logarithmicDepthBuffer=\"true\"===t.logarithmicDepthBuffer),t.alpha&&(i.alpha=\"true\"===t.alpha),this.maxCanvasSize={width:t.maxCanvasWidth?parseInt(t.maxCanvasWidth):this.maxCanvasSize.width,height:t.maxCanvasHeight?parseInt(t.maxCanvasHeight):this.maxCanvasSize.height}),(e=this.renderer=new l.WebGLRenderer(i)).setPixelRatio(window.devicePixelRatio),e.sortObjects=!1,this.camera&&e.xr.setPoseTarget(this.camera.el.object3D),this.addEventListener(\"camera-set-active\",(function(){e.xr.setPoseTarget(r.camera.el.object3D)}))}play(){var e=this,t=this;this.renderStarted?h.prototype.play.call(this):(this.addEventListener(\"loaded\",(function(){var e,n=this.renderer,i=this.renderer.xr;h.prototype.play.call(this),t.renderStarted||(t.resize(),t.renderer&&(window.performance&&window.performance.mark(\"render-started\"),s.remove(),(e=c.device.getVRDisplay())&&e.isPresenting&&(i.setDevice(e),i.enabled=!0,t.enterVR()),n.setAnimationLoop(this.render),t.renderStarted=!0,t.emit(\"renderstart\")))})),setTimeout((function(){h.prototype.load.call(e)})))}updateComponent(e){e in a||h.prototype.updateComponent.apply(this,arguments)}tick(e,t){var n,i=this.systems;for(n=0;n\u003Cthis.behaviors.tick.length;n++)this.behaviors.tick[n].el.isPlaying&&this.behaviors.tick[n].tick(e,t);for(n=0;n\u003Cthis.systemNames.length;n++)i[this.systemNames[n]].tick&&i[this.systemNames[n]].tick(e,t)}tock(e,t,n){var i,r=this.systems;for(i=0;i\u003Cthis.behaviors.tock.length;i++)this.behaviors.tock[i].el.isPlaying&&this.behaviors.tock[i].tock(e,t,n);for(i=0;i\u003Cthis.systemNames.length;i++)r[this.systemNames[i]].tock&&r[this.systemNames[i]].tock(e,t,n)}render(e,t){var n=this.renderer;this.frame=t,this.delta=1e3*this.clock.getDelta(),this.time=1e3*this.clock.elapsedTime,this.isPlaying&&this.tick(this.time,this.delta);var i=null;this.is(\"ar-mode\")&&(i=this.object3D.background,this.object3D.background=null),n.render(this.object3D,this.camera),i&&(this.object3D.background=i)}}function y(e,t){var n,i=window.devicePixelRatio;return!t||-1===t.width&&-1===t.height||e.width*i\u003Ct.width&&e.height*i\u003Ct.height||(n=e.width/e.height,e.width*i>t.width&&-1!==t.width&&(e.width=Math.round(t.width/i),e.height=Math.round(t.width/n/i)),e.height*i>t.height&&-1!==t.height&&(e.height=Math.round(t.height/i),e.width=Math.round(t.height*n/i))),e}function E(e,t,n,i){return e.parentElement?t?y({height:e.parentElement.offsetHeight,width:e.parentElement.offsetWidth},n):function(e,t){var n;return n={height:document.body.offsetHeight,width:document.body.offsetWidth},t?n:y(n,e)}(n,i):{height:0,width:0}}window.customElements.define(\"a-scene\",v),e.exports.Q=v},4713:(e,t,n)=>{var i,r,s,o=n(8903).styleParser,a=\"loading-screen\";function l(e){var t=i.hasAttribute(\"embedded\"),n=s(i.canvas,t,i.maxCanvasSize,i.is(\"vr-mode\"));e.aspect=n.width/n.height,e.updateProjectionMatrix(),i.renderer.setSize(n.width,n.height,!1)}e.exports.setup=function(e,t){s=t;var n,c,h,u,d,p,A,f,m,g,v=(i=e).hasAttribute(a)?o.parse(i.getAttribute(a)):void 0,y=v&&v.dotsColor||\"white\",E=v&&v.backgroundColor||\"#24CAFF\";(void 0===v||\"true\"===v.enabled||void 0===v.enabled)&&(n=new THREE.Scene,c=new THREE.SphereGeometry(.2,36,18,0,2*Math.PI,0,Math.PI),h=new THREE.MeshBasicMaterial({color:y}),u=new THREE.Mesh(c,h),d=u.clone(),p=u.clone(),A=new THREE.PerspectiveCamera(80,window.innerWidth/window.innerHeight,5e-4,1e4),f=new THREE.Clock,m=0,g=function(){i.renderer.render(n,A),m=f.getElapsedTime()%4,u.visible=m>=1,d.visible=m>=2,p.visible=m>=3},n.background=new THREE.Color(E),n.add(A),u.position.set(-1,0,-15),d.position.set(0,0,-15),p.position.set(1,0,-15),A.add(u),A.add(d),A.add(p),(r=document.createElement(\"div\")).className=\"a-loader-title\",r.innerHTML=document.title,r.style.display=\"none\",i.appendChild(r),setTimeout((function(){i.hasLoaded||(l(A),r.style.display=\"block\",window.addEventListener(\"resize\",(function(){l(A)})),i.renderer.setAnimationLoop(g))}),200))},e.exports.remove=function(){window.removeEventListener(\"resize\",l),r&&(r.style.display=\"none\")}},770:(e,t,n)=>{var i,r=n(8309),s=n(8903).extend,o=[l({name:\"viewport\",content:\"width=device-width,initial-scale=1,maximum-scale=1,shrink-to-fit=no,user-scalable=no,minimal-ui,viewport-fit=cover\"}),l({name:\"mobile-web-app-capable\",content:\"yes\"}),l({name:\"theme-color\",content:\"black\"})],a=[l({name:\"apple-mobile-web-app-capable\",content:\"yes\"}),l({name:\"apple-mobile-web-app-status-bar-style\",content:\"black\"}),(i={rel:\"apple-touch-icon\",href:\"https://aframe.io/images/aframe-logo-152.png\"},{tagName:\"link\",attributes:i,exists:function(){return document.querySelector('link[rel=\"'+i.rel+'\"]')}})];function l(e){return{tagName:\"meta\",attributes:e,exists:function(){return document.querySelector('meta[name=\"'+e.name+'\"]')}}}e.exports.f=function(e){var t,n=document.head,i=n.querySelector(\"script\"),l=[];return o.forEach(c),e.isIOS&&a.forEach(c),l;function c(e){e&&!e.exists()&&(t=function(e){if(e&&e.tagName){var t=document.createElement(e.tagName);return t.setAttribute(r.AFRAME_INJECTED,\"\"),s(t,e.attributes)}}(e),t&&(i?i.parentNode.insertBefore(t,i):n.appendChild(t),l.push(t)))}}},8225:(e,t,n)=>{var i=n(7629),r=n(8903).isIframed;function s(e){if(e.data&&\"vr\"===e.data.type)switch(e.data.data){case\"enter\":this.enterVR();break;case\"exit\":this.exitVR()}}e.exports=function(e){r()&&window.addEventListener(\"message\",i(s,e))}},1435:e=>{e.exports=[]},9035:(e,t,n)=>{var i=n(4630);e.exports=function(e){if(e.isMobile){var t=e.wakelock=new i;e.addEventListener(\"enter-vr\",(function(){t.request()})),e.addEventListener(\"exit-vr\",(function(){t.release()}))}}},5941:(e,t,n)=>{var i,r=n(8903),s=n(8813),o=r.debug,a=s.isValidDefaultValue,l=s.propertyTypes,c=o(\"core:schema:warn\");function h(e){return\"type\"in e?\"string\"==typeof e.type:\"default\"in e}function u(e,t){var n,i,r=e.default,s=e.type;return e.type?\"bool\"===e.type?s=\"boolean\":\"float\"===e.type&&(s=\"number\"):s=void 0===r||\"boolean\"!=typeof r&&\"number\"!=typeof r?Array.isArray(r)?\"array\":\"string\":typeof r,(i=l[s])||c(\"Unknown property type for component `\"+t+\"`: \"+s),n=!!e.parse,e.parse=e.parse||i.parse,e.stringify=e.stringify||i.stringify,e.type=s,\"default\"in e?n||a(s,r)||c(\"Default value `\"+r+\"` does not match type `\"+s+\"` in component `\"+t+\"`\"):e.default=i.default,e}function d(e,t){return null!=e&&\"\"!==e||(e=t.default,Array.isArray(e)&&(e=e.slice())),t.parse(e,t.default)}function p(e,t){return\"object\"!=typeof e?e:t&&null!==e?t.stringify(e):JSON.stringify(e)}e.exports.isSingleProperty=h,e.exports.process=function(e,t){var n;if(h(e))return u(e,t);for(n in e)e[n]=u(e[n],t);return e},e.exports.processPropertyDefinition=u,e.exports.parseProperties=(i=[],function(e,t,n,r,s){var o,a,l,h;for(a in i.length=0,n?e:t)n&&void 0===e[a]||i.push(a);if(null===e||\"object\"!=typeof e)return e;for(a in e)void 0===e[a]||t[a]||s||c(\"Unknown property `\"+a+\"` for component/system `\"+r+\"`.\");for(o=0;o\u003Ci.length;o++){if(l=t[a=i[o]],h=e[a],!t[a])return;e[a]=d(h,l)}return e}),e.exports.parseProperty=d,e.exports.stringifyProperties=function(e,t){var n,i,r,s,o={};for(n in e)i=t[n],\"object\"==typeof(s=r=e[n])&&(s=p(r,i),i||c(\"Unknown component property: \"+n)),o[n]=s;return o},e.exports.stringifyProperty=p},9644:(e,t,n)=>{var i=n(5941).process,r=e.exports.shaders={},s=e.exports.shaderNames=[],o=n(2666),a=n(8903),l={array:\"v3\",color:\"v3\",int:\"i\",number:\"f\",map:\"t\",time:\"f\",vec2:\"v2\",vec3:\"v3\",vec4:\"v4\"},c=e.exports.Shader=function(){};c.prototype={schema:{},vertexShader:\"void main() {gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);}\",fragmentShader:\"void main() {gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0);}\",init:function(e){return this.attributes=this.initVariables(e,\"attribute\"),this.uniforms=this.initVariables(e,\"uniform\"),this.material=new(this.raw?o.RawShaderMaterial:o.ShaderMaterial)({uniforms:this.uniforms,vertexShader:this.vertexShader,fragmentShader:this.fragmentShader}),this.material},initVariables:function(e,t){var n,i,r=this.schema,s={};for(n in r)r[n].is===t&&(i=l[r[n].type],s[n]={type:i,value:void 0});return s},update:function(e){this.updateVariables(e,\"attribute\"),this.updateVariables(e,\"uniform\")},updateVariables:function(e,t){var n,i,r,s=this.schema;for(n in r=\"uniform\"===t?this.uniforms:this.attributes,e)if(s[n]&&s[n].is===t)if(\"map\"!==s[n].type)r[n].value=this.parseValue(s[n].type,e[n]),r[n].needsUpdate=!0;else{if(!r[n]||r[n].value===e[n])continue;i=\"_texture_\"+n,this.setMapOnTextureLoad(r,n,i),a.material.updateMapMaterialFromData(i,n,this,e)}},parseValue:function(e,t){var n;switch(e){case\"vec2\":return new o.Vector2(t.x,t.y);case\"vec3\":return new o.Vector3(t.x,t.y,t.z);case\"vec4\":return new o.Vector4(t.x,t.y,t.z,t.w);case\"color\":return n=new o.Color(t),new o.Vector3(n.r,n.g,n.b);case\"map\":return o.ImageUtils.loadTexture(t);default:return t}},setMapOnTextureLoad:function(e,t,n){var i=this;this.el.addEventListener(\"materialtextureloaded\",(function(){e[t].value=i.material[n],e[t].needsUpdate=!0}))}},e.exports.registerShader=function(e,t){var n,o={};if(Object.keys(t).forEach((function(e){o[e]={value:t[e],writable:!0}})),r[e])throw new Error(\"The shader \"+e+\" has been already registered\");return((n=function(){c.call(this)}).prototype=Object.create(c.prototype,o)).name=e,n.prototype.constructor=n,r[e]={Shader:n,schema:i(n.prototype.schema)},s.push(e),n}},365:(e,t,n)=>{var i=n(3515),r=n(5941),s=n(8903),o=r.parseProperties,a=r.parseProperty,l=r.process,c=r.isSingleProperty,h=s.styleParser,u=e.exports.systems={},d=e.exports.System=function(e){var t=i&&i.components[this.name];this.el=e,this.sceneEl=e,t&&(t.Component.prototype.system=this),this.buildData(),this.init(),this.update({})};d.prototype={schema:{},init:function(){},update:function(e){},updateProperties:function(e){var t=this.data;Object.keys(r).length&&(this.buildData(e),this.update(t))},buildData:function(e){var t=this.schema;Object.keys(t).length&&(e=e||window.HTMLElement.prototype.getAttribute.call(this.sceneEl,this.name),c(t)?this.data=a(e,t):this.data=o(h.parse(e)||{},t))},tick:void 0,tock:void 0,play:function(){},pause:function(){}},e.exports.registerSystem=function(e,t){var n,i,r={},o=s.findAllScenes(document);if(Object.keys(t).forEach((function(e){r[e]={value:t[e],writable:!0}})),u[e])throw new Error(\"The system `\"+e+\"` has been already registered. Check that you are not loading two versions of the same system or two different systems of the same name.\");for(((i=function(e){d.call(this,e)}).prototype=Object.create(d.prototype,r)).name=e,i.prototype.constructor=i,i.prototype.schema=s.extend(l(i.prototype.schema)),u[e]=i,n=0;n\u003Co.length;n++)o[n].initSystem(e)}},8168:(e,t,n)=>{n(5927)},5927:(e,t,n)=>{var i=n(3515).registerComponent,r=n(2666),s=new r.Vector3,o=new r.Vector3;i(\"pivot\",{dependencies:[\"position\"],schema:{type:\"vec3\"},init:function(){var e=this.data,t=this.el,n=t.object3D.parent,i=t.object3D,a=new r.Group;s.copy(i.position),o.copy(i.rotation),n.remove(i),a.add(i),n.add(a),t.object3D=a,i.position.set(-1*e.x,-1*e.y,-1*e.z),a.position.set(e.x+s.x,e.y+s.y,e.z+s.z),a.rotation.copy(i.rotation),i.rotation.set(0,0,0)}})},2362:(e,t,n)=>{var i=n(3515).components,r=n(9644).shaders,s=n(8903),o={};function a(e){var t=e.replace(/([a-z])([A-Z])/g,\"$1-$2\").toLowerCase();\"fog\"===e&&(t=\"material-fog\"),\"visible\"===e&&(t=\"material-visible\"),o[t]=\"material.\"+e}Object.keys(i.material.schema).forEach(a),Object.keys(r.standard.schema).forEach(a),e.exports=function(){return{defaultComponents:{material:{}},mappings:s.extend({},o)}}},9298:(e,t,n)=>{n(2557),n(8341),n(4256),n(1791),n(4106),n(5254),n(2359),n(1829),n(5144),n(1007),n(5390),n(3097),n(9293),n(3280)},5775:(e,t,n)=>{var i=n(9721).U,r=n(1956).F,s=n(3515).components,o=n(8903),a=o.debug,l=o.entity.setComponentProperty,c=a(\"extras:primitives:debug\"),h=a(\"extras:primitives:warn\"),u=a(\"extras:primitives:error\"),d=e.exports.primitives={};e.exports.registerPrimitive=function(e,t){if(e=e.toLowerCase(),!i[e]){i[e]=!0,c(\"Registering \u003C%s>\",e),t.defaultAttributes&&h(\"The 'defaultAttributes' object is deprecated. Use 'defaultComponents' instead.\");var n=t.mappings||{},a=class extends r{constructor(){super(),this.defaultComponentsFromPrimitive=t.defaultComponents||t.defaultAttributes||{},this.deprecated=t.deprecated||null,this.deprecatedMappings=t.deprecatedMappings||{},this.mappings=n,t.deprecated&&console.warn(t.deprecated),this.resolveMappingCollisions()}resolveMappingCollisions(){var e=this.mappings,t=this;Object.keys(e).forEach((function(n){var i;n!==n.toLowerCase()&&h(\"Mapping keys should be specified in lower case. The mapping key \"+n+\" may not be recognized\"),s[n]&&(i=e[n].replace(\".\",\"-\"),e[i]=e[n],delete e[n],console.warn(\"The primitive \"+t.tagName.toLowerCase()+\" has a mapping collision. The attribute \"+n+\" has the same name as a registered component and has been renamed to \"+i))}))}getExtraComponents(){var e,t,n,i,r,s,a=this;for(t=o.clone(this.defaultComponentsFromPrimitive),(r=this.getAttribute(\"mixin\"))&&(r=r.trim().split(\" \")).forEach((function(e){var n=a.sceneEl.querySelector(\"#\"+e).componentCache;Object.keys(n).forEach((function(e){var i,r;t[e]=(i=t[e],r=n[e],l(i)?c(r):l(r)?c(i):h(i)&&h(r)?o.extendDeep(i,r):c(r))}))})),n=0;n\u003Cthis.attributes.length;n++)e=this.attributes[n],(i=this.mappings[e.name])&&((s=o.entity.getComponentPropertyPath(i)).constructor===Array?(t[s[0]]=t[s[0]]||{},t[s[0]][s[1]]=e.value.trim()):t[s]=e.value.trim());return t;function l(e){return void 0===e}function c(e){return h(e)?o.extendDeep({},e):e}function h(e){return null!==e&&e.constructor===Object}}attributeChangedCallback(e,t,n){var i=this.mappings[e];e in this.deprecatedMappings&&console.warn(this.deprecatedMappings[e]),e&&i?l(this,i,n):super.attributeChangedCallback(e,t,n)}};return customElements.define(e,a),a.mappings=n,d[e]=a,a}u(\"Trying to register primitive \"+e+\" that has been already previously registered\")},e.exports.definePrimitive=function(t,n,i){i=i||{},Object.keys(n).map((function(e){!function(e,t){var n=s[e].schema;Object.keys(n).map((function(n){var i=n.replace(/([a-z])([A-Z])/g,\"$1-$2\").toLowerCase();void 0!==t[i]&&(i=e+\"-\"+n),t[i]=e+\".\"+n}))}(e,i)})),e.exports.registerPrimitive(t,o.extendDeep({},null,{defaultComponents:n,mappings:i}))}},2557:(e,t,n)=>{(0,n(5775).registerPrimitive)(\"a-camera\",{defaultComponents:{camera:{},\"look-controls\":{},\"wasd-controls\":{},position:{x:0,y:1.6,z:0}},mappings:{active:\"camera.active\",far:\"camera.far\",fov:\"camera.fov\",\"look-controls-enabled\":\"look-controls.enabled\",near:\"camera.near\",\"pointer-lock-enabled\":\"look-controls.pointerLockEnabled\",\"wasd-controls-enabled\":\"wasd-controls.enabled\",\"reverse-mouse-drag\":\"look-controls.reverseMouseDrag\",zoom:\"camera.zoom\"}})},8341:(e,t,n)=>{var i=n(2362);(0,n(5775).registerPrimitive)(\"a-cursor\",n(8903).extendDeep({},i(),{defaultComponents:{cursor:{},geometry:{primitive:\"ring\",radiusOuter:.016,radiusInner:.01,segmentsTheta:32},material:{color:\"#000\",shader:\"flat\",opacity:.8},position:{x:0,y:0,z:-1}},mappings:{far:\"raycaster.far\",fuse:\"cursor.fuse\",\"fuse-timeout\":\"cursor.fuseTimeout\",interval:\"raycaster.interval\",objects:\"raycaster.objects\"}}))},4256:(e,t,n)=>{var i=n(2362);(0,n(5775).registerPrimitive)(\"a-curvedimage\",n(8903).extendDeep({},i(),{defaultComponents:{geometry:{height:1,primitive:\"cylinder\",radius:2,segmentsRadial:48,thetaLength:270,openEnded:!0,thetaStart:0},material:{color:\"#FFF\",shader:\"flat\",side:\"double\",transparent:!0,repeat:\"-1 1\"}},mappings:{height:\"geometry.height\",\"open-ended\":\"geometry.openEnded\",radius:\"geometry.radius\",segments:\"geometry.segmentsRadial\",start:\"geometry.thetaStart\",\"theta-length\":\"geometry.thetaLength\",\"theta-start\":\"geometry.thetaStart\",width:\"geometry.thetaLength\"}}))},1791:(e,t,n)=>{(0,n(5775).registerPrimitive)(\"a-gltf-model\",{mappings:{src:\"gltf-model\"}})},4106:(e,t,n)=>{var i=n(2362);(0,n(5775).registerPrimitive)(\"a-image\",n(8903).extendDeep({},i(),{defaultComponents:{geometry:{primitive:\"plane\"},material:{color:\"#FFF\",shader:\"flat\",side:\"double\",transparent:!0}},mappings:{height:\"geometry.height\",width:\"geometry.width\"}}))},5254:(e,t,n)=>{(0,n(5775).registerPrimitive)(\"a-light\",{defaultComponents:{light:{}},mappings:{angle:\"light.angle\",color:\"light.color\",\"ground-color\":\"light.groundColor\",decay:\"light.decay\",distance:\"light.distance\",intensity:\"light.intensity\",penumbra:\"light.penumbra\",type:\"light.type\",target:\"light.target\",envmap:\"light.envMap\",\"shadow-camera-automatic\":\"light.shadowCameraAutomatic\"}})},2359:(e,t,n)=>{(0,n(5775).registerPrimitive)(\"a-link\",{defaultComponents:{link:{visualAspectEnabled:!0}},mappings:{href:\"link.href\",image:\"link.image\",title:\"link.title\"}})},1829:(e,t,n)=>{var i=n(2362)();(0,n(5775).registerPrimitive)(\"a-obj-model\",n(8903).extendDeep({},i,{defaultComponents:{\"obj-model\":{}},mappings:{src:\"obj-model.obj\",mtl:\"obj-model.mtl\"}}))},5144:(e,t,n)=>{var i=n(2362),r=n(5775).registerPrimitive,s=n(8903),o=n(3280);r(\"a-sky\",s.extendDeep({},i(),{defaultComponents:{geometry:{primitive:\"sphere\",radius:500,segmentsWidth:64,segmentsHeight:32},material:{color:\"#FFF\",side:\"back\",shader:\"flat\",npot:!0},scale:\"-1 1 1\"},mappings:s.extendDeep({},o[\"a-sphere\"].mappings)}))},1007:(e,t,n)=>{(0,n(5775).registerPrimitive)(\"a-sound\",{defaultComponents:{sound:{}},mappings:{src:\"sound.src\",on:\"sound.on\",autoplay:\"sound.autoplay\",loop:\"sound.loop\",volume:\"sound.volume\"}})},5390:(e,t,n)=>{(0,n(5775).definePrimitive)(\"a-text\",{text:{anchor:\"align\",width:5}})},3097:(e,t,n)=>{var i=n(2362);(0,n(5775).registerPrimitive)(\"a-video\",n(8903).extendDeep({},i(),{defaultComponents:{geometry:{primitive:\"plane\"},material:{color:\"#FFF\",shader:\"flat\",side:\"double\",transparent:!0}},mappings:{height:\"geometry.height\",width:\"geometry.width\"}}))},9293:(e,t,n)=>{var i=n(2362);(0,n(5775).registerPrimitive)(\"a-videosphere\",n(8903).extendDeep({},i(),{defaultComponents:{geometry:{primitive:\"sphere\",radius:500,segmentsWidth:64,segmentsHeight:32},material:{color:\"#FFF\",shader:\"flat\",side:\"back\",npot:!0},scale:\"-1 1 1\"},mappings:{radius:\"geometry.radius\",\"segments-height\":\"geometry.segmentsHeight\",\"segments-width\":\"geometry.segmentsWidth\"}}))},3280:(e,t,n)=>{var i=n(2362),r=n(4863).xZ,s=n(4863).ib,o=n(5775).registerPrimitive,a=n(8903),l=e.exports={};function c(e){return e.replace(/([a-z])([A-Z])/g,\"$1-$2\").toLowerCase()}s.forEach((function(e){var t=r[e],n=c(e),s={};Object.keys(t.schema).forEach((function(e){s[c(e)]=\"geometry.\"+e}));var h=\"a-\"+n,u=o(h,a.extendDeep({},i(),{defaultComponents:{geometry:{primitive:e}},mappings:s}));l[h]=u}))},8328:(e,t,n)=>{var i=n(4863).dZ,r=n(2666);i(\"box\",{schema:{depth:{default:1,min:0},height:{default:1,min:0},width:{default:1,min:0},segmentsHeight:{default:1,min:1,max:20,type:\"int\"},segmentsWidth:{default:1,min:1,max:20,type:\"int\"},segmentsDepth:{default:1,min:1,max:20,type:\"int\"}},init:function(e){this.geometry=new r.BoxGeometry(e.width,e.height,e.depth,e.segmentsWidth,e.segmentsHeight,e.segmentsDepth)}})},6937:(e,t,n)=>{var i=n(4863).dZ,r=n(2666),s=r.MathUtils.degToRad;i(\"circle\",{schema:{radius:{default:1,min:0},segments:{default:32,min:3,type:\"int\"},thetaLength:{default:360,min:0},thetaStart:{default:0}},init:function(e){this.geometry=new r.CircleGeometry(e.radius,e.segments,s(e.thetaStart),s(e.thetaLength))}})},3695:(e,t,n)=>{var i=n(4863).dZ,r=n(2666),s=r.MathUtils.degToRad;i(\"cone\",{schema:{height:{default:1,min:0},openEnded:{default:!1},radiusBottom:{default:1,min:0},radiusTop:{default:.01,min:0},segmentsHeight:{default:18,min:1,type:\"int\"},segmentsRadial:{default:36,min:3,type:\"int\"},thetaLength:{default:360,min:0},thetaStart:{default:0}},init:function(e){this.geometry=new r.CylinderGeometry(e.radiusTop,e.radiusBottom,e.height,e.segmentsRadial,e.segmentsHeight,e.openEnded,s(e.thetaStart),s(e.thetaLength))}})},1472:(e,t,n)=>{var i=n(4863).dZ,r=n(2666),s=r.MathUtils.degToRad;i(\"cylinder\",{schema:{height:{default:1,min:0},openEnded:{default:!1},radius:{default:1,min:0},segmentsHeight:{default:18,min:1,type:\"int\"},segmentsRadial:{default:36,min:3,type:\"int\"},thetaLength:{default:360,min:0},thetaStart:{default:0}},init:function(e){this.geometry=new r.CylinderGeometry(e.radius,e.radius,e.height,e.segmentsRadial,e.segmentsHeight,e.openEnded,s(e.thetaStart),s(e.thetaLength))}})},9473:(e,t,n)=>{var i=n(4863).dZ,r=n(2666);i(\"dodecahedron\",{schema:{detail:{default:0,min:0,max:5,type:\"int\"},radius:{default:1,min:0}},init:function(e){this.geometry=new r.DodecahedronGeometry(e.radius,e.detail)}})},8581:(e,t,n)=>{var i=n(4863).dZ,r=n(2666);i(\"icosahedron\",{schema:{detail:{default:0,min:0,max:5,type:\"int\"},radius:{default:1,min:0}},init:function(e){this.geometry=new r.IcosahedronGeometry(e.radius,e.detail)}})},763:(e,t,n)=>{n(8328),n(6937),n(3695),n(1472),n(9473),n(8581),n(3210),n(1752),n(377),n(1092),n(9485),n(697),n(7536),n(8018)},3210:(e,t,n)=>{var i=n(4863).dZ,r=n(2666);i(\"octahedron\",{schema:{detail:{default:0,min:0,max:5,type:\"int\"},radius:{default:1,min:0}},init:function(e){this.geometry=new r.OctahedronGeometry(e.radius,e.detail)}})},1752:(e,t,n)=>{var i=n(4863).dZ,r=n(2666);i(\"plane\",{schema:{height:{default:1,min:0},width:{default:1,min:0},segmentsHeight:{default:1,min:1,max:20,type:\"int\"},segmentsWidth:{default:1,min:1,max:20,type:\"int\"}},init:function(e){this.geometry=new r.PlaneGeometry(e.width,e.height,e.segmentsWidth,e.segmentsHeight)}})},377:(e,t,n)=>{var i=n(4863).dZ,r=n(2666),s=r.MathUtils.degToRad;i(\"ring\",{schema:{radiusInner:{default:.8,min:0},radiusOuter:{default:1.2,min:0},segmentsPhi:{default:10,min:1,type:\"int\"},segmentsTheta:{default:32,min:3,type:\"int\"},thetaLength:{default:360,min:0},thetaStart:{default:0}},init:function(e){this.geometry=new r.RingGeometry(e.radiusInner,e.radiusOuter,e.segmentsTheta,e.segmentsPhi,s(e.thetaStart),s(e.thetaLength))}})},1092:(e,t,n)=>{var i=n(4863).dZ,r=n(2666),s=r.MathUtils.degToRad;i(\"sphere\",{schema:{radius:{default:1,min:0},phiLength:{default:360},phiStart:{default:0,min:0},thetaLength:{default:180,min:0},thetaStart:{default:0},segmentsHeight:{default:18,min:2,type:\"int\"},segmentsWidth:{default:36,min:3,type:\"int\"}},init:function(e){this.geometry=new r.SphereGeometry(e.radius,e.segmentsWidth,e.segmentsHeight,s(e.phiStart),s(e.phiLength),s(e.thetaStart),s(e.thetaLength))}})},9485:(e,t,n)=>{var i=n(4863).dZ,r=n(2666);i(\"tetrahedron\",{schema:{detail:{default:0,min:0,max:5,type:\"int\"},radius:{default:1,min:0}},init:function(e){this.geometry=new r.TetrahedronGeometry(e.radius,e.detail)}})},697:(e,t,n)=>{var i=n(4863).dZ,r=n(2666),s=r.MathUtils.degToRad;i(\"torus\",{schema:{arc:{default:360},radius:{default:1,min:0},radiusTubular:{default:.2,min:0},segmentsRadial:{default:36,min:2,type:\"int\"},segmentsTubular:{default:32,min:3,type:\"int\"}},init:function(e){this.geometry=new r.TorusGeometry(e.radius,2*e.radiusTubular,e.segmentsRadial,e.segmentsTubular,s(e.arc))}})},7536:(e,t,n)=>{var i=n(4863).dZ,r=n(2666);i(\"torusKnot\",{schema:{p:{default:2,min:1},q:{default:3,min:1},radius:{default:1,min:0},radiusTubular:{default:.2,min:0},segmentsRadial:{default:8,min:3,type:\"int\"},segmentsTubular:{default:100,min:3,type:\"int\"}},init:function(e){this.geometry=new r.TorusKnotGeometry(e.radius,2*e.radiusTubular,e.segmentsTubular,e.segmentsRadial,e.p,e.q)}})},8018:(e,t,n)=>{var i=n(4863).dZ,r=n(2666),s=new r.Quaternion,o=new r.Vector3(0,0,1),a=new r.Vector2,l=new r.Vector2,c=new r.Vector2;i(\"triangle\",{schema:{vertexA:{type:\"vec3\",default:{x:0,y:.5,z:0}},vertexB:{type:\"vec3\",default:{x:-.5,y:-.5,z:0}},vertexC:{type:\"vec3\",default:{x:.5,y:-.5,z:0}}},init:function(e){var t,n,i,h,u,d,p,A,f;(i=new r.Triangle).a.set(e.vertexA.x,e.vertexA.y,e.vertexA.z),i.b.set(e.vertexB.x,e.vertexB.y,e.vertexB.z),i.c.set(e.vertexC.x,e.vertexC.y,e.vertexC.z),n=i.getNormal(new r.Vector3),s.setFromUnitVectors(n,o),h=i.a.clone().applyQuaternion(s),u=i.b.clone().applyQuaternion(s),d=i.c.clone().applyQuaternion(s),a.set(Math.min(h.x,u.x,d.x),Math.min(h.y,u.y,d.y)),l.set(Math.max(h.x,u.x,d.x),Math.max(h.y,u.y,d.y)),c.set(0,0).subVectors(l,a),h=(new r.Vector2).subVectors(h,a).divide(c),u=(new r.Vector2).subVectors(u,a).divide(c),d=(new r.Vector2).subVectors(d,a).divide(c),t=this.geometry=new r.BufferGeometry,p=[i.a.x,i.a.y,i.a.z,i.b.x,i.b.y,i.b.z,i.c.x,i.c.y,i.c.z],A=[n.x,n.y,n.z,n.x,n.y,n.z,n.x,n.y,n.z],f=[h.x,h.y,u.x,u.y,d.x,d.y],t.setAttribute(\"position\",new r.Float32BufferAttribute(p,3)),t.setAttribute(\"normal\",new r.Float32BufferAttribute(A,3)),t.setAttribute(\"uv\",new r.Float32BufferAttribute(f,2))}})},5579:(e,t,n)=>{if(window.Promise=window.Promise||n(4177),n(651),window.hasNativeWebVRImplementation=!!window.navigator.getVRDisplays||!!window.navigator.getVRDevices,window.hasNativeWebXRImplementation=void 0!==navigator.xr,!window.hasNativeWebXRImplementation&&!window.hasNativeWebVRImplementation){var i=n(6818)(window.navigator.userAgent)?1/window.devicePixelRatio:1,r=n(5542),s={BUFFER_SCALE:i,CARDBOARD_UI_DISABLED:!0,ROTATE_INSTRUCTIONS_DISABLED:!0,MOBILE_WAKE_LOCK:!!window.cordova};window.webvrpolyfill=new r(s)}var o=n(8903),a=o.debug;o.isIE11&&(n(7464),n(8332));var l=a(\"A-Frame:error\"),c=a(\"A-Frame:warn\");window.document.currentScript&&window.document.currentScript.parentNode!==window.document.head&&!window.debug&&c(\"Put the A-Frame \u003Cscript> tag in the \u003Chead> of the HTML *before* the scene to ensure everything for A-Frame is properly registered before they are used from HTML.\"),window.cordova||\"file:\"!==window.location.protocol||l(\"This HTML file is currently being served via the file:// protocol. Assets, textures, and models WILL NOT WORK due to cross-origin policy! Please use a local or hosted server: https://aframe.io/docs/0.5.0/introduction/getting-started.html#using-a-local-server.\"),n(9414),o.device.isBrowserEnvironment&&(n(6924),n(1353));var h=n(6450).Q,u=n(3515).components,d=n(3515).registerComponent,p=n(4863).dZ,A=n(5775).registerPrimitive,f=n(9644).registerShader,m=n(365).registerSystem,g=n(9644).shaders,v=n(365).systems,y=window.THREE=n(2666),E=n(4147);n(8686),n(763),n(8657),n(7758);var b=n(9721).X,x=n(1956).F;n(2385),n(1397),n(8022),n(8168),n(9298),console.log(\"A-Frame Version: 1.4.0 (Date 2022-12-26, Commit #60a324a2)\"),console.log(\"THREE Version (https://github.com/supermedium/three.js):\",E.dependencies[\"super-three\"]),console.log(\"WebVR Polyfill Version:\",E.dependencies[\"webvr-polyfill\"]),e.exports=window.AFRAME={AComponent:n(3515).Component,AEntity:x,ANode:b,ANIME:n(2446).Z,AScene:h,components:u,coreComponents:Object.keys(u),geometries:n(4863).xZ,registerComponent:d,registerGeometry:p,registerPrimitive:A,registerShader:f,registerSystem:m,primitives:{getMeshMixin:n(2362),primitives:n(5775).primitives},scenes:n(1435),schema:n(5941),shaders:g,systems:v,THREE:y,utils:o,version:E.version}},1543:e=>{window.aframeStats=function(e){var t=null,n=e;return{update:function(){var e;t(\"te\").set((e=n.querySelectorAll(\"*\"),Array.prototype.slice.call(e).filter((function(e){return e.isEntity})),e.length)),window.performance.getEntriesByName&&t(\"lt\").set(window.performance.getEntriesByName(\"render-started\")[0].startTime.toFixed(0))},start:function(){},end:function(){},attach:function(e){t=e},values:{te:{caption:\"Entities\"},lt:{caption:\"Load Time\"}},groups:[{caption:\"A-Frame\",values:[\"te\",\"lt\"]}],fractions:[]}},e.exports={aframeStats:window.aframeStats}},2666:(e,t,n)=>{var i=n(251).Z;i.TextureLoader&&(i.TextureLoader.prototype.crossOrigin=\"anonymous\"),i.ImageLoader&&(i.ImageLoader.prototype.crossOrigin=\"anonymous\"),i.Cache&&(i.Cache.enabled=!0),i.DRACOLoader.prototype.crossOrigin=\"anonymous\",i.GLTFLoader.prototype.crossOrigin=\"anonymous\",i.KTX2Loader.prototype.crossOrigin=\"anonymous\",i.MTLLoader.prototype.crossOrigin=\"anonymous\",i.OBJLoader.prototype.crossOrigin=\"anonymous\",e.exports=i},251:(e,t,n)=>{\"use strict\";n.d(t,{Z:()=>Am});var i={};n.r(i),n.d(i,{ACESFilmicToneMapping:()=>ne,AddEquation:()=>M,AddOperation:()=>K,AdditiveAnimationBlendMode:()=>Bt,AdditiveBlending:()=>b,AlphaFormat:()=>Pe,AlwaysDepth:()=>z,AlwaysStencilFunc:()=>nn,AmbientLight:()=>Ku,AmbientLightProbe:()=>Ad,AnimationClip:()=>bu,AnimationLoader:()=>Tu,AnimationMixer:()=>Vd,AnimationObjectGroup:()=>Gd,AnimationUtils:()=>lu,ArcCurve:()=>_c,ArrayCamera:()=>el,ArrowHelper:()=>kp,Audio:()=>_d,AudioAnalyser:()=>Dd,AudioContext:()=>ud,AudioListener:()=>Md,AudioLoader:()=>dd,AxesHelper:()=>Fp,BackSide:()=>g,BasicDepthPacking:()=>Pt,BasicShadowMap:()=>d,Bone:()=>Hl,BooleanKeyframeTrack:()=>Au,Box2:()=>np,Box3:()=>di,Box3Helper:()=>Tp,BoxBufferGeometry:()=>Wp,BoxGeometry:()=>us,BoxHelper:()=>Sp,BufferAttribute:()=>Ir,BufferGeometry:()=>Wr,BufferGeometryLoader:()=>rd,ByteType:()=>Ce,Cache:()=>wu,Camera:()=>gs,CameraHelper:()=>_p,CanvasTexture:()=>wc,CapsuleBufferGeometry:()=>jp,CapsuleGeometry:()=>qc,CatmullRomCurve3:()=>Dc,CineonToneMapping:()=>te,CircleBufferGeometry:()=>qp,CircleGeometry:()=>Yc,ClampToEdgeWrapping:()=>ue,Clock:()=>yd,Color:()=>Yn,ColorKeyframeTrack:()=>fu,ColorManagement:()=>Gn,CompressedArrayTexture:()=>xc,CompressedTexture:()=>bc,CompressedTextureLoader:()=>Lu,ConeBufferGeometry:()=>Yp,ConeGeometry:()=>Jc,CubeCamera:()=>Es,CubeReflectionMapping:()=>se,CubeRefractionMapping:()=>oe,CubeTexture:()=>bs,CubeTextureLoader:()=>Ru,CubeUVReflectionMapping:()=>ce,CubicBezierCurve:()=>Fc,CubicBezierCurve3:()=>Oc,CubicInterpolant:()=>hu,CullFaceBack:()=>c,CullFaceFront:()=>h,CullFaceFrontBack:()=>u,CullFaceNone:()=>l,Curve:()=>Cc,CurvePath:()=>Vc,CustomBlending:()=>C,CustomToneMapping:()=>ie,CylinderBufferGeometry:()=>Xp,CylinderGeometry:()=>Xc,Cylindrical:()=>ep,Data3DTexture:()=>si,DataArrayTexture:()=>ii,DataTexture:()=>Vl,DataTexture2DArray:()=>Hp,DataTexture3D:()=>Vp,DataTextureLoader:()=>Pu,DataUtils:()=>Np,DecrementStencilOp:()=>Wt,DecrementWrapStencilOp:()=>qt,DefaultLoadingManager:()=>Mu,DepthFormat:()=>Ue,DepthStencilFormat:()=>Ne,DepthTexture:()=>ol,DirectionalLight:()=>Ju,DirectionalLightHelper:()=>wp,DiscreteInterpolant:()=>du,DodecahedronBufferGeometry:()=>Jp,DodecahedronGeometry:()=>Zc,DoubleSide:()=>v,DstAlphaFactor:()=>F,DstColorFactor:()=>Q,DynamicCopyUsage:()=>un,DynamicDrawUsage:()=>sn,DynamicReadUsage:()=>ln,EdgesGeometry:()=>ih,EllipseCurve:()=>Mc,EqualDepth:()=>W,EqualStencilFunc:()=>Kt,EquirectangularReflectionMapping:()=>ae,EquirectangularRefractionMapping:()=>le,Euler:()=>Xi,EventDispatcher:()=>mn,ExtrudeBufferGeometry:()=>Kp,ExtrudeGeometry:()=>Dh,FileLoader:()=>Su,Float16BufferAttribute:()=>kr,Float32BufferAttribute:()=>Fr,Float64BufferAttribute:()=>Or,FloatType:()=>Se,Fog:()=>pl,FogExp2:()=>dl,FramebufferTexture:()=>Ec,FrontSide:()=>m,Frustum:()=>Ss,GLBufferAttribute:()=>Xd,GLSL1:()=>pn,GLSL3:()=>An,GreaterDepth:()=>q,GreaterEqualDepth:()=>j,GreaterEqualStencilFunc:()=>tn,GreaterStencilFunc:()=>$t,GridHelper:()=>vp,Group:()=>$a,HalfFloatType:()=>Te,HemisphereLight:()=>Ou,HemisphereLightHelper:()=>gp,HemisphereLightProbe:()=>pd,IcosahedronBufferGeometry:()=>Zp,IcosahedronGeometry:()=>Ph,ImageBitmapLoader:()=>cd,ImageLoader:()=>Du,ImageUtils:()=>Jn,ImmediateRenderObject:()=>Gp,IncrementStencilOp:()=>Vt,IncrementWrapStencilOp:()=>jt,InstancedBufferAttribute:()=>Yl,InstancedBufferGeometry:()=>id,InstancedInterleavedBuffer:()=>Yd,InstancedMesh:()=>ec,Int16BufferAttribute:()=>Lr,Int32BufferAttribute:()=>Rr,Int8BufferAttribute:()=>Br,IntType:()=>Ie,InterleavedBuffer:()=>fl,InterleavedBufferAttribute:()=>gl,Interpolant:()=>cu,InterpolateDiscrete:()=>bt,InterpolateLinear:()=>xt,InterpolateSmooth:()=>wt,InvertStencilOp:()=>Yt,KeepStencilOp:()=>zt,KeyframeTrack:()=>pu,LOD:()=>Fl,LatheBufferGeometry:()=>$p,LatheGeometry:()=>jc,Layers:()=>Ji,LessDepth:()=>H,LessEqualDepth:()=>V,LessEqualStencilFunc:()=>Zt,LessStencilFunc:()=>Jt,Light:()=>Fu,LightProbe:()=>ed,Line:()=>ac,Line3:()=>sp,LineBasicMaterial:()=>tc,LineCurve:()=>Qc,LineCurve3:()=>Uc,LineDashedMaterial:()=>tu,LineLoop:()=>uc,LineSegments:()=>hc,LinearEncoding:()=>Dt,LinearFilter:()=>ve,LinearInterpolant:()=>uu,LinearMipMapLinearFilter:()=>xe,LinearMipMapNearestFilter:()=>Ee,LinearMipmapLinearFilter:()=>be,LinearMipmapNearestFilter:()=>ye,LinearSRGBColorSpace:()=>Nt,LinearToneMapping:()=>$,Loader:()=>_u,LoaderUtils:()=>nd,LoadingManager:()=>Cu,LoopOnce:()=>vt,LoopPingPong:()=>Et,LoopRepeat:()=>yt,LuminanceAlphaFormat:()=>Qe,LuminanceFormat:()=>Oe,MOUSE:()=>o,Material:()=>wr,MaterialLoader:()=>td,MathUtils:()=>Tn,Matrix3:()=>Dn,Matrix4:()=>Ui,MaxEquation:()=>S,Mesh:()=>cs,MeshBasicMaterial:()=>Cr,MeshDepthMaterial:()=>qa,MeshDistanceMaterial:()=>Ya,MeshLambertMaterial:()=>$h,MeshMatcapMaterial:()=>eu,MeshNormalMaterial:()=>Zh,MeshPhongMaterial:()=>Jh,MeshPhysicalMaterial:()=>Xh,MeshStandardMaterial:()=>Yh,MeshToonMaterial:()=>Kh,MinEquation:()=>B,MirroredRepeatWrapping:()=>de,MixOperation:()=>J,MultiplyBlending:()=>w,MultiplyOperation:()=>X,NearestFilter:()=>pe,NearestMipMapLinearFilter:()=>ge,NearestMipMapNearestFilter:()=>fe,NearestMipmapLinearFilter:()=>me,NearestMipmapNearestFilter:()=>Ae,NeverDepth:()=>G,NeverStencilFunc:()=>Xt,NoBlending:()=>y,NoColorSpace:()=>Qt,NoToneMapping:()=>Z,NormalAnimationBlendMode:()=>It,NormalBlending:()=>E,NotEqualDepth:()=>Y,NotEqualStencilFunc:()=>en,NumberKeyframeTrack:()=>mu,Object3D:()=>hr,ObjectLoader:()=>sd,ObjectSpaceNormalMap:()=>Ot,OctahedronBufferGeometry:()=>eA,OctahedronGeometry:()=>kh,OneFactor:()=>L,OneMinusDstAlphaFactor:()=>O,OneMinusDstColorFactor:()=>U,OneMinusSrcAlphaFactor:()=>k,OneMinusSrcColorFactor:()=>R,OrthographicCamera:()=>Hs,PCFShadowMap:()=>p,PCFSoftShadowMap:()=>A,PMREMGenerator:()=>Ks,Path:()=>Wc,PerspectiveCamera:()=>vs,Plane:()=>_s,PlaneBufferGeometry:()=>tA,PlaneGeometry:()=>Ds,PlaneHelper:()=>Lp,PointLight:()=>Yu,PointLightHelper:()=>pp,Points:()=>gc,PointsMaterial:()=>dc,PolarGridHelper:()=>yp,PolyhedronBufferGeometry:()=>nA,PolyhedronGeometry:()=>Kc,PositionalAudio:()=>Ld,PropertyBinding:()=>Nd,PropertyMixer:()=>Rd,QuadraticBezierCurve:()=>Nc,QuadraticBezierCurve3:()=>Gc,Quaternion:()=>li,QuaternionKeyframeTrack:()=>vu,QuaternionLinearInterpolant:()=>gu,REVISION:()=>s,RGBADepthPacking:()=>kt,RGBAFormat:()=>Fe,RGBAIntegerFormat:()=>We,RGBA_ASTC_10x10_Format:()=>At,RGBA_ASTC_10x5_Format:()=>ut,RGBA_ASTC_10x6_Format:()=>dt,RGBA_ASTC_10x8_Format:()=>pt,RGBA_ASTC_12x10_Format:()=>ft,RGBA_ASTC_12x12_Format:()=>mt,RGBA_ASTC_4x4_Format:()=>it,RGBA_ASTC_5x4_Format:()=>rt,RGBA_ASTC_5x5_Format:()=>st,RGBA_ASTC_6x5_Format:()=>ot,RGBA_ASTC_6x6_Format:()=>at,RGBA_ASTC_8x5_Format:()=>lt,RGBA_ASTC_8x6_Format:()=>ct,RGBA_ASTC_8x8_Format:()=>ht,RGBA_BPTC_Format:()=>gt,RGBA_ETC2_EAC_Format:()=>nt,RGBA_PVRTC_2BPPV1_Format:()=>$e,RGBA_PVRTC_4BPPV1_Format:()=>Ze,RGBA_S3TC_DXT1_Format:()=>qe,RGBA_S3TC_DXT3_Format:()=>Ye,RGBA_S3TC_DXT5_Format:()=>Xe,RGBFormat:()=>ke,RGB_ETC1_Format:()=>et,RGB_ETC2_Format:()=>tt,RGB_PVRTC_2BPPV1_Format:()=>Ke,RGB_PVRTC_4BPPV1_Format:()=>Je,RGB_S3TC_DXT1_Format:()=>je,RGFormat:()=>He,RGIntegerFormat:()=>Ve,RawShaderMaterial:()=>qh,Ray:()=>Qi,Raycaster:()=>Jd,RectAreaLight:()=>Zu,RedFormat:()=>Ge,RedIntegerFormat:()=>ze,ReinhardToneMapping:()=>ee,RepeatWrapping:()=>he,ReplaceStencilOp:()=>Ht,ReverseSubtractEquation:()=>I,RingBufferGeometry:()=>iA,RingGeometry:()=>Fh,SRGBColorSpace:()=>Ut,Scene:()=>Al,ShaderChunk:()=>Rs,ShaderLib:()=>ks,ShaderMaterial:()=>ms,ShadowMaterial:()=>jh,Shape:()=>rh,ShapeBufferGeometry:()=>rA,ShapeGeometry:()=>Oh,ShapePath:()=>Op,ShapeUtils:()=>Sh,ShortType:()=>Me,Skeleton:()=>ql,SkeletonHelper:()=>up,SkinnedMesh:()=>zl,Source:()=>Kn,Sphere:()=>Ti,SphereBufferGeometry:()=>sA,SphereGeometry:()=>Qh,Spherical:()=>$d,SphericalHarmonics3:()=>$u,SplineCurve:()=>zc,SpotLight:()=>Hu,SpotLightHelper:()=>ap,Sprite:()=>Dl,SpriteMaterial:()=>vl,SrcAlphaFactor:()=>P,SrcAlphaSaturateFactor:()=>N,SrcColorFactor:()=>D,StaticCopyUsage:()=>hn,StaticDrawUsage:()=>rn,StaticReadUsage:()=>an,StereoCamera:()=>vd,StreamCopyUsage:()=>dn,StreamDrawUsage:()=>on,StreamReadUsage:()=>cn,StringKeyframeTrack:()=>yu,SubtractEquation:()=>_,SubtractiveBlending:()=>x,TOUCH:()=>a,TangentSpaceNormalMap:()=>Ft,TetrahedronBufferGeometry:()=>oA,TetrahedronGeometry:()=>Uh,Texture:()=>ei,TextureLoader:()=>ku,TorusBufferGeometry:()=>aA,TorusGeometry:()=>Nh,TorusKnotBufferGeometry:()=>lA,TorusKnotGeometry:()=>Gh,Triangle:()=>br,TriangleFanDrawMode:()=>Lt,TriangleStripDrawMode:()=>Tt,TrianglesDrawMode:()=>St,TubeBufferGeometry:()=>cA,TubeGeometry:()=>zh,UVMapping:()=>re,Uint16BufferAttribute:()=>Dr,Uint32BufferAttribute:()=>Pr,Uint8BufferAttribute:()=>Sr,Uint8ClampedBufferAttribute:()=>Tr,Uniform:()=>Wd,UniformsGroup:()=>qd,UniformsLib:()=>Ps,UniformsUtils:()=>fs,UnsignedByteType:()=>we,UnsignedInt248Type:()=>Re,UnsignedIntType:()=>Be,UnsignedShort4444Type:()=>Le,UnsignedShort5551Type:()=>De,UnsignedShortType:()=>_e,VSMShadowMap:()=>f,Vector2:()=>Ln,Vector3:()=>ci,Vector4:()=>ti,VectorKeyframeTrack:()=>Eu,VideoTexture:()=>yc,WebGL1Renderer:()=>ul,WebGL3DRenderTarget:()=>oi,WebGLArrayRenderTarget:()=>ri,WebGLCubeRenderTarget:()=>xs,WebGLMultipleRenderTargets:()=>ai,WebGLMultisampleRenderTarget:()=>zp,WebGLRenderTarget:()=>ni,WebGLRenderer:()=>hl,WebGLUtils:()=>Za,WireframeGeometry:()=>Hh,WrapAroundEnding:()=>_t,ZeroCurvatureEnding:()=>Ct,ZeroFactor:()=>T,ZeroSlopeEnding:()=>Mt,ZeroStencilOp:()=>Gt,_SRGBAFormat:()=>fn,sRGBEncoding:()=>Rt});var r={};n.r(r),n.d(r,{computeMikkTSpaceTangents:()=>Zf,computeMorphedAttributes:()=>lm,computeTangents:()=>Kf,deepCloneAttribute:()=>tm,deinterleaveAttribute:()=>im,deinterleaveGeometry:()=>rm,estimateBytesUsed:()=>sm,interleaveAttributes:()=>nm,mergeBufferAttributes:()=>em,mergeBufferGeometries:()=>$f,mergeGroups:()=>cm,mergeVertices:()=>om,toCreasedNormals:()=>hm,toTrianglesDrawMode:()=>am});const s=\"147\",o={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},a={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},l=0,c=1,h=2,u=3,d=0,p=1,A=2,f=3,m=0,g=1,v=2,y=0,E=1,b=2,x=3,w=4,C=5,M=100,_=101,I=102,B=103,S=104,T=200,L=201,D=202,R=203,P=204,k=205,F=206,O=207,Q=208,U=209,N=210,G=0,z=1,H=2,V=3,W=4,j=5,q=6,Y=7,X=0,J=1,K=2,Z=0,$=1,ee=2,te=3,ne=4,ie=5,re=300,se=301,oe=302,ae=303,le=304,ce=306,he=1e3,ue=1001,de=1002,pe=1003,Ae=1004,fe=1004,me=1005,ge=1005,ve=1006,ye=1007,Ee=1007,be=1008,xe=1008,we=1009,Ce=1010,Me=1011,_e=1012,Ie=1013,Be=1014,Se=1015,Te=1016,Le=1017,De=1018,Re=1020,Pe=1021,ke=1022,Fe=1023,Oe=1024,Qe=1025,Ue=1026,Ne=1027,Ge=1028,ze=1029,He=1030,Ve=1031,We=1033,je=33776,qe=33777,Ye=33778,Xe=33779,Je=35840,Ke=35841,Ze=35842,$e=35843,et=36196,tt=37492,nt=37496,it=37808,rt=37809,st=37810,ot=37811,at=37812,lt=37813,ct=37814,ht=37815,ut=37816,dt=37817,pt=37818,At=37819,ft=37820,mt=37821,gt=36492,vt=2200,yt=2201,Et=2202,bt=2300,xt=2301,wt=2302,Ct=2400,Mt=2401,_t=2402,It=2500,Bt=2501,St=0,Tt=1,Lt=2,Dt=3e3,Rt=3001,Pt=3200,kt=3201,Ft=0,Ot=1,Qt=\"\",Ut=\"srgb\",Nt=\"srgb-linear\",Gt=0,zt=7680,Ht=7681,Vt=7682,Wt=7683,jt=34055,qt=34056,Yt=5386,Xt=512,Jt=513,Kt=514,Zt=515,$t=516,en=517,tn=518,nn=519,rn=35044,sn=35048,on=35040,an=35045,ln=35049,cn=35041,hn=35046,un=35050,dn=35042,pn=\"100\",An=\"300 es\",fn=1035;class mn{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});const n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[e]&&-1!==n[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;const n=this._listeners[e];if(void 0!==n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;const t=this._listeners[e.type];if(void 0!==t){e.target=this;const n=t.slice(0);for(let t=0,i=n.length;t\u003Ci;t++)n[t].call(this,e);e.target=null}}}const gn=[\"00\",\"01\",\"02\",\"03\",\"04\",\"05\",\"06\",\"07\",\"08\",\"09\",\"0a\",\"0b\",\"0c\",\"0d\",\"0e\",\"0f\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1a\",\"1b\",\"1c\",\"1d\",\"1e\",\"1f\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"2a\",\"2b\",\"2c\",\"2d\",\"2e\",\"2f\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"3a\",\"3b\",\"3c\",\"3d\",\"3e\",\"3f\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"4a\",\"4b\",\"4c\",\"4d\",\"4e\",\"4f\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"5a\",\"5b\",\"5c\",\"5d\",\"5e\",\"5f\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"6a\",\"6b\",\"6c\",\"6d\",\"6e\",\"6f\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"7a\",\"7b\",\"7c\",\"7d\",\"7e\",\"7f\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"8a\",\"8b\",\"8c\",\"8d\",\"8e\",\"8f\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"9a\",\"9b\",\"9c\",\"9d\",\"9e\",\"9f\",\"a0\",\"a1\",\"a2\",\"a3\",\"a4\",\"a5\",\"a6\",\"a7\",\"a8\",\"a9\",\"aa\",\"ab\",\"ac\",\"ad\",\"ae\",\"af\",\"b0\",\"b1\",\"b2\",\"b3\",\"b4\",\"b5\",\"b6\",\"b7\",\"b8\",\"b9\",\"ba\",\"bb\",\"bc\",\"bd\",\"be\",\"bf\",\"c0\",\"c1\",\"c2\",\"c3\",\"c4\",\"c5\",\"c6\",\"c7\",\"c8\",\"c9\",\"ca\",\"cb\",\"cc\",\"cd\",\"ce\",\"cf\",\"d0\",\"d1\",\"d2\",\"d3\",\"d4\",\"d5\",\"d6\",\"d7\",\"d8\",\"d9\",\"da\",\"db\",\"dc\",\"dd\",\"de\",\"df\",\"e0\",\"e1\",\"e2\",\"e3\",\"e4\",\"e5\",\"e6\",\"e7\",\"e8\",\"e9\",\"ea\",\"eb\",\"ec\",\"ed\",\"ee\",\"ef\",\"f0\",\"f1\",\"f2\",\"f3\",\"f4\",\"f5\",\"f6\",\"f7\",\"f8\",\"f9\",\"fa\",\"fb\",\"fc\",\"fd\",\"fe\",\"ff\"];let vn=1234567;const yn=Math.PI/180,En=180/Math.PI;function bn(){const e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,n=4294967295*Math.random()|0,i=4294967295*Math.random()|0;return(gn[255&e]+gn[e>>8&255]+gn[e>>16&255]+gn[e>>24&255]+\"-\"+gn[255&t]+gn[t>>8&255]+\"-\"+gn[t>>16&15|64]+gn[t>>24&255]+\"-\"+gn[63&n|128]+gn[n>>8&255]+\"-\"+gn[n>>16&255]+gn[n>>24&255]+gn[255&i]+gn[i>>8&255]+gn[i>>16&255]+gn[i>>24&255]).toLowerCase()}function xn(e,t,n){return Math.max(t,Math.min(n,e))}function wn(e,t){return(e%t+t)%t}function Cn(e,t,n){return(1-n)*e+n*t}function Mn(e){return 0==(e&e-1)&&0!==e}function _n(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function In(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}function Bn(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw new Error(\"Invalid component type.\")}}function Sn(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw new Error(\"Invalid component type.\")}}var Tn=Object.freeze({__proto__:null,DEG2RAD:yn,RAD2DEG:En,generateUUID:bn,clamp:xn,euclideanModulo:wn,mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},inverseLerp:function(e,t,n){return e!==t?(n-e)/(t-e):0},lerp:Cn,damp:function(e,t,n,i){return Cn(e,t,1-Math.exp(-n*i))},pingpong:function(e,t=1){return t-Math.abs(wn(e,2*t)-t)},smoothstep:function(e,t,n){return e\u003C=t?0:e>=n?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e\u003C=t?0:e>=n?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){void 0!==e&&(vn=e);let t=vn+=1831565813;return t=Math.imul(t^t>>>15,1|t),t^=t+Math.imul(t^t>>>7,61|t),((t^t>>>14)>>>0)/4294967296},degToRad:function(e){return e*yn},radToDeg:function(e){return e*En},isPowerOfTwo:Mn,ceilPowerOfTwo:_n,floorPowerOfTwo:In,setQuaternionFromProperEuler:function(e,t,n,i,r){const s=Math.cos,o=Math.sin,a=s(n/2),l=o(n/2),c=s((t+i)/2),h=o((t+i)/2),u=s((t-i)/2),d=o((t-i)/2),p=s((i-t)/2),A=o((i-t)/2);switch(r){case\"XYX\":e.set(a*h,l*u,l*d,a*c);break;case\"YZY\":e.set(l*d,a*h,l*u,a*c);break;case\"ZXZ\":e.set(l*u,l*d,a*h,a*c);break;case\"XZX\":e.set(a*h,l*A,l*p,a*c);break;case\"YXY\":e.set(l*p,a*h,l*A,a*c);break;case\"ZYZ\":e.set(l*A,l*p,a*h,a*c);break;default:console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \"+r)}},normalize:Sn,denormalize:Bn});class Ln{constructor(e=0,t=0){Ln.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error(\"index is out of range: \"+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error(\"index is out of range: \"+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x\u003C0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y\u003C0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,s=this.y-e.y;return this.x=r*n-s*i+e.x,this.y=r*i+s*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Dn{constructor(){Dn.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(e,t,n,i,r,s,o,a,l){const c=this.elements;return c[0]=e,c[1]=i,c[2]=o,c[3]=t,c[4]=r,c[5]=a,c[6]=n,c[7]=s,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,r=this.elements,s=n[0],o=n[3],a=n[6],l=n[1],c=n[4],h=n[7],u=n[2],d=n[5],p=n[8],A=i[0],f=i[3],m=i[6],g=i[1],v=i[4],y=i[7],E=i[2],b=i[5],x=i[8];return r[0]=s*A+o*g+a*E,r[3]=s*f+o*v+a*b,r[6]=s*m+o*y+a*x,r[1]=l*A+c*g+h*E,r[4]=l*f+c*v+h*b,r[7]=l*m+c*y+h*x,r[2]=u*A+d*g+p*E,r[5]=u*f+d*v+p*b,r[8]=u*m+d*y+p*x,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],s=e[4],o=e[5],a=e[6],l=e[7],c=e[8];return t*s*c-t*o*l-n*r*c+n*o*a+i*r*l-i*s*a}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],s=e[4],o=e[5],a=e[6],l=e[7],c=e[8],h=c*s-o*l,u=o*a-c*r,d=l*r-s*a,p=t*h+n*u+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const A=1/p;return e[0]=h*A,e[1]=(i*l-c*n)*A,e[2]=(o*n-i*s)*A,e[3]=u*A,e[4]=(c*t-i*a)*A,e[5]=(i*r-o*t)*A,e[6]=d*A,e[7]=(n*a-l*t)*A,e[8]=(s*t-n*r)*A,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,r,s,o){const a=Math.cos(r),l=Math.sin(r);return this.set(n*a,n*l,-n*(a*s+l*o)+s+e,-i*l,i*a,-i*(-l*s+a*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Rn.makeScale(e,t)),this}rotate(e){return this.premultiply(Rn.makeRotation(-e)),this}translate(e,t){return this.premultiply(Rn.makeTranslation(e,t)),this}makeTranslation(e,t){return this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let e=0;e\u003C9;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n\u003C9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return(new this.constructor).fromArray(this.elements)}}const Rn=new Dn;function Pn(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}const kn={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Fn(e,t){return new kn[e](t)}function On(e){return document.createElementNS(\"http://www.w3.org/1999/xhtml\",e)}function Qn(e){return e\u003C.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function Un(e){return e\u003C.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}const Nn={[Ut]:{[Nt]:Qn},[Nt]:{[Ut]:Un}},Gn={legacyMode:!0,get workingColorSpace(){return Nt},set workingColorSpace(e){console.warn(\"THREE.ColorManagement: .workingColorSpace is readonly.\")},convert:function(e,t,n){if(this.legacyMode||t===n||!t||!n)return e;if(Nn[t]&&void 0!==Nn[t][n]){const i=Nn[t][n];return e.r=i(e.r),e.g=i(e.g),e.b=i(e.b),e}throw new Error(\"Unsupported color space conversion.\")},fromWorkingColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this.workingColorSpace)}},zn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Hn={r:0,g:0,b:0},Vn={h:0,s:0,l:0},Wn={h:0,s:0,l:0};function jn(e,t,n){return n\u003C0&&(n+=1),n>1&&(n-=1),n\u003C1/6?e+6*(t-e)*n:n\u003C.5?t:n\u003C2/3?e+6*(t-e)*(2/3-n):e}function qn(e,t){return t.r=e.r,t.g=e.g,t.b=e.b,t}class Yn{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,void 0===t&&void 0===n?this.set(e):this.setRGB(e,t,n)}set(e){return e&&e.isColor?this.copy(e):\"number\"==typeof e?this.setHex(e):\"string\"==typeof e&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Ut){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,Gn.toWorkingColorSpace(this,t),this}setRGB(e,t,n,i=Gn.workingColorSpace){return this.r=e,this.g=t,this.b=n,Gn.toWorkingColorSpace(this,i),this}setHSL(e,t,n,i=Gn.workingColorSpace){if(e=wn(e,1),t=xn(t,0,1),n=xn(n,0,1),0===t)this.r=this.g=this.b=n;else{const i=n\u003C=.5?n*(1+t):n+t-n*t,r=2*n-i;this.r=jn(r,i,e+1/3),this.g=jn(r,i,e),this.b=jn(r,i,e-1/3)}return Gn.toWorkingColorSpace(this,i),this}setStyle(e,t=Ut){function n(t){void 0!==t&&parseFloat(t)\u003C1&&console.warn(\"THREE.Color: Alpha component of \"+e+\" will be ignored.\")}let i;if(i=/^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(e)){let e;const r=i[1],s=i[2];switch(r){case\"rgb\":case\"rgba\":if(e=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(e[1],10))/255,this.g=Math.min(255,parseInt(e[2],10))/255,this.b=Math.min(255,parseInt(e[3],10))/255,Gn.toWorkingColorSpace(this,t),n(e[4]),this;if(e=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(e[1],10))/100,this.g=Math.min(100,parseInt(e[2],10))/100,this.b=Math.min(100,parseInt(e[3],10))/100,Gn.toWorkingColorSpace(this,t),n(e[4]),this;break;case\"hsl\":case\"hsla\":if(e=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(s)){const i=parseFloat(e[1])/360,r=parseFloat(e[2])/100,s=parseFloat(e[3])/100;return n(e[4]),this.setHSL(i,r,s,t)}}}else if(i=/^\\#([A-Fa-f\\d]+)$/.exec(e)){const e=i[1],n=e.length;if(3===n)return this.r=parseInt(e.charAt(0)+e.charAt(0),16)/255,this.g=parseInt(e.charAt(1)+e.charAt(1),16)/255,this.b=parseInt(e.charAt(2)+e.charAt(2),16)/255,Gn.toWorkingColorSpace(this,t),this;if(6===n)return this.r=parseInt(e.charAt(0)+e.charAt(1),16)/255,this.g=parseInt(e.charAt(2)+e.charAt(3),16)/255,this.b=parseInt(e.charAt(4)+e.charAt(5),16)/255,Gn.toWorkingColorSpace(this,t),this}return e&&e.length>0?this.setColorName(e,t):this}setColorName(e,t=Ut){const n=zn[e.toLowerCase()];return void 0!==n?this.setHex(n,t):console.warn(\"THREE.Color: Unknown color \"+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Qn(e.r),this.g=Qn(e.g),this.b=Qn(e.b),this}copyLinearToSRGB(e){return this.r=Un(e.r),this.g=Un(e.g),this.b=Un(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Ut){return Gn.fromWorkingColorSpace(qn(this,Hn),e),xn(255*Hn.r,0,255)\u003C\u003C16^xn(255*Hn.g,0,255)\u003C\u003C8^xn(255*Hn.b,0,255)\u003C\u003C0}getHexString(e=Ut){return(\"000000\"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Gn.workingColorSpace){Gn.fromWorkingColorSpace(qn(this,Hn),t);const n=Hn.r,i=Hn.g,r=Hn.b,s=Math.max(n,i,r),o=Math.min(n,i,r);let a,l;const c=(o+s)/2;if(o===s)a=0,l=0;else{const e=s-o;switch(l=c\u003C=.5?e/(s+o):e/(2-s-o),s){case n:a=(i-r)/e+(i\u003Cr?6:0);break;case i:a=(r-n)/e+2;break;case r:a=(n-i)/e+4}a/=6}return e.h=a,e.s=l,e.l=c,e}getRGB(e,t=Gn.workingColorSpace){return Gn.fromWorkingColorSpace(qn(this,Hn),t),e.r=Hn.r,e.g=Hn.g,e.b=Hn.b,e}getStyle(e=Ut){return Gn.fromWorkingColorSpace(qn(this,Hn),e),e!==Ut?`color(${e} ${Hn.r} ${Hn.g} ${Hn.b})`:`rgb(${255*Hn.r|0},${255*Hn.g|0},${255*Hn.b|0})`}offsetHSL(e,t,n){return this.getHSL(Vn),Vn.h+=e,Vn.s+=t,Vn.l+=n,this.setHSL(Vn.h,Vn.s,Vn.l),this}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(Vn),e.getHSL(Wn);const n=Cn(Vn.h,Wn.h,t),i=Cn(Vn.s,Wn.s,t),r=Cn(Vn.l,Wn.l,t);return this.setHSL(n,i,r),this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}let Xn;Yn.NAMES=zn;class Jn{static getDataURL(e){if(/^data:/i.test(e.src))return e.src;if(\"undefined\"==typeof HTMLCanvasElement)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{void 0===Xn&&(Xn=On(\"canvas\")),Xn.width=e.width,Xn.height=e.height;const n=Xn.getContext(\"2d\");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=Xn}return t.width>2048||t.height>2048?(console.warn(\"THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons\",e),t.toDataURL(\"image/jpeg\",.6)):t.toDataURL(\"image/png\")}static sRGBToLinear(e){if(\"undefined\"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||\"undefined\"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||\"undefined\"!=typeof ImageBitmap&&e instanceof ImageBitmap){const t=On(\"canvas\");t.width=e.width,t.height=e.height;const n=t.getContext(\"2d\");n.drawImage(e,0,0,e.width,e.height);const i=n.getImageData(0,0,e.width,e.height),r=i.data;for(let e=0;e\u003Cr.length;e++)r[e]=255*Qn(r[e]/255);return n.putImageData(i,0,0),t}if(e.data){const t=e.data.slice(0);for(let e=0;e\u003Ct.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(255*Qn(t[e]/255)):t[e]=Qn(t[e]);return{data:t,width:e.width,height:e.height}}return console.warn(\"THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.\"),e}}class Kn{constructor(e=null){this.isSource=!0,this.uuid=bn(),this.data=e,this.version=0}set needsUpdate(e){!0===e&&this.version++}toJSON(e){const t=void 0===e||\"string\"==typeof e;if(!t&&void 0!==e.images[this.uuid])return e.images[this.uuid];const n={uuid:this.uuid,url:\"\"},i=this.data;if(null!==i){let e;if(Array.isArray(i)){e=[];for(let t=0,n=i.length;t\u003Cn;t++)i[t].isDataTexture?e.push(Zn(i[t].image)):e.push(Zn(i[t]))}else e=Zn(i);n.url=e}return t||(e.images[this.uuid]=n),n}}function Zn(e){return\"undefined\"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||\"undefined\"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||\"undefined\"!=typeof ImageBitmap&&e instanceof ImageBitmap?Jn.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(console.warn(\"THREE.Texture: Unable to serialize Texture.\"),{})}let $n=0;class ei extends mn{constructor(e=ei.DEFAULT_IMAGE,t=ei.DEFAULT_MAPPING,n=ue,i=ue,r=ve,s=be,o=Fe,a=we,l=ei.DEFAULT_ANISOTROPY,c=Dt){super(),this.isTexture=!0,Object.defineProperty(this,\"id\",{value:$n++}),this.uuid=bn(),this.name=\"\",this.source=new Kn(e),this.mipmaps=[],this.mapping=t,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=s,this.anisotropy=l,this.format=o,this.internalFormat=null,this.type=a,this.offset=new Ln(0,0),this.repeat=new Ln(1,1),this.center=new Ln(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Dn,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=c,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.needsPMREMUpdate=!1}get image(){return this.source.data}set image(e){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return(new this.constructor).copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}toJSON(e){const t=void 0===e||\"string\"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];const n={metadata:{version:4.5,type:\"Texture\",generator:\"Texture.toJSON\"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return\"{}\"!==JSON.stringify(this.userData)&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:\"dispose\"})}transformUv(e){if(this.mapping!==re)return e;if(e.applyMatrix3(this.matrix),e.x\u003C0||e.x>1)switch(this.wrapS){case he:e.x=e.x-Math.floor(e.x);break;case ue:e.x=e.x\u003C0?0:1;break;case de:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y\u003C0||e.y>1)switch(this.wrapT){case he:e.y=e.y-Math.floor(e.y);break;case ue:e.y=e.y\u003C0?0:1;break;case de:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}}ei.DEFAULT_IMAGE=null,ei.DEFAULT_MAPPING=re,ei.DEFAULT_ANISOTROPY=1;class ti{constructor(e=0,t=0,n=0,i=1){ti.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error(\"index is out of range: \"+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error(\"index is out of range: \"+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,r=this.w,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*i+s[12]*r,this.y=s[1]*t+s[5]*n+s[9]*i+s[13]*r,this.z=s[2]*t+s[6]*n+s[10]*i+s[14]*r,this.w=s[3]*t+s[7]*n+s[11]*i+s[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t\u003C1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,r;const s=.01,o=.1,a=e.elements,l=a[0],c=a[4],h=a[8],u=a[1],d=a[5],p=a[9],A=a[2],f=a[6],m=a[10];if(Math.abs(c-u)\u003Cs&&Math.abs(h-A)\u003Cs&&Math.abs(p-f)\u003Cs){if(Math.abs(c+u)\u003Co&&Math.abs(h+A)\u003Co&&Math.abs(p+f)\u003Co&&Math.abs(l+d+m-3)\u003Co)return this.set(1,0,0,0),this;t=Math.PI;const e=(l+1)/2,a=(d+1)/2,g=(m+1)/2,v=(c+u)/4,y=(h+A)/4,E=(p+f)/4;return e>a&&e>g?e\u003Cs?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(e),i=v/n,r=y/n):a>g?a\u003Cs?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(a),n=v/i,r=E/i):g\u003Cs?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(g),n=y/r,i=E/r),this.set(n,i,r,t),this}let g=Math.sqrt((f-p)*(f-p)+(h-A)*(h-A)+(u-c)*(u-c));return Math.abs(g)\u003C.001&&(g=1),this.x=(f-p)/g,this.y=(h-A)/g,this.z=(u-c)/g,this.w=Math.acos((l+d+m-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x\u003C0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y\u003C0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z\u003C0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w\u003C0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class ni extends mn{constructor(e=1,t=1,n={}){super(),this.isWebGLRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new ti(0,0,e,t),this.scissorTest=!1,this.viewport=new ti(0,0,e,t);const i={width:e,height:t,depth:1};this.texture=new ei(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=void 0!==n.generateMipmaps&&n.generateMipmaps,this.texture.internalFormat=void 0!==n.internalFormat?n.internalFormat:null,this.texture.minFilter=void 0!==n.minFilter?n.minFilter:ve,this.depthBuffer=void 0===n.depthBuffer||n.depthBuffer,this.stencilBuffer=void 0!==n.stencilBuffer&&n.stencilBuffer,this.depthTexture=void 0!==n.depthTexture?n.depthTexture:null,this.samples=void 0!==n.samples?n.samples:0}setSize(e,t,n=1){this.width===e&&this.height===t&&this.depth===n||(this.width=e,this.height=t,this.depth=n,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return(new this.constructor).copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},e.texture.image);return this.texture.source=new Kn(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:\"dispose\"})}}class ii extends ei{constructor(e=null,t=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=pe,this.minFilter=pe,this.wrapR=ue,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class ri extends ni{constructor(e=1,t=1,n=1){super(e,t),this.isWebGLArrayRenderTarget=!0,this.depth=n,this.texture=new ii(null,e,t,n),this.texture.isRenderTargetTexture=!0}}class si extends ei{constructor(e=null,t=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=pe,this.minFilter=pe,this.wrapR=ue,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class oi extends ni{constructor(e=1,t=1,n=1){super(e,t),this.isWebGL3DRenderTarget=!0,this.depth=n,this.texture=new si(null,e,t,n),this.texture.isRenderTargetTexture=!0}}class ai extends ni{constructor(e=1,t=1,n=1,i={}){super(e,t,i),this.isWebGLMultipleRenderTargets=!0;const r=this.texture;this.texture=[];for(let e=0;e\u003Cn;e++)this.texture[e]=r.clone(),this.texture[e].isRenderTargetTexture=!0}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let i=0,r=this.texture.length;i\u003Cr;i++)this.texture[i].image.width=e,this.texture[i].image.height=t,this.texture[i].image.depth=n;this.dispose()}return this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t),this}copy(e){this.dispose(),this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.set(0,0,this.width,this.height),this.scissor.set(0,0,this.width,this.height),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.texture.length=0;for(let t=0,n=e.texture.length;t\u003Cn;t++)this.texture[t]=e.texture[t].clone(),this.texture[t].isRenderTargetTexture=!0;return this}}class li{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,r,s,o){let a=n[i+0],l=n[i+1],c=n[i+2],h=n[i+3];const u=r[s+0],d=r[s+1],p=r[s+2],A=r[s+3];if(0===o)return e[t+0]=a,e[t+1]=l,e[t+2]=c,void(e[t+3]=h);if(1===o)return e[t+0]=u,e[t+1]=d,e[t+2]=p,void(e[t+3]=A);if(h!==A||a!==u||l!==d||c!==p){let e=1-o;const t=a*u+l*d+c*p+h*A,n=t>=0?1:-1,i=1-t*t;if(i>Number.EPSILON){const r=Math.sqrt(i),s=Math.atan2(r,t*n);e=Math.sin(e*s)/r,o=Math.sin(o*s)/r}const r=o*n;if(a=a*e+u*r,l=l*e+d*r,c=c*e+p*r,h=h*e+A*r,e===1-o){const e=1/Math.sqrt(a*a+l*l+c*c+h*h);a*=e,l*=e,c*=e,h*=e}}e[t]=a,e[t+1]=l,e[t+2]=c,e[t+3]=h}static multiplyQuaternionsFlat(e,t,n,i,r,s){const o=n[i],a=n[i+1],l=n[i+2],c=n[i+3],h=r[s],u=r[s+1],d=r[s+2],p=r[s+3];return e[t]=o*p+c*h+a*d-l*u,e[t+1]=a*p+c*u+l*h-o*d,e[t+2]=l*p+c*d+o*u-a*h,e[t+3]=c*p-o*h-a*u-l*d,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){const n=e._x,i=e._y,r=e._z,s=e._order,o=Math.cos,a=Math.sin,l=o(n/2),c=o(i/2),h=o(r/2),u=a(n/2),d=a(i/2),p=a(r/2);switch(s){case\"XYZ\":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case\"YXZ\":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case\"ZXY\":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case\"ZYX\":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case\"YZX\":this._x=u*c*h+l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h-u*d*p;break;case\"XZY\":this._x=u*c*h-l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h+u*d*p;break;default:console.warn(\"THREE.Quaternion: .setFromEuler() encountered an unknown order: \"+s)}return!1!==t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],r=t[8],s=t[1],o=t[5],a=t[9],l=t[2],c=t[6],h=t[10],u=n+o+h;if(u>0){const e=.5/Math.sqrt(u+1);this._w=.25/e,this._x=(c-a)*e,this._y=(r-l)*e,this._z=(s-i)*e}else if(n>o&&n>h){const e=2*Math.sqrt(1+n-o-h);this._w=(c-a)/e,this._x=.25*e,this._y=(i+s)/e,this._z=(r+l)/e}else if(o>h){const e=2*Math.sqrt(1+o-n-h);this._w=(r-l)/e,this._x=(i+s)/e,this._y=.25*e,this._z=(a+c)/e}else{const e=2*Math.sqrt(1+h-n-o);this._w=(s-i)/e,this._x=(r+l)/e,this._y=(a+c)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n\u003CNumber.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(xn(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(0===n)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,r=e._z,s=e._w,o=t._x,a=t._y,l=t._z,c=t._w;return this._x=n*c+s*o+i*l-r*a,this._y=i*c+s*a+r*o-n*l,this._z=r*c+s*l+n*a-i*o,this._w=s*c-n*o-i*a-r*l,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);const n=this._x,i=this._y,r=this._z,s=this._w;let o=s*e._w+n*e._x+i*e._y+r*e._z;if(o\u003C0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=s,this._x=n,this._y=i,this._z=r,this;const a=1-o*o;if(a\u003C=Number.EPSILON){const e=1-t;return this._w=e*s+t*this._w,this._x=e*n+t*this._x,this._y=e*i+t*this._y,this._z=e*r+t*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(a),c=Math.atan2(l,o),h=Math.sin((1-t)*c)/l,u=Math.sin(t*c)/l;return this._w=s*h+this._w*u,this._x=n*h+this._x*u,this._y=i*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=Math.random(),t=Math.sqrt(1-e),n=Math.sqrt(e),i=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(i),n*Math.sin(r),n*Math.cos(r),t*Math.sin(i))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class ci{constructor(e=0,t=0,n=0){ci.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return void 0===n&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error(\"index is out of range: \"+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error(\"index is out of range: \"+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(ui.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(ui.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,r=e.elements,s=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*s,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*s,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*s,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,r=e.x,s=e.y,o=e.z,a=e.w,l=a*t+s*i-o*n,c=a*n+o*t-r*i,h=a*i+r*n-s*t,u=-r*t-s*n-o*i;return this.x=l*a+u*-r+c*-o-h*-s,this.y=c*a+u*-s+h*-r-l*-o,this.z=h*a+u*-o+l*-s-c*-r,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x\u003C0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y\u003C0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z\u003C0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,r=e.z,s=t.x,o=t.y,a=t.z;return this.x=i*a-r*o,this.y=r*s-n*a,this.z=n*o-i*s,this}projectOnVector(e){const t=e.lengthSq();if(0===t)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return hi.copy(this).projectOnVector(e),this.sub(hi)}reflect(e){return this.sub(hi.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(xn(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=2*(Math.random()-.5),t=Math.random()*Math.PI*2,n=Math.sqrt(1-e**2);return this.x=n*Math.cos(t),this.y=n*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const hi=new ci,ui=new li;class di{constructor(e=new ci(1/0,1/0,1/0),t=new ci(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,n=1/0,i=1/0,r=-1/0,s=-1/0,o=-1/0;for(let a=0,l=e.length;a\u003Cl;a+=3){const l=e[a],c=e[a+1],h=e[a+2];l\u003Ct&&(t=l),c\u003Cn&&(n=c),h\u003Ci&&(i=h),l>r&&(r=l),c>s&&(s=c),h>o&&(o=h)}return this.min.set(t,n,i),this.max.set(r,s,o),this}setFromBufferAttribute(e){let t=1/0,n=1/0,i=1/0,r=-1/0,s=-1/0,o=-1/0;for(let a=0,l=e.count;a\u003Cl;a++){const l=e.getX(a),c=e.getY(a),h=e.getZ(a);l\u003Ct&&(t=l),c\u003Cn&&(n=c),h\u003Ci&&(i=h),l>r&&(r=l),c>s&&(s=c),h>o&&(o=h)}return this.min.set(t,n,i),this.max.set(r,s,o),this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t\u003Cn;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const n=Ai.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return(new this.constructor).copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x\u003Cthis.min.x||this.max.y\u003Cthis.min.y||this.max.z\u003Cthis.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const n=e.geometry;if(void 0!==n)if(t&&null!=n.attributes&&void 0!==n.attributes.position){const t=n.attributes.position;for(let n=0,i=t.count;n\u003Ci;n++)Ai.fromBufferAttribute(t,n).applyMatrix4(e.matrixWorld),this.expandByPoint(Ai)}else null===n.boundingBox&&n.computeBoundingBox(),fi.copy(n.boundingBox),fi.applyMatrix4(e.matrixWorld),this.union(fi);const i=e.children;for(let e=0,n=i.length;e\u003Cn;e++)this.expandByObject(i[e],t);return this}containsPoint(e){return!(e.x\u003Cthis.min.x||e.x>this.max.x||e.y\u003Cthis.min.y||e.y>this.max.y||e.z\u003Cthis.min.z||e.z>this.max.z)}containsBox(e){return this.min.x\u003C=e.min.x&&e.max.x\u003C=this.max.x&&this.min.y\u003C=e.min.y&&e.max.y\u003C=this.max.y&&this.min.z\u003C=e.min.z&&e.max.z\u003C=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.x\u003Cthis.min.x||e.min.x>this.max.x||e.max.y\u003Cthis.min.y||e.min.y>this.max.y||e.max.z\u003Cthis.min.z||e.min.z>this.max.z)}intersectsSphere(e){return this.clampPoint(e.center,Ai),Ai.distanceToSquared(e.center)\u003C=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t\u003C=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(xi),wi.subVectors(this.max,xi),mi.subVectors(e.a,xi),gi.subVectors(e.b,xi),vi.subVectors(e.c,xi),yi.subVectors(gi,mi),Ei.subVectors(vi,gi),bi.subVectors(mi,vi);let t=[0,-yi.z,yi.y,0,-Ei.z,Ei.y,0,-bi.z,bi.y,yi.z,0,-yi.x,Ei.z,0,-Ei.x,bi.z,0,-bi.x,-yi.y,yi.x,0,-Ei.y,Ei.x,0,-bi.y,bi.x,0];return!!_i(t,mi,gi,vi,wi)&&(t=[1,0,0,0,1,0,0,0,1],!!_i(t,mi,gi,vi,wi)&&(Ci.crossVectors(yi,Ei),t=[Ci.x,Ci.y,Ci.z],_i(t,mi,gi,vi,wi)))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return Ai.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=.5*this.getSize(Ai).length(),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(pi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),pi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),pi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),pi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),pi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),pi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),pi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),pi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(pi)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const pi=[new ci,new ci,new ci,new ci,new ci,new ci,new ci,new ci],Ai=new ci,fi=new di,mi=new ci,gi=new ci,vi=new ci,yi=new ci,Ei=new ci,bi=new ci,xi=new ci,wi=new ci,Ci=new ci,Mi=new ci;function _i(e,t,n,i,r){for(let s=0,o=e.length-3;s\u003C=o;s+=3){Mi.fromArray(e,s);const o=r.x*Math.abs(Mi.x)+r.y*Math.abs(Mi.y)+r.z*Math.abs(Mi.z),a=t.dot(Mi),l=n.dot(Mi),c=i.dot(Mi);if(Math.max(-Math.max(a,l,c),Math.min(a,l,c))>o)return!1}return!0}const Ii=new di,Bi=new ci,Si=new ci;class Ti{constructor(e=new ci,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;void 0!==t?n.copy(t):Ii.setFromPoints(e).getCenter(n);let i=0;for(let t=0,r=e.length;t\u003Cr;t++)i=Math.max(i,n.distanceToSquared(e[t]));return this.radius=Math.sqrt(i),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius\u003C0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)\u003C=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)\u003C=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))\u003C=this.radius}clampPoint(e,t){const n=this.center.distanceToSquared(e);return t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Bi.subVectors(e,this.center);const t=Bi.lengthSq();if(t>this.radius*this.radius){const e=Math.sqrt(t),n=.5*(e-this.radius);this.center.addScaledVector(Bi,n/e),this.radius+=n}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(Si.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Bi.copy(e.center).add(Si)),this.expandByPoint(Bi.copy(e.center).sub(Si))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const Li=new ci,Di=new ci,Ri=new ci,Pi=new ci,ki=new ci,Fi=new ci,Oi=new ci;class Qi{constructor(e=new ci,t=new ci(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Li)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n\u003C0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Li.subVectors(e,this.origin).dot(this.direction);return t\u003C0?this.origin.distanceToSquared(e):(Li.copy(this.direction).multiplyScalar(t).add(this.origin),Li.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){Di.copy(e).add(t).multiplyScalar(.5),Ri.copy(t).sub(e).normalize(),Pi.copy(this.origin).sub(Di);const r=.5*e.distanceTo(t),s=-this.direction.dot(Ri),o=Pi.dot(this.direction),a=-Pi.dot(Ri),l=Pi.lengthSq(),c=Math.abs(1-s*s);let h,u,d,p;if(c>0)if(h=s*a-o,u=s*o-a,p=r*c,h>=0)if(u>=-p)if(u\u003C=p){const e=1/c;h*=e,u*=e,d=h*(h+s*u+2*o)+u*(s*h+u+2*a)+l}else u=r,h=Math.max(0,-(s*u+o)),d=-h*h+u*(u+2*a)+l;else u=-r,h=Math.max(0,-(s*u+o)),d=-h*h+u*(u+2*a)+l;else u\u003C=-p?(h=Math.max(0,-(-s*r+o)),u=h>0?-r:Math.min(Math.max(-r,-a),r),d=-h*h+u*(u+2*a)+l):u\u003C=p?(h=0,u=Math.min(Math.max(-r,-a),r),d=u*(u+2*a)+l):(h=Math.max(0,-(s*r+o)),u=h>0?r:Math.min(Math.max(-r,-a),r),d=-h*h+u*(u+2*a)+l);else u=s>0?-r:r,h=Math.max(0,-(s*u+o)),d=-h*h+u*(u+2*a)+l;return n&&n.copy(this.direction).multiplyScalar(h).add(this.origin),i&&i.copy(Ri).multiplyScalar(u).add(Di),d}intersectSphere(e,t){Li.subVectors(e.center,this.origin);const n=Li.dot(this.direction),i=Li.dot(Li)-n*n,r=e.radius*e.radius;if(i>r)return null;const s=Math.sqrt(r-i),o=n-s,a=n+s;return o\u003C0&&a\u003C0?null:o\u003C0?this.at(a,t):this.at(o,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)\u003C=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return null===n?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t\u003C0}intersectBox(e,t){let n,i,r,s,o,a;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(n=(e.min.x-u.x)*l,i=(e.max.x-u.x)*l):(n=(e.max.x-u.x)*l,i=(e.min.x-u.x)*l),c>=0?(r=(e.min.y-u.y)*c,s=(e.max.y-u.y)*c):(r=(e.max.y-u.y)*c,s=(e.min.y-u.y)*c),n>s||r>i?null:((r>n||isNaN(n))&&(n=r),(s\u003Ci||isNaN(i))&&(i=s),h>=0?(o=(e.min.z-u.z)*h,a=(e.max.z-u.z)*h):(o=(e.max.z-u.z)*h,a=(e.min.z-u.z)*h),n>a||o>i?null:((o>n||n!=n)&&(n=o),(a\u003Ci||i!=i)&&(i=a),i\u003C0?null:this.at(n>=0?n:i,t)))}intersectsBox(e){return null!==this.intersectBox(e,Li)}intersectTriangle(e,t,n,i,r){ki.subVectors(t,e),Fi.subVectors(n,e),Oi.crossVectors(ki,Fi);let s,o=this.direction.dot(Oi);if(o>0){if(i)return null;s=1}else{if(!(o\u003C0))return null;s=-1,o=-o}Pi.subVectors(this.origin,e);const a=s*this.direction.dot(Fi.crossVectors(Pi,Fi));if(a\u003C0)return null;const l=s*this.direction.dot(ki.cross(Pi));if(l\u003C0)return null;if(a+l>o)return null;const c=-s*Pi.dot(Oi);return c\u003C0?null:this.at(c/o,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class Ui{constructor(){Ui.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,n,i,r,s,o,a,l,c,h,u,d,p,A,f){const m=this.elements;return m[0]=e,m[4]=t,m[8]=n,m[12]=i,m[1]=r,m[5]=s,m[9]=o,m[13]=a,m[2]=l,m[6]=c,m[10]=h,m[14]=u,m[3]=d,m[7]=p,m[11]=A,m[15]=f,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new Ui).fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/Ni.setFromMatrixColumn(e,0).length(),r=1/Ni.setFromMatrixColumn(e,1).length(),s=1/Ni.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*s,t[9]=n[9]*s,t[10]=n[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,r=e.z,s=Math.cos(n),o=Math.sin(n),a=Math.cos(i),l=Math.sin(i),c=Math.cos(r),h=Math.sin(r);if(\"XYZ\"===e.order){const e=s*c,n=s*h,i=o*c,r=o*h;t[0]=a*c,t[4]=-a*h,t[8]=l,t[1]=n+i*l,t[5]=e-r*l,t[9]=-o*a,t[2]=r-e*l,t[6]=i+n*l,t[10]=s*a}else if(\"YXZ\"===e.order){const e=a*c,n=a*h,i=l*c,r=l*h;t[0]=e+r*o,t[4]=i*o-n,t[8]=s*l,t[1]=s*h,t[5]=s*c,t[9]=-o,t[2]=n*o-i,t[6]=r+e*o,t[10]=s*a}else if(\"ZXY\"===e.order){const e=a*c,n=a*h,i=l*c,r=l*h;t[0]=e-r*o,t[4]=-s*h,t[8]=i+n*o,t[1]=n+i*o,t[5]=s*c,t[9]=r-e*o,t[2]=-s*l,t[6]=o,t[10]=s*a}else if(\"ZYX\"===e.order){const e=s*c,n=s*h,i=o*c,r=o*h;t[0]=a*c,t[4]=i*l-n,t[8]=e*l+r,t[1]=a*h,t[5]=r*l+e,t[9]=n*l-i,t[2]=-l,t[6]=o*a,t[10]=s*a}else if(\"YZX\"===e.order){const e=s*a,n=s*l,i=o*a,r=o*l;t[0]=a*c,t[4]=r-e*h,t[8]=i*h+n,t[1]=h,t[5]=s*c,t[9]=-o*c,t[2]=-l*c,t[6]=n*h+i,t[10]=e-r*h}else if(\"XZY\"===e.order){const e=s*a,n=s*l,i=o*a,r=o*l;t[0]=a*c,t[4]=-h,t[8]=l*c,t[1]=e*h+r,t[5]=s*c,t[9]=n*h-i,t[2]=i*h-n,t[6]=o*c,t[10]=r*h+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(zi,e,Hi)}lookAt(e,t,n){const i=this.elements;return ji.subVectors(e,t),0===ji.lengthSq()&&(ji.z=1),ji.normalize(),Vi.crossVectors(n,ji),0===Vi.lengthSq()&&(1===Math.abs(n.z)?ji.x+=1e-4:ji.z+=1e-4,ji.normalize(),Vi.crossVectors(n,ji)),Vi.normalize(),Wi.crossVectors(ji,Vi),i[0]=Vi.x,i[4]=Wi.x,i[8]=ji.x,i[1]=Vi.y,i[5]=Wi.y,i[9]=ji.y,i[2]=Vi.z,i[6]=Wi.z,i[10]=ji.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,r=this.elements,s=n[0],o=n[4],a=n[8],l=n[12],c=n[1],h=n[5],u=n[9],d=n[13],p=n[2],A=n[6],f=n[10],m=n[14],g=n[3],v=n[7],y=n[11],E=n[15],b=i[0],x=i[4],w=i[8],C=i[12],M=i[1],_=i[5],I=i[9],B=i[13],S=i[2],T=i[6],L=i[10],D=i[14],R=i[3],P=i[7],k=i[11],F=i[15];return r[0]=s*b+o*M+a*S+l*R,r[4]=s*x+o*_+a*T+l*P,r[8]=s*w+o*I+a*L+l*k,r[12]=s*C+o*B+a*D+l*F,r[1]=c*b+h*M+u*S+d*R,r[5]=c*x+h*_+u*T+d*P,r[9]=c*w+h*I+u*L+d*k,r[13]=c*C+h*B+u*D+d*F,r[2]=p*b+A*M+f*S+m*R,r[6]=p*x+A*_+f*T+m*P,r[10]=p*w+A*I+f*L+m*k,r[14]=p*C+A*B+f*D+m*F,r[3]=g*b+v*M+y*S+E*R,r[7]=g*x+v*_+y*T+E*P,r[11]=g*w+v*I+y*L+E*k,r[15]=g*C+v*B+y*D+E*F,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],s=e[1],o=e[5],a=e[9],l=e[13],c=e[2],h=e[6],u=e[10],d=e[14];return e[3]*(+r*a*h-i*l*h-r*o*u+n*l*u+i*o*d-n*a*d)+e[7]*(+t*a*d-t*l*u+r*s*u-i*s*d+i*l*c-r*a*c)+e[11]*(+t*l*h-t*o*d-r*s*h+n*s*d+r*o*c-n*l*c)+e[15]*(-i*o*c-t*a*h+t*o*u+i*s*h-n*s*u+n*a*c)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],s=e[4],o=e[5],a=e[6],l=e[7],c=e[8],h=e[9],u=e[10],d=e[11],p=e[12],A=e[13],f=e[14],m=e[15],g=h*f*l-A*u*l+A*a*d-o*f*d-h*a*m+o*u*m,v=p*u*l-c*f*l-p*a*d+s*f*d+c*a*m-s*u*m,y=c*A*l-p*h*l+p*o*d-s*A*d-c*o*m+s*h*m,E=p*h*a-c*A*a-p*o*u+s*A*u+c*o*f-s*h*f,b=t*g+n*v+i*y+r*E;if(0===b)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const x=1/b;return e[0]=g*x,e[1]=(A*u*r-h*f*r-A*i*d+n*f*d+h*i*m-n*u*m)*x,e[2]=(o*f*r-A*a*r+A*i*l-n*f*l-o*i*m+n*a*m)*x,e[3]=(h*a*r-o*u*r-h*i*l+n*u*l+o*i*d-n*a*d)*x,e[4]=v*x,e[5]=(c*f*r-p*u*r+p*i*d-t*f*d-c*i*m+t*u*m)*x,e[6]=(p*a*r-s*f*r-p*i*l+t*f*l+s*i*m-t*a*m)*x,e[7]=(s*u*r-c*a*r+c*i*l-t*u*l-s*i*d+t*a*d)*x,e[8]=y*x,e[9]=(p*h*r-c*A*r-p*n*d+t*A*d+c*n*m-t*h*m)*x,e[10]=(s*A*r-p*o*r+p*n*l-t*A*l-s*n*m+t*o*m)*x,e[11]=(c*o*r-s*h*r-c*n*l+t*h*l+s*n*d-t*o*d)*x,e[12]=E*x,e[13]=(c*A*i-p*h*i+p*n*u-t*A*u-c*n*f+t*h*f)*x,e[14]=(p*o*i-s*A*i-p*n*a+t*A*a+s*n*f-t*o*f)*x,e[15]=(s*h*i-c*o*i+c*n*a-t*h*a-s*n*u+t*o*u)*x,this}scale(e){const t=this.elements,n=e.x,i=e.y,r=e.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),r=1-n,s=e.x,o=e.y,a=e.z,l=r*s,c=r*o;return this.set(l*s+n,l*o-i*a,l*a+i*o,0,l*o+i*a,c*o+n,c*a-i*s,0,l*a-i*o,c*a+i*s,r*a*a+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,r,s){return this.set(1,n,r,0,e,1,s,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,r=t._x,s=t._y,o=t._z,a=t._w,l=r+r,c=s+s,h=o+o,u=r*l,d=r*c,p=r*h,A=s*c,f=s*h,m=o*h,g=a*l,v=a*c,y=a*h,E=n.x,b=n.y,x=n.z;return i[0]=(1-(A+m))*E,i[1]=(d+y)*E,i[2]=(p-v)*E,i[3]=0,i[4]=(d-y)*b,i[5]=(1-(u+m))*b,i[6]=(f+g)*b,i[7]=0,i[8]=(p+v)*x,i[9]=(f-g)*x,i[10]=(1-(u+A))*x,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let r=Ni.set(i[0],i[1],i[2]).length();const s=Ni.set(i[4],i[5],i[6]).length(),o=Ni.set(i[8],i[9],i[10]).length();this.determinant()\u003C0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],Gi.copy(this);const a=1/r,l=1/s,c=1/o;return Gi.elements[0]*=a,Gi.elements[1]*=a,Gi.elements[2]*=a,Gi.elements[4]*=l,Gi.elements[5]*=l,Gi.elements[6]*=l,Gi.elements[8]*=c,Gi.elements[9]*=c,Gi.elements[10]*=c,t.setFromRotationMatrix(Gi),n.x=r,n.y=s,n.z=o,this}makePerspective(e,t,n,i,r,s){const o=this.elements,a=2*r/(t-e),l=2*r/(n-i),c=(t+e)/(t-e),h=(n+i)/(n-i),u=-(s+r)/(s-r),d=-2*s*r/(s-r);return o[0]=a,o[4]=0,o[8]=c,o[12]=0,o[1]=0,o[5]=l,o[9]=h,o[13]=0,o[2]=0,o[6]=0,o[10]=u,o[14]=d,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(e,t,n,i,r,s){const o=this.elements,a=1/(t-e),l=1/(n-i),c=1/(s-r),h=(t+e)*a,u=(n+i)*l,d=(s+r)*c;return o[0]=2*a,o[4]=0,o[8]=0,o[12]=-h,o[1]=0,o[5]=2*l,o[9]=0,o[13]=-u,o[2]=0,o[6]=0,o[10]=-2*c,o[14]=-d,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let e=0;e\u003C16;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n\u003C16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const Ni=new ci,Gi=new Ui,zi=new ci(0,0,0),Hi=new ci(1,1,1),Vi=new ci,Wi=new ci,ji=new ci,qi=new Ui,Yi=new li;class Xi{constructor(e=0,t=0,n=0,i=Xi.DefaultOrder){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,r=i[0],s=i[4],o=i[8],a=i[1],l=i[5],c=i[9],h=i[2],u=i[6],d=i[10];switch(t){case\"XYZ\":this._y=Math.asin(xn(o,-1,1)),Math.abs(o)\u003C.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(u,l),this._z=0);break;case\"YXZ\":this._x=Math.asin(-xn(c,-1,1)),Math.abs(c)\u003C.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(a,l)):(this._y=Math.atan2(-h,r),this._z=0);break;case\"ZXY\":this._x=Math.asin(xn(u,-1,1)),Math.abs(u)\u003C.9999999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(a,r));break;case\"ZYX\":this._y=Math.asin(-xn(h,-1,1)),Math.abs(h)\u003C.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(a,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case\"YZX\":this._z=Math.asin(xn(a,-1,1)),Math.abs(a)\u003C.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(o,d));break;case\"XZY\":this._z=Math.asin(-xn(s,-1,1)),Math.abs(s)\u003C.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \"+t)}return this._order=t,!0===n&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return qi.makeRotationFromQuaternion(e),this.setFromRotationMatrix(qi,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Yi.setFromEuler(this),this.setFromQuaternion(Yi,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}toVector3(){console.error(\"THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead\")}}Xi.DefaultOrder=\"XYZ\",Xi.RotationOrders=[\"XYZ\",\"YZX\",\"ZXY\",\"XZY\",\"YXZ\",\"ZYX\"];class Ji{constructor(){this.mask=1}set(e){this.mask=(1\u003C\u003Ce|0)>>>0}enable(e){this.mask|=1\u003C\u003Ce|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1\u003C\u003Ce|0}disable(e){this.mask&=~(1\u003C\u003Ce|0)}disableAll(){this.mask=0}test(e){return 0!=(this.mask&e.mask)}isEnabled(e){return 0!=(this.mask&(1\u003C\u003Ce|0))}}let Ki=0;const Zi=new ci,$i=new li,er=new Ui,tr=new ci,nr=new ci,ir=new ci,rr=new li,sr=new ci(1,0,0),or=new ci(0,1,0),ar=new ci(0,0,1),lr={type:\"added\"},cr={type:\"removed\"};class hr extends mn{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,\"id\",{value:Ki++}),this.uuid=bn(),this.name=\"\",this.type=\"Object3D\",this.parent=null,this.children=[],this.up=hr.DefaultUp.clone();const e=new ci,t=new Xi,n=new li,i=new ci(1,1,1);t._onChange((function(){n.setFromEuler(t,!1)})),n._onChange((function(){t.setFromQuaternion(n,void 0,!1)})),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new Ui},normalMatrix:{value:new Dn}}),this.matrix=new Ui,this.matrixWorld=new Ui,this.matrixAutoUpdate=hr.DefaultMatrixAutoUpdate,this.matrixWorldNeedsUpdate=!1,this.matrixWorldAutoUpdate=hr.DefaultMatrixWorldAutoUpdate,this.layers=new Ji,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return $i.setFromAxisAngle(e,t),this.quaternion.multiply($i),this}rotateOnWorldAxis(e,t){return $i.setFromAxisAngle(e,t),this.quaternion.premultiply($i),this}rotateX(e){return this.rotateOnAxis(sr,e)}rotateY(e){return this.rotateOnAxis(or,e)}rotateZ(e){return this.rotateOnAxis(ar,e)}translateOnAxis(e,t){return Zi.copy(e).applyQuaternion(this.quaternion),this.position.add(Zi.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(sr,e)}translateY(e){return this.translateOnAxis(or,e)}translateZ(e){return this.translateOnAxis(ar,e)}localToWorld(e){return e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return e.applyMatrix4(er.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?tr.copy(e):tr.set(e,t,n);const i=this.parent;this.updateWorldMatrix(!0,!1),nr.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?er.lookAt(nr,tr,this.up):er.lookAt(tr,nr,this.up),this.quaternion.setFromRotationMatrix(er),i&&(er.extractRotation(i.matrixWorld),$i.setFromRotationMatrix(er),this.quaternion.premultiply($i.invert()))}add(e){if(arguments.length>1){for(let e=0;e\u003Carguments.length;e++)this.add(arguments[e]);return this}return e===this?(console.error(\"THREE.Object3D.add: object can't be added as a child of itself.\",e),this):(e&&e.isObject3D?(null!==e.parent&&e.parent.remove(e),e.parent=this,this.children.push(e),e.dispatchEvent(lr)):console.error(\"THREE.Object3D.add: object not an instance of THREE.Object3D.\",e),this)}remove(e){if(arguments.length>1){for(let e=0;e\u003Carguments.length;e++)this.remove(arguments[e]);return this}const t=this.children.indexOf(e);return-1!==t&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(cr)),this}removeFromParent(){const e=this.parent;return null!==e&&e.remove(this),this}clear(){for(let e=0;e\u003Cthis.children.length;e++){const t=this.children[e];t.parent=null,t.dispatchEvent(cr)}return this.children.length=0,this}attach(e){return this.updateWorldMatrix(!0,!1),er.copy(this.matrixWorld).invert(),null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),er.multiply(e.parent.matrixWorld)),e.applyMatrix4(er),this.add(e),e.updateWorldMatrix(!1,!0),this}getObjectById(e){return this.getObjectByProperty(\"id\",e)}getObjectByName(e){return this.getObjectByProperty(\"name\",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,i=this.children.length;n\u003Ci;n++){const i=this.children[n].getObjectByProperty(e,t);if(void 0!==i)return i}}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(nr,e,ir),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(nr,rr,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let n=0,i=t.length;n\u003Ci;n++)t[n].traverse(e)}traverseVisible(e){if(!1===this.visible)return;e(this);const t=this.children;for(let n=0,i=t.length;n\u003Ci;n++)t[n].traverseVisible(e)}traverseAncestors(e){const t=this.parent;null!==t&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let n=0,i=t.length;n\u003Ci;n++){const i=t[n];!0!==i.matrixWorldAutoUpdate&&!0!==e||i.updateMatrixWorld(e)}}updateWorldMatrix(e,t){const n=this.parent;if(!0===e&&null!==n&&!0===n.matrixWorldAutoUpdate&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),!0===t){const e=this.children;for(let t=0,n=e.length;t\u003Cn;t++){const n=e[t];!0===n.matrixWorldAutoUpdate&&n.updateWorldMatrix(!1,!0)}}}toJSON(e){const t=void 0===e||\"string\"==typeof e,n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.5,type:\"Object\",generator:\"Object3D.toJSON\"});const i={};function r(t,n){return void 0===t[n.uuid]&&(t[n.uuid]=n.toJSON(e)),n.uuid}if(i.uuid=this.uuid,i.type=this.type,\"\"!==this.name&&(i.name=this.name),!0===this.castShadow&&(i.castShadow=!0),!0===this.receiveShadow&&(i.receiveShadow=!0),!1===this.visible&&(i.visible=!1),!1===this.frustumCulled&&(i.frustumCulled=!1),0!==this.renderOrder&&(i.renderOrder=this.renderOrder),\"{}\"!==JSON.stringify(this.userData)&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type=\"InstancedMesh\",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(e.geometries,this.geometry);const t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){const n=t.shapes;if(Array.isArray(n))for(let t=0,i=n.length;t\u003Ci;t++){const i=n[t];r(e.shapes,i)}else r(e.shapes,n)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton&&(r(e.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),void 0!==this.material)if(Array.isArray(this.material)){const t=[];for(let n=0,i=this.material.length;n\u003Ci;n++)t.push(r(e.materials,this.material[n]));i.material=t}else i.material=r(e.materials,this.material);if(this.children.length>0){i.children=[];for(let t=0;t\u003Cthis.children.length;t++)i.children.push(this.children[t].toJSON(e).object)}if(this.animations.length>0){i.animations=[];for(let t=0;t\u003Cthis.animations.length;t++){const n=this.animations[t];i.animations.push(r(e.animations,n))}}if(t){const t=s(e.geometries),i=s(e.materials),r=s(e.textures),o=s(e.images),a=s(e.shapes),l=s(e.skeletons),c=s(e.animations),h=s(e.nodes);t.length>0&&(n.geometries=t),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),o.length>0&&(n.images=o),a.length>0&&(n.shapes=a),l.length>0&&(n.skeletons=l),c.length>0&&(n.animations=c),h.length>0&&(n.nodes=h)}return n.object=i,n;function s(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}}clone(e){return(new this.constructor).copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t\u003Ce.children.length;t++){const n=e.children[t];this.add(n.clone())}return this}}hr.DefaultUp=new ci(0,1,0),hr.DefaultMatrixAutoUpdate=!0,hr.DefaultMatrixWorldAutoUpdate=!0;const ur=new ci,dr=new ci,pr=new ci,Ar=new ci,fr=new ci,mr=new ci,gr=new ci,vr=new ci,yr=new ci,Er=new ci;class br{constructor(e=new ci,t=new ci,n=new ci){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,i){i.subVectors(n,t),ur.subVectors(e,t),i.cross(ur);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,t,n,i,r){ur.subVectors(i,t),dr.subVectors(n,t),pr.subVectors(e,t);const s=ur.dot(ur),o=ur.dot(dr),a=ur.dot(pr),l=dr.dot(dr),c=dr.dot(pr),h=s*l-o*o;if(0===h)return r.set(-2,-1,-1);const u=1/h,d=(l*a-o*c)*u,p=(s*c-o*a)*u;return r.set(1-d-p,p,d)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,Ar),Ar.x>=0&&Ar.y>=0&&Ar.x+Ar.y\u003C=1}static getUV(e,t,n,i,r,s,o,a){return this.getBarycoord(e,t,n,i,Ar),a.set(0,0),a.addScaledVector(r,Ar.x),a.addScaledVector(s,Ar.y),a.addScaledVector(o,Ar.z),a}static isFrontFacing(e,t,n,i){return ur.subVectors(n,t),dr.subVectors(e,t),ur.cross(dr).dot(i)\u003C0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return(new this.constructor).copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return ur.subVectors(this.c,this.b),dr.subVectors(this.a,this.b),.5*ur.cross(dr).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return br.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return br.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,n,i,r){return br.getUV(e,this.a,this.b,this.c,t,n,i,r)}containsPoint(e){return br.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return br.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,i=this.b,r=this.c;let s,o;fr.subVectors(i,n),mr.subVectors(r,n),vr.subVectors(e,n);const a=fr.dot(vr),l=mr.dot(vr);if(a\u003C=0&&l\u003C=0)return t.copy(n);yr.subVectors(e,i);const c=fr.dot(yr),h=mr.dot(yr);if(c>=0&&h\u003C=c)return t.copy(i);const u=a*h-c*l;if(u\u003C=0&&a>=0&&c\u003C=0)return s=a/(a-c),t.copy(n).addScaledVector(fr,s);Er.subVectors(e,r);const d=fr.dot(Er),p=mr.dot(Er);if(p>=0&&d\u003C=p)return t.copy(r);const A=d*l-a*p;if(A\u003C=0&&l>=0&&p\u003C=0)return o=l/(l-p),t.copy(n).addScaledVector(mr,o);const f=c*p-d*h;if(f\u003C=0&&h-c>=0&&d-p>=0)return gr.subVectors(r,i),o=(h-c)/(h-c+(d-p)),t.copy(i).addScaledVector(gr,o);const m=1/(f+A+u);return s=A*m,o=u*m,t.copy(n).addScaledVector(fr,s).addScaledVector(mr,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let xr=0;class wr extends mn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,\"id\",{value:xr++}),this.uuid=bn(),this.name=\"\",this.type=\"Material\",this.blending=E,this.side=m,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=P,this.blendDst=k,this.blendEquation=M,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=V,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=nn,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=zt,this.stencilZFail=zt,this.stencilZPass=zt,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(const t in e){const n=e[t];if(void 0===n){console.warn(\"THREE.Material: '\"+t+\"' parameter is undefined.\");continue}const i=this[t];void 0!==i?i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n:console.warn(\"THREE.\"+this.type+\": '\"+t+\"' is not a property of this material.\")}}toJSON(e){const t=void 0===e||\"string\"==typeof e;t&&(e={textures:{},images:{}});const n={metadata:{version:4.5,type:\"Material\",generator:\"Material.toJSON\"}};function i(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}if(n.uuid=this.uuid,n.type=this.type,\"\"!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==E&&(n.blending=this.blending),this.side!==m&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity\u003C1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaToCoverage&&(n.alphaToCoverage=this.alphaToCoverage),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),\"round\"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),\"round\"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=this.flatShading),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),\"{}\"!==JSON.stringify(this.userData)&&(n.userData=this.userData),t){const t=i(e.textures),r=i(e.images);t.length>0&&(n.textures=t),r.length>0&&(n.images=r)}return n}clone(){return(new this.constructor).copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(null!==t){const e=t.length;n=new Array(e);for(let i=0;i!==e;++i)n[i]=t[i].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:\"dispose\"})}set needsUpdate(e){!0===e&&this.version++}}class Cr extends wr{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type=\"MeshBasicMaterial\",this.color=new Yn(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=X,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=\"round\",this.wireframeLinejoin=\"round\",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Mr=new ci,_r=new Ln;class Ir{constructor(e,t,n){if(Array.isArray(e))throw new TypeError(\"THREE.BufferAttribute: array should be a Typed Array.\");this.isBufferAttribute=!0,this.name=\"\",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=!0===n,this.usage=rn,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,r=this.itemSize;i\u003Cr;i++)this.array[e+i]=t.array[n+i];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(2===this.itemSize)for(let t=0,n=this.count;t\u003Cn;t++)_r.fromBufferAttribute(this,t),_r.applyMatrix3(e),this.setXY(t,_r.x,_r.y);else if(3===this.itemSize)for(let t=0,n=this.count;t\u003Cn;t++)Mr.fromBufferAttribute(this,t),Mr.applyMatrix3(e),this.setXYZ(t,Mr.x,Mr.y,Mr.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t\u003Cn;t++)Mr.fromBufferAttribute(this,t),Mr.applyMatrix4(e),this.setXYZ(t,Mr.x,Mr.y,Mr.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t\u003Cn;t++)Mr.fromBufferAttribute(this,t),Mr.applyNormalMatrix(e),this.setXYZ(t,Mr.x,Mr.y,Mr.z);return this}transformDirection(e){for(let t=0,n=this.count;t\u003Cn;t++)Mr.fromBufferAttribute(this,t),Mr.transformDirection(e),this.setXYZ(t,Mr.x,Mr.y,Mr.z);return this}set(e,t=0){return this.array.set(e,t),this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=Bn(t,this.array)),t}setX(e,t){return this.normalized&&(t=Sn(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=Bn(t,this.array)),t}setY(e,t){return this.normalized&&(t=Sn(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=Bn(t,this.array)),t}setZ(e,t){return this.normalized&&(t=Sn(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=Bn(t,this.array)),t}setW(e,t){return this.normalized&&(t=Sn(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=Sn(t,this.array),n=Sn(n,this.array)),this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,i){return e*=this.itemSize,this.normalized&&(t=Sn(t,this.array),n=Sn(n,this.array),i=Sn(i,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e*=this.itemSize,this.normalized&&(t=Sn(t,this.array),n=Sn(n,this.array),i=Sn(i,this.array),r=Sn(r,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this.array[e+3]=r,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return\"\"!==this.name&&(e.name=this.name),this.usage!==rn&&(e.usage=this.usage),0===this.updateRange.offset&&-1===this.updateRange.count||(e.updateRange=this.updateRange),e}copyColorsArray(){console.error(\"THREE.BufferAttribute: copyColorsArray() was removed in r144.\")}copyVector2sArray(){console.error(\"THREE.BufferAttribute: copyVector2sArray() was removed in r144.\")}copyVector3sArray(){console.error(\"THREE.BufferAttribute: copyVector3sArray() was removed in r144.\")}copyVector4sArray(){console.error(\"THREE.BufferAttribute: copyVector4sArray() was removed in r144.\")}}class Br extends Ir{constructor(e,t,n){super(new Int8Array(e),t,n)}}class Sr extends Ir{constructor(e,t,n){super(new Uint8Array(e),t,n)}}class Tr extends Ir{constructor(e,t,n){super(new Uint8ClampedArray(e),t,n)}}class Lr extends Ir{constructor(e,t,n){super(new Int16Array(e),t,n)}}class Dr extends Ir{constructor(e,t,n){super(new Uint16Array(e),t,n)}}class Rr extends Ir{constructor(e,t,n){super(new Int32Array(e),t,n)}}class Pr extends Ir{constructor(e,t,n){super(new Uint32Array(e),t,n)}}class kr extends Ir{constructor(e,t,n){super(new Uint16Array(e),t,n),this.isFloat16BufferAttribute=!0}}class Fr extends Ir{constructor(e,t,n){super(new Float32Array(e),t,n)}}class Or extends Ir{constructor(e,t,n){super(new Float64Array(e),t,n)}}let Qr=0;const Ur=new Ui,Nr=new hr,Gr=new ci,zr=new di,Hr=new di,Vr=new ci;class Wr extends mn{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,\"id\",{value:Qr++}),this.uuid=bn(),this.name=\"\",this.type=\"BufferGeometry\",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(Pn(e)?Pr:Dr)(e,1):this.index=e,this}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return void 0!==this.attributes[e]}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);const n=this.attributes.normal;if(void 0!==n){const t=(new Dn).getNormalMatrix(e);n.applyNormalMatrix(t),n.needsUpdate=!0}const i=this.attributes.tangent;return void 0!==i&&(i.transformDirection(e),i.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(e){return Ur.makeRotationFromQuaternion(e),this.applyMatrix4(Ur),this}rotateX(e){return Ur.makeRotationX(e),this.applyMatrix4(Ur),this}rotateY(e){return Ur.makeRotationY(e),this.applyMatrix4(Ur),this}rotateZ(e){return Ur.makeRotationZ(e),this.applyMatrix4(Ur),this}translate(e,t,n){return Ur.makeTranslation(e,t,n),this.applyMatrix4(Ur),this}scale(e,t,n){return Ur.makeScale(e,t,n),this.applyMatrix4(Ur),this}lookAt(e){return Nr.lookAt(e),Nr.updateMatrix(),this.applyMatrix4(Nr.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Gr).negate(),this.translate(Gr.x,Gr.y,Gr.z),this}setFromPoints(e){const t=[];for(let n=0,i=e.length;n\u003Ci;n++){const i=e[n];t.push(i.x,i.y,i.z||0)}return this.setAttribute(\"position\",new Fr(t,3)),this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new di);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)return console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".',this),void this.boundingBox.set(new ci(-1/0,-1/0,-1/0),new ci(1/0,1/0,1/0));if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e\u003Cn;e++){const n=t[e];zr.setFromBufferAttribute(n),this.morphTargetsRelative?(Vr.addVectors(this.boundingBox.min,zr.min),this.boundingBox.expandByPoint(Vr),Vr.addVectors(this.boundingBox.max,zr.max),this.boundingBox.expandByPoint(Vr)):(this.boundingBox.expandByPoint(zr.min),this.boundingBox.expandByPoint(zr.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.',this)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new Ti);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)return console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".',this),void this.boundingSphere.set(new ci,1/0);if(e){const n=this.boundingSphere.center;if(zr.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e\u003Cn;e++){const n=t[e];Hr.setFromBufferAttribute(n),this.morphTargetsRelative?(Vr.addVectors(zr.min,Hr.min),zr.expandByPoint(Vr),Vr.addVectors(zr.max,Hr.max),zr.expandByPoint(Vr)):(zr.expandByPoint(Hr.min),zr.expandByPoint(Hr.max))}zr.getCenter(n);let i=0;for(let t=0,r=e.count;t\u003Cr;t++)Vr.fromBufferAttribute(e,t),i=Math.max(i,n.distanceToSquared(Vr));if(t)for(let r=0,s=t.length;r\u003Cs;r++){const s=t[r],o=this.morphTargetsRelative;for(let t=0,r=s.count;t\u003Cr;t++)Vr.fromBufferAttribute(s,t),o&&(Gr.fromBufferAttribute(e,t),Vr.add(Gr)),i=Math.max(i,n.distanceToSquared(Vr))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(null===e||void 0===t.position||void 0===t.normal||void 0===t.uv)return void console.error(\"THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)\");const n=e.array,i=t.position.array,r=t.normal.array,s=t.uv.array,o=i.length/3;!1===this.hasAttribute(\"tangent\")&&this.setAttribute(\"tangent\",new Ir(new Float32Array(4*o),4));const a=this.getAttribute(\"tangent\").array,l=[],c=[];for(let e=0;e\u003Co;e++)l[e]=new ci,c[e]=new ci;const h=new ci,u=new ci,d=new ci,p=new Ln,A=new Ln,f=new Ln,m=new ci,g=new ci;function v(e,t,n){h.fromArray(i,3*e),u.fromArray(i,3*t),d.fromArray(i,3*n),p.fromArray(s,2*e),A.fromArray(s,2*t),f.fromArray(s,2*n),u.sub(h),d.sub(h),A.sub(p),f.sub(p);const r=1/(A.x*f.y-f.x*A.y);isFinite(r)&&(m.copy(u).multiplyScalar(f.y).addScaledVector(d,-A.y).multiplyScalar(r),g.copy(d).multiplyScalar(A.x).addScaledVector(u,-f.x).multiplyScalar(r),l[e].add(m),l[t].add(m),l[n].add(m),c[e].add(g),c[t].add(g),c[n].add(g))}let y=this.groups;0===y.length&&(y=[{start:0,count:n.length}]);for(let e=0,t=y.length;e\u003Ct;++e){const t=y[e],i=t.start;for(let e=i,r=i+t.count;e\u003Cr;e+=3)v(n[e+0],n[e+1],n[e+2])}const E=new ci,b=new ci,x=new ci,w=new ci;function C(e){x.fromArray(r,3*e),w.copy(x);const t=l[e];E.copy(t),E.sub(x.multiplyScalar(x.dot(t))).normalize(),b.crossVectors(w,t);const n=b.dot(c[e])\u003C0?-1:1;a[4*e]=E.x,a[4*e+1]=E.y,a[4*e+2]=E.z,a[4*e+3]=n}for(let e=0,t=y.length;e\u003Ct;++e){const t=y[e],i=t.start;for(let e=i,r=i+t.count;e\u003Cr;e+=3)C(n[e+0]),C(n[e+1]),C(n[e+2])}}computeVertexNormals(){const e=this.index,t=this.getAttribute(\"position\");if(void 0!==t){let n=this.getAttribute(\"normal\");if(void 0===n)n=new Ir(new Float32Array(3*t.count),3),this.setAttribute(\"normal\",n);else for(let e=0,t=n.count;e\u003Ct;e++)n.setXYZ(e,0,0,0);const i=new ci,r=new ci,s=new ci,o=new ci,a=new ci,l=new ci,c=new ci,h=new ci;if(e)for(let u=0,d=e.count;u\u003Cd;u+=3){const d=e.getX(u+0),p=e.getX(u+1),A=e.getX(u+2);i.fromBufferAttribute(t,d),r.fromBufferAttribute(t,p),s.fromBufferAttribute(t,A),c.subVectors(s,r),h.subVectors(i,r),c.cross(h),o.fromBufferAttribute(n,d),a.fromBufferAttribute(n,p),l.fromBufferAttribute(n,A),o.add(c),a.add(c),l.add(c),n.setXYZ(d,o.x,o.y,o.z),n.setXYZ(p,a.x,a.y,a.z),n.setXYZ(A,l.x,l.y,l.z)}else for(let e=0,o=t.count;e\u003Co;e+=3)i.fromBufferAttribute(t,e+0),r.fromBufferAttribute(t,e+1),s.fromBufferAttribute(t,e+2),c.subVectors(s,r),h.subVectors(i,r),c.cross(h),n.setXYZ(e+0,c.x,c.y,c.z),n.setXYZ(e+1,c.x,c.y,c.z),n.setXYZ(e+2,c.x,c.y,c.z);this.normalizeNormals(),n.needsUpdate=!0}}merge(){return console.error(\"THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeBufferGeometries() instead.\"),this}normalizeNormals(){const e=this.attributes.normal;for(let t=0,n=e.count;t\u003Cn;t++)Vr.fromBufferAttribute(e,t),Vr.normalize(),e.setXYZ(t,Vr.x,Vr.y,Vr.z)}toNonIndexed(){function e(e,t){const n=e.array,i=e.itemSize,r=e.normalized,s=new n.constructor(t.length*i);let o=0,a=0;for(let r=0,l=t.length;r\u003Cl;r++){o=e.isInterleavedBufferAttribute?t[r]*e.data.stride+e.offset:t[r]*i;for(let e=0;e\u003Ci;e++)s[a++]=n[o++]}return new Ir(s,i,r)}if(null===this.index)return console.warn(\"THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.\"),this;const t=new Wr,n=this.index.array,i=this.attributes;for(const r in i){const s=e(i[r],n);t.setAttribute(r,s)}const r=this.morphAttributes;for(const i in r){const s=[],o=r[i];for(let t=0,i=o.length;t\u003Ci;t++){const i=e(o[t],n);s.push(i)}t.morphAttributes[i]=s}t.morphTargetsRelative=this.morphTargetsRelative;const s=this.groups;for(let e=0,n=s.length;e\u003Cn;e++){const n=s[e];t.addGroup(n.start,n.count,n.materialIndex)}return t}toJSON(){const e={metadata:{version:4.5,type:\"BufferGeometry\",generator:\"BufferGeometry.toJSON\"}};if(e.uuid=this.uuid,e.type=this.type,\"\"!==this.name&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),void 0!==this.parameters){const t=this.parameters;for(const n in t)void 0!==t[n]&&(e[n]=t[n]);return e}e.data={attributes:{}};const t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const t in n){const i=n[t];e.data.attributes[t]=i.toJSON(e.data)}const i={};let r=!1;for(const t in this.morphAttributes){const n=this.morphAttributes[t],s=[];for(let t=0,i=n.length;t\u003Ci;t++){const i=n[t];s.push(i.toJSON(e.data))}s.length>0&&(i[t]=s,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));const o=this.boundingSphere;return null!==o&&(e.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),e}clone(){return(new this.constructor).copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;null!==n&&this.setIndex(n.clone(t));const i=e.attributes;for(const e in i){const n=i[e];this.setAttribute(e,n.clone(t))}const r=e.morphAttributes;for(const e in r){const n=[],i=r[e];for(let e=0,r=i.length;e\u003Cr;e++)n.push(i[e].clone(t));this.morphAttributes[e]=n}this.morphTargetsRelative=e.morphTargetsRelative;const s=e.groups;for(let e=0,t=s.length;e\u003Ct;e++){const t=s[e];this.addGroup(t.start,t.count,t.materialIndex)}const o=e.boundingBox;null!==o&&(this.boundingBox=o.clone());const a=e.boundingSphere;return null!==a&&(this.boundingSphere=a.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,void 0!==e.parameters&&(this.parameters=Object.assign({},e.parameters)),this}dispose(){this.dispatchEvent({type:\"dispose\"})}}const jr=new Ui,qr=new Qi,Yr=new Ti,Xr=new ci,Jr=new ci,Kr=new ci,Zr=new ci,$r=new ci,es=new ci,ts=new ci,ns=new ci,is=new ci,rs=new Ln,ss=new Ln,os=new Ln,as=new ci,ls=new ci;class cs extends hr{constructor(e=new Wr,t=new Cr){super(),this.isMesh=!0,this.type=\"Mesh\",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=e.material,this.geometry=e.geometry,this}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e\u003Ct;e++){const t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}raycast(e,t){const n=this.geometry,i=this.material,r=this.matrixWorld;if(void 0===i)return;if(null===n.boundingSphere&&n.computeBoundingSphere(),Yr.copy(n.boundingSphere),Yr.applyMatrix4(r),!1===e.ray.intersectsSphere(Yr))return;if(jr.copy(r).invert(),qr.copy(e.ray).applyMatrix4(jr),null!==n.boundingBox&&!1===qr.intersectsBox(n.boundingBox))return;let s;const o=n.index,a=n.attributes.position,l=n.morphAttributes.position,c=n.morphTargetsRelative,h=n.attributes.uv,u=n.attributes.uv2,d=n.groups,p=n.drawRange;if(null!==o)if(Array.isArray(i))for(let n=0,r=d.length;n\u003Cr;n++){const r=d[n],A=i[r.materialIndex];for(let n=Math.max(r.start,p.start),i=Math.min(o.count,Math.min(r.start+r.count,p.start+p.count));n\u003Ci;n+=3){const i=o.getX(n),d=o.getX(n+1),p=o.getX(n+2);s=hs(this,A,e,qr,a,l,c,h,u,i,d,p),s&&(s.faceIndex=Math.floor(n/3),s.face.materialIndex=r.materialIndex,t.push(s))}}else for(let n=Math.max(0,p.start),r=Math.min(o.count,p.start+p.count);n\u003Cr;n+=3){const r=o.getX(n),d=o.getX(n+1),p=o.getX(n+2);s=hs(this,i,e,qr,a,l,c,h,u,r,d,p),s&&(s.faceIndex=Math.floor(n/3),t.push(s))}else if(void 0!==a)if(Array.isArray(i))for(let n=0,r=d.length;n\u003Cr;n++){const r=d[n],o=i[r.materialIndex];for(let n=Math.max(r.start,p.start),i=Math.min(a.count,Math.min(r.start+r.count,p.start+p.count));n\u003Ci;n+=3)s=hs(this,o,e,qr,a,l,c,h,u,n,n+1,n+2),s&&(s.faceIndex=Math.floor(n/3),s.face.materialIndex=r.materialIndex,t.push(s))}else for(let n=Math.max(0,p.start),r=Math.min(a.count,p.start+p.count);n\u003Cr;n+=3)s=hs(this,i,e,qr,a,l,c,h,u,n,n+1,n+2),s&&(s.faceIndex=Math.floor(n/3),t.push(s))}}function hs(e,t,n,i,r,s,o,a,l,c,h,u){Xr.fromBufferAttribute(r,c),Jr.fromBufferAttribute(r,h),Kr.fromBufferAttribute(r,u);const d=e.morphTargetInfluences;if(s&&d){ts.set(0,0,0),ns.set(0,0,0),is.set(0,0,0);for(let e=0,t=s.length;e\u003Ct;e++){const t=d[e],n=s[e];0!==t&&(Zr.fromBufferAttribute(n,c),$r.fromBufferAttribute(n,h),es.fromBufferAttribute(n,u),o?(ts.addScaledVector(Zr,t),ns.addScaledVector($r,t),is.addScaledVector(es,t)):(ts.addScaledVector(Zr.sub(Xr),t),ns.addScaledVector($r.sub(Jr),t),is.addScaledVector(es.sub(Kr),t)))}Xr.add(ts),Jr.add(ns),Kr.add(is)}e.isSkinnedMesh&&(e.boneTransform(c,Xr),e.boneTransform(h,Jr),e.boneTransform(u,Kr));const p=function(e,t,n,i,r,s,o,a){let l;if(l=t.side===g?i.intersectTriangle(o,s,r,!0,a):i.intersectTriangle(r,s,o,t.side!==v,a),null===l)return null;ls.copy(a),ls.applyMatrix4(e.matrixWorld);const c=n.ray.origin.distanceTo(ls);return c\u003Cn.near||c>n.far?null:{distance:c,point:ls.clone(),object:e}}(e,t,n,i,Xr,Jr,Kr,as);if(p){a&&(rs.fromBufferAttribute(a,c),ss.fromBufferAttribute(a,h),os.fromBufferAttribute(a,u),p.uv=br.getUV(as,Xr,Jr,Kr,rs,ss,os,new Ln)),l&&(rs.fromBufferAttribute(l,c),ss.fromBufferAttribute(l,h),os.fromBufferAttribute(l,u),p.uv2=br.getUV(as,Xr,Jr,Kr,rs,ss,os,new Ln));const e={a:c,b:h,c:u,normal:new ci,materialIndex:0};br.getNormal(Xr,Jr,Kr,e.normal),p.face=e}return p}class us extends Wr{constructor(e=1,t=1,n=1,i=1,r=1,s=1){super(),this.type=\"BoxGeometry\",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:s};const o=this;i=Math.floor(i),r=Math.floor(r),s=Math.floor(s);const a=[],l=[],c=[],h=[];let u=0,d=0;function p(e,t,n,i,r,s,p,A,f,m,g){const v=s/f,y=p/m,E=s/2,b=p/2,x=A/2,w=f+1,C=m+1;let M=0,_=0;const I=new ci;for(let s=0;s\u003CC;s++){const o=s*y-b;for(let a=0;a\u003Cw;a++){const u=a*v-E;I[e]=u*i,I[t]=o*r,I[n]=x,l.push(I.x,I.y,I.z),I[e]=0,I[t]=0,I[n]=A>0?1:-1,c.push(I.x,I.y,I.z),h.push(a/f),h.push(1-s/m),M+=1}}for(let e=0;e\u003Cm;e++)for(let t=0;t\u003Cf;t++){const n=u+t+w*e,i=u+t+w*(e+1),r=u+(t+1)+w*(e+1),s=u+(t+1)+w*e;a.push(n,i,s),a.push(i,r,s),_+=6}o.addGroup(d,_,g),d+=_,u+=M}p(\"z\",\"y\",\"x\",-1,-1,n,t,e,s,r,0),p(\"z\",\"y\",\"x\",1,-1,n,t,-e,s,r,1),p(\"x\",\"z\",\"y\",1,1,e,n,t,i,s,2),p(\"x\",\"z\",\"y\",1,-1,e,n,-t,i,s,3),p(\"x\",\"y\",\"z\",1,-1,e,t,n,i,r,4),p(\"x\",\"y\",\"z\",-1,-1,e,t,-n,i,r,5),this.setIndex(a),this.setAttribute(\"position\",new Fr(l,3)),this.setAttribute(\"normal\",new Fr(c,3)),this.setAttribute(\"uv\",new Fr(h,2))}static fromJSON(e){return new us(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function ds(e){const t={};for(const n in e){t[n]={};for(const i in e[n]){const r=e[n][i];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture||r.isQuaternion)?t[n][i]=r.clone():Array.isArray(r)?t[n][i]=r.slice():t[n][i]=r}}return t}function ps(e){const t={};for(let n=0;n\u003Ce.length;n++){const i=ds(e[n]);for(const e in i)t[e]=i[e]}return t}function As(e){return null===e.getRenderTarget()&&e.outputEncoding===Rt?Ut:Nt}const fs={clone:ds,merge:ps};class ms extends wr{constructor(e){super(),this.isShaderMaterial=!0,this.type=\"ShaderMaterial\",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=\"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\",this.fragmentShader=\"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==e&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=ds(e.uniforms),this.uniformsGroups=function(e){const t=[];for(let n=0;n\u003Ce.length;n++)t.push(e[n].clone());return t}(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const n in this.uniforms){const i=this.uniforms[n].value;i&&i.isTexture?t.uniforms[n]={type:\"t\",value:i.toJSON(e).uuid}:i&&i.isColor?t.uniforms[n]={type:\"c\",value:i.getHex()}:i&&i.isVector2?t.uniforms[n]={type:\"v2\",value:i.toArray()}:i&&i.isVector3?t.uniforms[n]={type:\"v3\",value:i.toArray()}:i&&i.isVector4?t.uniforms[n]={type:\"v4\",value:i.toArray()}:i&&i.isMatrix3?t.uniforms[n]={type:\"m3\",value:i.toArray()}:i&&i.isMatrix4?t.uniforms[n]={type:\"m4\",value:i.toArray()}:t.uniforms[n]={value:i}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;const n={};for(const e in this.extensions)!0===this.extensions[e]&&(n[e]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class gs extends hr{constructor(){super(),this.isCamera=!0,this.type=\"Camera\",this.matrixWorldInverse=new Ui,this.projectionMatrix=new Ui,this.projectionMatrixInverse=new Ui}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}class vs extends gs{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type=\"PerspectiveCamera\",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=2*En*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(.5*yn*this.fov);return.5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*En*Math.atan(Math.tan(.5*yn*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,n,i,r,s){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(.5*yn*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i;const s=this.view;if(null!==this.view&&this.view.enabled){const e=s.fullWidth,o=s.fullHeight;r+=s.offsetX*i/e,t-=s.offsetY*n/o,i*=s.width/e,n*=s.height/o}const o=this.filmOffset;0!==o&&(r+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const ys=-90;class Es extends hr{constructor(e,t,n){super(),this.type=\"CubeCamera\",this.renderTarget=n;const i=new vs(ys,1,e,t);i.layers=this.layers,i.up.set(0,1,0),i.lookAt(1,0,0),this.add(i);const r=new vs(ys,1,e,t);r.layers=this.layers,r.up.set(0,1,0),r.lookAt(-1,0,0),this.add(r);const s=new vs(ys,1,e,t);s.layers=this.layers,s.up.set(0,0,-1),s.lookAt(0,1,0),this.add(s);const o=new vs(ys,1,e,t);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(0,-1,0),this.add(o);const a=new vs(ys,1,e,t);a.layers=this.layers,a.up.set(0,1,0),a.lookAt(0,0,1),this.add(a);const l=new vs(ys,1,e,t);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(e,t){null===this.parent&&this.updateMatrixWorld();const n=this.renderTarget,[i,r,s,o,a,l]=this.children,c=e.getRenderTarget(),h=e.toneMapping,u=e.xr.enabled;e.toneMapping=Z,e.xr.enabled=!1;const d=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0),e.render(t,i),e.setRenderTarget(n,1),e.render(t,r),e.setRenderTarget(n,2),e.render(t,s),e.setRenderTarget(n,3),e.render(t,o),e.setRenderTarget(n,4),e.render(t,a),n.texture.generateMipmaps=d,e.setRenderTarget(n,5),e.render(t,l),e.setRenderTarget(c),e.toneMapping=h,e.xr.enabled=u,n.texture.needsPMREMUpdate=!0}}class bs extends ei{constructor(e,t,n,i,r,s,o,a,l,c){super(e=void 0!==e?e:[],t=void 0!==t?t:se,n,i,r,s,o,a,l,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class xs extends ni{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},i=[n,n,n,n,n,n];this.texture=new bs(i,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:ve}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={tEquirect:{value:null}},i=\"\\n\\n\\t\\t\\t\\tvarying vec3 vWorldDirection;\\n\\n\\t\\t\\t\\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\n\\t\\t\\t\\t\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvoid main() {\\n\\n\\t\\t\\t\\t\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\n\\t\\t\\t\\t\\t#include \u003Cbegin_vertex>\\n\\t\\t\\t\\t\\t#include \u003Cproject_vertex>\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t\",r=\"\\n\\n\\t\\t\\t\\tuniform sampler2D tEquirect;\\n\\n\\t\\t\\t\\tvarying vec3 vWorldDirection;\\n\\n\\t\\t\\t\\t#include \u003Ccommon>\\n\\n\\t\\t\\t\\tvoid main() {\\n\\n\\t\\t\\t\\t\\tvec3 direction = normalize( vWorldDirection );\\n\\n\\t\\t\\t\\t\\tvec2 sampleUV = equirectUv( direction );\\n\\n\\t\\t\\t\\t\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t\",s=new us(5,5,5),o=new ms({name:\"CubemapFromEquirect\",uniforms:ds(n),vertexShader:i,fragmentShader:r,side:g,blending:y});o.uniforms.tEquirect.value=t;const a=new cs(s,o),l=t.minFilter;return t.minFilter===be&&(t.minFilter=ve),new Es(1,10,this).update(e,a),t.minFilter=l,a.geometry.dispose(),a.material.dispose(),this}clear(e,t,n,i){const r=e.getRenderTarget();for(let r=0;r\u003C6;r++)e.setRenderTarget(this,r),e.clear(t,n,i);e.setRenderTarget(r)}}const ws=new ci,Cs=new ci,Ms=new Dn;class _s{constructor(e=new ci(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const i=ws.subVectors(n,t).cross(Cs.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){const n=e.delta(ws),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;const r=-(e.start.dot(this.normal)+this.constant)/i;return r\u003C0||r>1?null:t.copy(n).multiplyScalar(r).add(e.start)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t\u003C0&&n>0||n\u003C0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||Ms.getNormalMatrix(e),i=this.coplanarPoint(ws).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const Is=new Ti,Bs=new ci;class Ss{constructor(e=new _s,t=new _s,n=new _s,i=new _s,r=new _s,s=new _s){this.planes=[e,t,n,i,r,s]}set(e,t,n,i,r,s){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(i),o[4].copy(r),o[5].copy(s),this}copy(e){const t=this.planes;for(let n=0;n\u003C6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e){const t=this.planes,n=e.elements,i=n[0],r=n[1],s=n[2],o=n[3],a=n[4],l=n[5],c=n[6],h=n[7],u=n[8],d=n[9],p=n[10],A=n[11],f=n[12],m=n[13],g=n[14],v=n[15];return t[0].setComponents(o-i,h-a,A-u,v-f).normalize(),t[1].setComponents(o+i,h+a,A+u,v+f).normalize(),t[2].setComponents(o+r,h+l,A+d,v+m).normalize(),t[3].setComponents(o-r,h-l,A-d,v-m).normalize(),t[4].setComponents(o-s,h-c,A-p,v-g).normalize(),t[5].setComponents(o+s,h+c,A+p,v+g).normalize(),this}intersectsObject(e){const t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),Is.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(Is)}intersectsSprite(e){return Is.center.set(0,0,0),Is.radius=.7071067811865476,Is.applyMatrix4(e.matrixWorld),this.intersectsSphere(Is)}intersectsSphere(e){const t=this.planes,n=e.center,i=-e.radius;for(let e=0;e\u003C6;e++)if(t[e].distanceToPoint(n)\u003Ci)return!1;return!0}intersectsBox(e){const t=this.planes;for(let n=0;n\u003C6;n++){const i=t[n];if(Bs.x=i.normal.x>0?e.max.x:e.min.x,Bs.y=i.normal.y>0?e.max.y:e.min.y,Bs.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(Bs)\u003C0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n\u003C6;n++)if(t[n].distanceToPoint(e)\u003C0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function Ts(){let e=null,t=!1,n=null,i=null;function r(t,s){n(t,s),i=e.requestAnimationFrame(r)}return{start:function(){!0!==t&&null!==n&&(i=e.requestAnimationFrame(r),t=!0)},stop:function(){e.cancelAnimationFrame(i),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function Ls(e,t){const n=t.isWebGL2,i=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),i.get(e)},remove:function(t){t.isInterleavedBufferAttribute&&(t=t.data);const n=i.get(t);n&&(e.deleteBuffer(n.buffer),i.delete(t))},update:function(t,r){if(t.isGLBufferAttribute){const e=i.get(t);return void((!e||e.version\u003Ct.version)&&i.set(t,{buffer:t.buffer,type:t.type,bytesPerElement:t.elementSize,version:t.version}))}t.isInterleavedBufferAttribute&&(t=t.data);const s=i.get(t);void 0===s?i.set(t,function(t,i){const r=t.array,s=t.usage,o=e.createBuffer();let a;if(e.bindBuffer(i,o),e.bufferData(i,r,s),t.onUploadCallback(),r instanceof Float32Array)a=5126;else if(r instanceof Uint16Array)if(t.isFloat16BufferAttribute){if(!n)throw new Error(\"THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.\");a=5131}else a=5123;else if(r instanceof Int16Array)a=5122;else if(r instanceof Uint32Array)a=5125;else if(r instanceof Int32Array)a=5124;else if(r instanceof Int8Array)a=5120;else if(r instanceof Uint8Array)a=5121;else{if(!(r instanceof Uint8ClampedArray))throw new Error(\"THREE.WebGLAttributes: Unsupported buffer data format: \"+r);a=5121}return{buffer:o,type:a,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version}}(t,r)):s.version\u003Ct.version&&(function(t,i,r){const s=i.array,o=i.updateRange;e.bindBuffer(r,t),-1===o.count?e.bufferSubData(r,0,s):(n?e.bufferSubData(r,o.offset*s.BYTES_PER_ELEMENT,s,o.offset,o.count):e.bufferSubData(r,o.offset*s.BYTES_PER_ELEMENT,s.subarray(o.offset,o.offset+o.count)),o.count=-1),i.onUploadCallback()}(s.buffer,t,r),s.version=t.version)}}}class Ds extends Wr{constructor(e=1,t=1,n=1,i=1){super(),this.type=\"PlaneGeometry\",this.parameters={width:e,height:t,widthSegments:n,heightSegments:i};const r=e/2,s=t/2,o=Math.floor(n),a=Math.floor(i),l=o+1,c=a+1,h=e/o,u=t/a,d=[],p=[],A=[],f=[];for(let e=0;e\u003Cc;e++){const t=e*u-s;for(let n=0;n\u003Cl;n++){const i=n*h-r;p.push(i,-t,0),A.push(0,0,1),f.push(n/o),f.push(1-e/a)}}for(let e=0;e\u003Ca;e++)for(let t=0;t\u003Co;t++){const n=t+l*e,i=t+l*(e+1),r=t+1+l*(e+1),s=t+1+l*e;d.push(n,i,s),d.push(i,r,s)}this.setIndex(d),this.setAttribute(\"position\",new Fr(p,3)),this.setAttribute(\"normal\",new Fr(A,3)),this.setAttribute(\"uv\",new Fr(f,2))}static fromJSON(e){return new Ds(e.width,e.height,e.widthSegments,e.heightSegments)}}const Rs={alphamap_fragment:\"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\",alphamap_pars_fragment:\"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\",alphatest_fragment:\"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a \u003C alphaTest ) discard;\\n#endif\",alphatest_pars_fragment:\"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\",aomap_fragment:\"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\",aomap_pars_fragment:\"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\",begin_vertex:\"vec3 transformed = vec3( position );\",beginnormal_vertex:\"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\",bsdfs:\"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\n#ifdef USE_IRIDESCENCE\\n\\tvec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) \u003C 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\",iridescence_fragment:\"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq \u003C 0.0 ) {\\n\\t\\t\\t return vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat R21 = R12;\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR \u003C outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] \u003C iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] \u003C iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] \u003C iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m \u003C= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\",bumpmap_pars_fragment:\"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = dFdx( surf_pos.xyz );\\n\\t\\tvec3 vSigmaY = dFdy( surf_pos.xyz );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\",clipping_planes_fragment:\"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES \u003C NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i \u003C NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\",clipping_planes_pars_fragment:\"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\",clipping_planes_pars_vertex:\"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\",clipping_planes_vertex:\"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\",color_fragment:\"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\",color_pars_fragment:\"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\",color_pars_vertex:\"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\",color_vertex:\"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\",common:\"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\",cube_uv_reflection_fragment:\"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_v0 0.339\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_v1 0.276\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_v4 0.046\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_v5 0.016\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_v6 0.0038\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\",defaultnormal_vertex:\"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\",displacementmap_pars_vertex:\"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\",displacementmap_vertex:\"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\",emissivemap_fragment:\"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\",emissivemap_pars_fragment:\"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\",encodings_fragment:\"gl_FragColor = linearToOutputTexel( gl_FragColor );\",encodings_pars_fragment:\"vec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\",envmap_fragment:\"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\",envmap_common_pars_fragment:\"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\",envmap_pars_fragment:\"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\",envmap_pars_vertex:\"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\",envmap_physical_pars_fragment:\"#if defined( USE_ENVMAP )\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\",envmap_vertex:\"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\",fog_vertex:\"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\",fog_pars_vertex:\"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\",fog_fragment:\"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\",fog_pars_fragment:\"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\",gradientmap_pars_fragment:\"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\",lightmap_fragment:\"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\",lightmap_pars_fragment:\"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\",lights_lambert_fragment:\"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\",lights_lambert_pars_fragment:\"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\",lights_pars_begin:\"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\",lights_toon_fragment:\"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\",lights_toon_pars_fragment:\"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\",lights_phong_fragment:\"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\",lights_phong_pars_fragment:\"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\",lights_physical_fragment:\"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\",lights_physical_pars_fragment:\"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness \u003C 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness \u003C 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness \u003C 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\\n\\t#else\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\",lights_fragment_begin:\"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX \u003C NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX \u003C NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX \u003C NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX \u003C NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX \u003C NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX \u003C NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i \u003C NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\",lights_fragment_maps:\"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\",lights_fragment_end:\"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\",logdepthbuf_fragment:\"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\",logdepthbuf_pars_fragment:\"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\",logdepthbuf_pars_vertex:\"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\",logdepthbuf_vertex:\"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\",map_fragment:\"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\",map_pars_fragment:\"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\",map_particle_fragment:\"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\",map_particle_pars_fragment:\"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\",metalnessmap_fragment:\"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\",metalnessmap_pars_fragment:\"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\",morphcolor_vertex:\"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i \u003C MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\",morphnormal_vertex:\"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i \u003C MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\",morphtarget_pars_vertex:\"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\",morphtarget_vertex:\"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i \u003C MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\",normal_fragment_begin:\"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\",normal_fragment_maps:\"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\",normal_pars_fragment:\"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\",normal_pars_vertex:\"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\",normal_vertex:\"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\",normalmap_pars_fragment:\"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\",clearcoat_normal_fragment_begin:\"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\",clearcoat_normal_fragment_maps:\"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\",clearcoat_pars_fragment:\"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\",iridescence_pars_fragment:\"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\",output_fragment:\"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\",packing:\"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec2 packDepthToRG( in highp float v ) {\\n\\treturn packDepthToRGBA( v ).yx;\\n}\\nfloat unpackRGToDepth( const in highp vec2 v ) {\\n\\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\",premultiplied_alpha_fragment:\"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\",project_vertex:\"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\",dithering_fragment:\"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\",dithering_pars_fragment:\"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\",roughnessmap_fragment:\"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\",roughnessmap_pars_fragment:\"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\",shadowmap_pars_fragment:\"#if NUM_SPOT_LIGHT_COORDS > 0\\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x \u003C= 1.0, shadowCoord.y >= 0.0, shadowCoord.y \u003C= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z \u003C= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\",shadowmap_pars_vertex:\"#if NUM_SPOT_LIGHT_COORDS > 0\\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\",shadowmap_vertex:\"#if defined( USE_SHADOWMAP ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_COORDS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX \u003C NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\",shadowmask_pars_fragment:\"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i \u003C NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\",skinbase_vertex:\"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\",skinning_pars_vertex:\"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tuniform int boneTextureSize;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tfloat j = i * 4.0;\\n\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\ty = dy * ( y + 0.5 );\\n\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\treturn bone;\\n\\t}\\n#endif\",skinning_vertex:\"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\",skinnormal_vertex:\"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\",specularmap_fragment:\"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\",specularmap_pars_fragment:\"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\",tonemapping_fragment:\"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\",tonemapping_pars_fragment:\"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\",transmission_fragment:\"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\\n#endif\",transmission_pars_fragment:\"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef texture2DLodEXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\",uv_pars_fragment:\"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\",uv_pars_vertex:\"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\",uv_vertex:\"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\",uv2_pars_fragment:\"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\",uv2_pars_vertex:\"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\",uv2_vertex:\"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\",worldpos_vertex:\"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\",background_vert:\"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\",background_frag:\"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n}\",backgroundCube_vert:\"varying vec3 vWorldDirection;\\n#include \u003Ccommon>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\tgl_Position.z = gl_Position.w;\\n}\",backgroundCube_frag:\"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nvarying vec3 vWorldDirection;\\n#include \u003Ccube_uv_reflection_fragment>\\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n}\",cube_vert:\"varying vec3 vWorldDirection;\\n#include \u003Ccommon>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\tgl_Position.z = gl_Position.w;\\n}\",cube_frag:\"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = texColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n}\",depth_vert:\"#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Cdisplacementmap_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\t#include \u003Cskinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \u003Cbeginnormal_vertex>\\n\\t\\t#include \u003Cmorphnormal_vertex>\\n\\t\\t#include \u003Cskinnormal_vertex>\\n\\t#endif\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cdisplacementmap_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\",depth_frag:\"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \u003Ccommon>\\n#include \u003Cpacking>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cmap_pars_fragment>\\n#include \u003Calphamap_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \u003Cmap_fragment>\\n\\t#include \u003Calphamap_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\",distanceRGBA_vert:\"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Cdisplacementmap_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\t#include \u003Cskinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \u003Cbeginnormal_vertex>\\n\\t\\t#include \u003Cmorphnormal_vertex>\\n\\t\\t#include \u003Cskinnormal_vertex>\\n\\t#endif\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cdisplacementmap_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Cworldpos_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\tvWorldPosition = worldPosition.xyz;\\n}\",distanceRGBA_frag:\"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \u003Ccommon>\\n#include \u003Cpacking>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cmap_pars_fragment>\\n#include \u003Calphamap_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main () {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \u003Cmap_fragment>\\n\\t#include \u003Calphamap_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\",equirect_vert:\"varying vec3 vWorldDirection;\\n#include \u003Ccommon>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cproject_vertex>\\n}\",equirect_frag:\"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \u003Ccommon>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n}\",linedashed_vert:\"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \u003Ccommon>\\n#include \u003Ccolor_pars_vertex>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \u003Ccolor_vertex>\\n\\t#include \u003Cmorphcolor_vertex>\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\t#include \u003Cfog_vertex>\\n}\",linedashed_frag:\"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \u003Ccommon>\\n#include \u003Ccolor_pars_fragment>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Ccolor_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \u003Coutput_fragment>\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n\\t#include \u003Cpremultiplied_alpha_fragment>\\n}\",meshbasic_vert:\"#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Cuv2_pars_vertex>\\n#include \u003Cenvmap_pars_vertex>\\n#include \u003Ccolor_pars_vertex>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\t#include \u003Cuv2_vertex>\\n\\t#include \u003Ccolor_vertex>\\n\\t#include \u003Cmorphcolor_vertex>\\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \u003Cbeginnormal_vertex>\\n\\t\\t#include \u003Cmorphnormal_vertex>\\n\\t\\t#include \u003Cskinbase_vertex>\\n\\t\\t#include \u003Cskinnormal_vertex>\\n\\t\\t#include \u003Cdefaultnormal_vertex>\\n\\t#endif\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\t#include \u003Cworldpos_vertex>\\n\\t#include \u003Cenvmap_vertex>\\n\\t#include \u003Cfog_vertex>\\n}\",meshbasic_frag:\"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \u003Ccommon>\\n#include \u003Cdithering_pars_fragment>\\n#include \u003Ccolor_pars_fragment>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cuv2_pars_fragment>\\n#include \u003Cmap_pars_fragment>\\n#include \u003Calphamap_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Caomap_pars_fragment>\\n#include \u003Clightmap_pars_fragment>\\n#include \u003Cenvmap_common_pars_fragment>\\n#include \u003Cenvmap_pars_fragment>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Cspecularmap_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Cmap_fragment>\\n\\t#include \u003Ccolor_fragment>\\n\\t#include \u003Calphamap_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\t#include \u003Cspecularmap_fragment>\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \u003Caomap_fragment>\\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \u003Cenvmap_fragment>\\n\\t#include \u003Coutput_fragment>\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n\\t#include \u003Cpremultiplied_alpha_fragment>\\n\\t#include \u003Cdithering_fragment>\\n}\",meshlambert_vert:\"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Cuv2_pars_vertex>\\n#include \u003Cdisplacementmap_pars_vertex>\\n#include \u003Cenvmap_pars_vertex>\\n#include \u003Ccolor_pars_vertex>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Cnormal_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Cshadowmap_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\t#include \u003Cuv2_vertex>\\n\\t#include \u003Ccolor_vertex>\\n\\t#include \u003Cmorphcolor_vertex>\\n\\t#include \u003Cbeginnormal_vertex>\\n\\t#include \u003Cmorphnormal_vertex>\\n\\t#include \u003Cskinbase_vertex>\\n\\t#include \u003Cskinnormal_vertex>\\n\\t#include \u003Cdefaultnormal_vertex>\\n\\t#include \u003Cnormal_vertex>\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cdisplacementmap_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \u003Cworldpos_vertex>\\n\\t#include \u003Cenvmap_vertex>\\n\\t#include \u003Cshadowmap_vertex>\\n\\t#include \u003Cfog_vertex>\\n}\",meshlambert_frag:\"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \u003Ccommon>\\n#include \u003Cpacking>\\n#include \u003Cdithering_pars_fragment>\\n#include \u003Ccolor_pars_fragment>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cuv2_pars_fragment>\\n#include \u003Cmap_pars_fragment>\\n#include \u003Calphamap_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Caomap_pars_fragment>\\n#include \u003Clightmap_pars_fragment>\\n#include \u003Cemissivemap_pars_fragment>\\n#include \u003Cenvmap_common_pars_fragment>\\n#include \u003Cenvmap_pars_fragment>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Cbsdfs>\\n#include \u003Clights_pars_begin>\\n#include \u003Cnormal_pars_fragment>\\n#include \u003Clights_lambert_pars_fragment>\\n#include \u003Cshadowmap_pars_fragment>\\n#include \u003Cbumpmap_pars_fragment>\\n#include \u003Cnormalmap_pars_fragment>\\n#include \u003Cspecularmap_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Cmap_fragment>\\n\\t#include \u003Ccolor_fragment>\\n\\t#include \u003Calphamap_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\t#include \u003Cspecularmap_fragment>\\n\\t#include \u003Cnormal_fragment_begin>\\n\\t#include \u003Cnormal_fragment_maps>\\n\\t#include \u003Cemissivemap_fragment>\\n\\t#include \u003Clights_lambert_fragment>\\n\\t#include \u003Clights_fragment_begin>\\n\\t#include \u003Clights_fragment_maps>\\n\\t#include \u003Clights_fragment_end>\\n\\t#include \u003Caomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \u003Cenvmap_fragment>\\n\\t#include \u003Coutput_fragment>\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n\\t#include \u003Cpremultiplied_alpha_fragment>\\n\\t#include \u003Cdithering_fragment>\\n}\",meshmatcap_vert:\"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Ccolor_pars_vertex>\\n#include \u003Cdisplacementmap_pars_vertex>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Cnormal_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\t#include \u003Ccolor_vertex>\\n\\t#include \u003Cmorphcolor_vertex>\\n\\t#include \u003Cbeginnormal_vertex>\\n\\t#include \u003Cmorphnormal_vertex>\\n\\t#include \u003Cskinbase_vertex>\\n\\t#include \u003Cskinnormal_vertex>\\n\\t#include \u003Cdefaultnormal_vertex>\\n\\t#include \u003Cnormal_vertex>\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cdisplacementmap_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\t#include \u003Cfog_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n}\",meshmatcap_frag:\"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \u003Ccommon>\\n#include \u003Cdithering_pars_fragment>\\n#include \u003Ccolor_pars_fragment>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cmap_pars_fragment>\\n#include \u003Calphamap_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Cnormal_pars_fragment>\\n#include \u003Cbumpmap_pars_fragment>\\n#include \u003Cnormalmap_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Cmap_fragment>\\n\\t#include \u003Ccolor_fragment>\\n\\t#include \u003Calphamap_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\t#include \u003Cnormal_fragment_begin>\\n\\t#include \u003Cnormal_fragment_maps>\\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \u003Coutput_fragment>\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n\\t#include \u003Cpremultiplied_alpha_fragment>\\n\\t#include \u003Cdithering_fragment>\\n}\",meshnormal_vert:\"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Cdisplacementmap_pars_vertex>\\n#include \u003Cnormal_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\t#include \u003Cbeginnormal_vertex>\\n\\t#include \u003Cmorphnormal_vertex>\\n\\t#include \u003Cskinbase_vertex>\\n\\t#include \u003Cskinnormal_vertex>\\n\\t#include \u003Cdefaultnormal_vertex>\\n\\t#include \u003Cnormal_vertex>\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cdisplacementmap_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\",meshnormal_frag:\"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \u003Cpacking>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cnormal_pars_fragment>\\n#include \u003Cbumpmap_pars_fragment>\\n#include \u003Cnormalmap_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Cnormal_fragment_begin>\\n\\t#include \u003Cnormal_fragment_maps>\\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\",meshphong_vert:\"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Cuv2_pars_vertex>\\n#include \u003Cdisplacementmap_pars_vertex>\\n#include \u003Cenvmap_pars_vertex>\\n#include \u003Ccolor_pars_vertex>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Cnormal_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Cshadowmap_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\t#include \u003Cuv2_vertex>\\n\\t#include \u003Ccolor_vertex>\\n\\t#include \u003Cmorphcolor_vertex>\\n\\t#include \u003Cbeginnormal_vertex>\\n\\t#include \u003Cmorphnormal_vertex>\\n\\t#include \u003Cskinbase_vertex>\\n\\t#include \u003Cskinnormal_vertex>\\n\\t#include \u003Cdefaultnormal_vertex>\\n\\t#include \u003Cnormal_vertex>\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cdisplacementmap_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \u003Cworldpos_vertex>\\n\\t#include \u003Cenvmap_vertex>\\n\\t#include \u003Cshadowmap_vertex>\\n\\t#include \u003Cfog_vertex>\\n}\",meshphong_frag:\"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \u003Ccommon>\\n#include \u003Cpacking>\\n#include \u003Cdithering_pars_fragment>\\n#include \u003Ccolor_pars_fragment>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cuv2_pars_fragment>\\n#include \u003Cmap_pars_fragment>\\n#include \u003Calphamap_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Caomap_pars_fragment>\\n#include \u003Clightmap_pars_fragment>\\n#include \u003Cemissivemap_pars_fragment>\\n#include \u003Cenvmap_common_pars_fragment>\\n#include \u003Cenvmap_pars_fragment>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Cbsdfs>\\n#include \u003Clights_pars_begin>\\n#include \u003Cnormal_pars_fragment>\\n#include \u003Clights_phong_pars_fragment>\\n#include \u003Cshadowmap_pars_fragment>\\n#include \u003Cbumpmap_pars_fragment>\\n#include \u003Cnormalmap_pars_fragment>\\n#include \u003Cspecularmap_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Cmap_fragment>\\n\\t#include \u003Ccolor_fragment>\\n\\t#include \u003Calphamap_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\t#include \u003Cspecularmap_fragment>\\n\\t#include \u003Cnormal_fragment_begin>\\n\\t#include \u003Cnormal_fragment_maps>\\n\\t#include \u003Cemissivemap_fragment>\\n\\t#include \u003Clights_phong_fragment>\\n\\t#include \u003Clights_fragment_begin>\\n\\t#include \u003Clights_fragment_maps>\\n\\t#include \u003Clights_fragment_end>\\n\\t#include \u003Caomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \u003Cenvmap_fragment>\\n\\t#include \u003Coutput_fragment>\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n\\t#include \u003Cpremultiplied_alpha_fragment>\\n\\t#include \u003Cdithering_fragment>\\n}\",meshphysical_vert:\"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Cuv2_pars_vertex>\\n#include \u003Cdisplacementmap_pars_vertex>\\n#include \u003Ccolor_pars_vertex>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Cnormal_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Cshadowmap_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\t#include \u003Cuv2_vertex>\\n\\t#include \u003Ccolor_vertex>\\n\\t#include \u003Cmorphcolor_vertex>\\n\\t#include \u003Cbeginnormal_vertex>\\n\\t#include \u003Cmorphnormal_vertex>\\n\\t#include \u003Cskinbase_vertex>\\n\\t#include \u003Cskinnormal_vertex>\\n\\t#include \u003Cdefaultnormal_vertex>\\n\\t#include \u003Cnormal_vertex>\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cdisplacementmap_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \u003Cworldpos_vertex>\\n\\t#include \u003Cshadowmap_vertex>\\n\\t#include \u003Cfog_vertex>\\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\",meshphysical_frag:\"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \u003Ccommon>\\n#include \u003Cpacking>\\n#include \u003Cdithering_pars_fragment>\\n#include \u003Ccolor_pars_fragment>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cuv2_pars_fragment>\\n#include \u003Cmap_pars_fragment>\\n#include \u003Calphamap_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Caomap_pars_fragment>\\n#include \u003Clightmap_pars_fragment>\\n#include \u003Cemissivemap_pars_fragment>\\n#include \u003Cbsdfs>\\n#include \u003Ciridescence_fragment>\\n#include \u003Ccube_uv_reflection_fragment>\\n#include \u003Cenvmap_common_pars_fragment>\\n#include \u003Cenvmap_physical_pars_fragment>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Clights_pars_begin>\\n#include \u003Cnormal_pars_fragment>\\n#include \u003Clights_physical_pars_fragment>\\n#include \u003Ctransmission_pars_fragment>\\n#include \u003Cshadowmap_pars_fragment>\\n#include \u003Cbumpmap_pars_fragment>\\n#include \u003Cnormalmap_pars_fragment>\\n#include \u003Cclearcoat_pars_fragment>\\n#include \u003Ciridescence_pars_fragment>\\n#include \u003Croughnessmap_pars_fragment>\\n#include \u003Cmetalnessmap_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Cmap_fragment>\\n\\t#include \u003Ccolor_fragment>\\n\\t#include \u003Calphamap_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\t#include \u003Croughnessmap_fragment>\\n\\t#include \u003Cmetalnessmap_fragment>\\n\\t#include \u003Cnormal_fragment_begin>\\n\\t#include \u003Cnormal_fragment_maps>\\n\\t#include \u003Cclearcoat_normal_fragment_begin>\\n\\t#include \u003Cclearcoat_normal_fragment_maps>\\n\\t#include \u003Cemissivemap_fragment>\\n\\t#include \u003Clights_physical_fragment>\\n\\t#include \u003Clights_fragment_begin>\\n\\t#include \u003Clights_fragment_maps>\\n\\t#include \u003Clights_fragment_end>\\n\\t#include \u003Caomap_fragment>\\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \u003Ctransmission_fragment>\\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include \u003Coutput_fragment>\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n\\t#include \u003Cpremultiplied_alpha_fragment>\\n\\t#include \u003Cdithering_fragment>\\n}\",meshtoon_vert:\"#define TOON\\nvarying vec3 vViewPosition;\\n#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Cuv2_pars_vertex>\\n#include \u003Cdisplacementmap_pars_vertex>\\n#include \u003Ccolor_pars_vertex>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Cnormal_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Cshadowmap_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\t#include \u003Cuv2_vertex>\\n\\t#include \u003Ccolor_vertex>\\n\\t#include \u003Cmorphcolor_vertex>\\n\\t#include \u003Cbeginnormal_vertex>\\n\\t#include \u003Cmorphnormal_vertex>\\n\\t#include \u003Cskinbase_vertex>\\n\\t#include \u003Cskinnormal_vertex>\\n\\t#include \u003Cdefaultnormal_vertex>\\n\\t#include \u003Cnormal_vertex>\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cdisplacementmap_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \u003Cworldpos_vertex>\\n\\t#include \u003Cshadowmap_vertex>\\n\\t#include \u003Cfog_vertex>\\n}\",meshtoon_frag:\"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \u003Ccommon>\\n#include \u003Cpacking>\\n#include \u003Cdithering_pars_fragment>\\n#include \u003Ccolor_pars_fragment>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cuv2_pars_fragment>\\n#include \u003Cmap_pars_fragment>\\n#include \u003Calphamap_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Caomap_pars_fragment>\\n#include \u003Clightmap_pars_fragment>\\n#include \u003Cemissivemap_pars_fragment>\\n#include \u003Cgradientmap_pars_fragment>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Cbsdfs>\\n#include \u003Clights_pars_begin>\\n#include \u003Cnormal_pars_fragment>\\n#include \u003Clights_toon_pars_fragment>\\n#include \u003Cshadowmap_pars_fragment>\\n#include \u003Cbumpmap_pars_fragment>\\n#include \u003Cnormalmap_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Cmap_fragment>\\n\\t#include \u003Ccolor_fragment>\\n\\t#include \u003Calphamap_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\t#include \u003Cnormal_fragment_begin>\\n\\t#include \u003Cnormal_fragment_maps>\\n\\t#include \u003Cemissivemap_fragment>\\n\\t#include \u003Clights_toon_fragment>\\n\\t#include \u003Clights_fragment_begin>\\n\\t#include \u003Clights_fragment_maps>\\n\\t#include \u003Clights_fragment_end>\\n\\t#include \u003Caomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \u003Coutput_fragment>\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n\\t#include \u003Cpremultiplied_alpha_fragment>\\n\\t#include \u003Cdithering_fragment>\\n}\",points_vert:\"uniform float size;\\nuniform float scale;\\n#include \u003Ccommon>\\n#include \u003Ccolor_pars_vertex>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Ccolor_vertex>\\n\\t#include \u003Cmorphcolor_vertex>\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\t#include \u003Cworldpos_vertex>\\n\\t#include \u003Cfog_vertex>\\n}\",points_frag:\"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \u003Ccommon>\\n#include \u003Ccolor_pars_fragment>\\n#include \u003Cmap_particle_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Cmap_particle_fragment>\\n\\t#include \u003Ccolor_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \u003Coutput_fragment>\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n\\t#include \u003Cpremultiplied_alpha_fragment>\\n}\",shadow_vert:\"#include \u003Ccommon>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Cmorphtarget_pars_vertex>\\n#include \u003Cskinning_pars_vertex>\\n#include \u003Cshadowmap_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cbeginnormal_vertex>\\n\\t#include \u003Cmorphnormal_vertex>\\n\\t#include \u003Cskinbase_vertex>\\n\\t#include \u003Cskinnormal_vertex>\\n\\t#include \u003Cdefaultnormal_vertex>\\n\\t#include \u003Cbegin_vertex>\\n\\t#include \u003Cmorphtarget_vertex>\\n\\t#include \u003Cskinning_vertex>\\n\\t#include \u003Cproject_vertex>\\n\\t#include \u003Cworldpos_vertex>\\n\\t#include \u003Cshadowmap_vertex>\\n\\t#include \u003Cfog_vertex>\\n}\",shadow_frag:\"uniform vec3 color;\\nuniform float opacity;\\n#include \u003Ccommon>\\n#include \u003Cpacking>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Cbsdfs>\\n#include \u003Clights_pars_begin>\\n#include \u003Cshadowmap_pars_fragment>\\n#include \u003Cshadowmask_pars_fragment>\\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n}\",sprite_vert:\"uniform float rotation;\\nuniform vec2 center;\\n#include \u003Ccommon>\\n#include \u003Cuv_pars_vertex>\\n#include \u003Cfog_pars_vertex>\\n#include \u003Clogdepthbuf_pars_vertex>\\n#include \u003Cclipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include \u003Cuv_vertex>\\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \u003Clogdepthbuf_vertex>\\n\\t#include \u003Cclipping_planes_vertex>\\n\\t#include \u003Cfog_vertex>\\n}\",sprite_frag:\"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \u003Ccommon>\\n#include \u003Cuv_pars_fragment>\\n#include \u003Cmap_pars_fragment>\\n#include \u003Calphamap_pars_fragment>\\n#include \u003Calphatest_pars_fragment>\\n#include \u003Cfog_pars_fragment>\\n#include \u003Clogdepthbuf_pars_fragment>\\n#include \u003Cclipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include \u003Cclipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \u003Clogdepthbuf_fragment>\\n\\t#include \u003Cmap_fragment>\\n\\t#include \u003Calphamap_fragment>\\n\\t#include \u003Calphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \u003Coutput_fragment>\\n\\t#include \u003Ctonemapping_fragment>\\n\\t#include \u003Cencodings_fragment>\\n\\t#include \u003Cfog_fragment>\\n}\"},Ps={common:{diffuse:{value:new Yn(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new Dn},uv2Transform:{value:new Dn},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Ln(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Yn(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Yn(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Dn}},sprite:{diffuse:{value:new Yn(16777215)},opacity:{value:1},center:{value:new Ln(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Dn}}},ks={basic:{uniforms:ps([Ps.common,Ps.specularmap,Ps.envmap,Ps.aomap,Ps.lightmap,Ps.fog]),vertexShader:Rs.meshbasic_vert,fragmentShader:Rs.meshbasic_frag},lambert:{uniforms:ps([Ps.common,Ps.specularmap,Ps.envmap,Ps.aomap,Ps.lightmap,Ps.emissivemap,Ps.bumpmap,Ps.normalmap,Ps.displacementmap,Ps.fog,Ps.lights,{emissive:{value:new Yn(0)}}]),vertexShader:Rs.meshlambert_vert,fragmentShader:Rs.meshlambert_frag},phong:{uniforms:ps([Ps.common,Ps.specularmap,Ps.envmap,Ps.aomap,Ps.lightmap,Ps.emissivemap,Ps.bumpmap,Ps.normalmap,Ps.displacementmap,Ps.fog,Ps.lights,{emissive:{value:new Yn(0)},specular:{value:new Yn(1118481)},shininess:{value:30}}]),vertexShader:Rs.meshphong_vert,fragmentShader:Rs.meshphong_frag},standard:{uniforms:ps([Ps.common,Ps.envmap,Ps.aomap,Ps.lightmap,Ps.emissivemap,Ps.bumpmap,Ps.normalmap,Ps.displacementmap,Ps.roughnessmap,Ps.metalnessmap,Ps.fog,Ps.lights,{emissive:{value:new Yn(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Rs.meshphysical_vert,fragmentShader:Rs.meshphysical_frag},toon:{uniforms:ps([Ps.common,Ps.aomap,Ps.lightmap,Ps.emissivemap,Ps.bumpmap,Ps.normalmap,Ps.displacementmap,Ps.gradientmap,Ps.fog,Ps.lights,{emissive:{value:new Yn(0)}}]),vertexShader:Rs.meshtoon_vert,fragmentShader:Rs.meshtoon_frag},matcap:{uniforms:ps([Ps.common,Ps.bumpmap,Ps.normalmap,Ps.displacementmap,Ps.fog,{matcap:{value:null}}]),vertexShader:Rs.meshmatcap_vert,fragmentShader:Rs.meshmatcap_frag},points:{uniforms:ps([Ps.points,Ps.fog]),vertexShader:Rs.points_vert,fragmentShader:Rs.points_frag},dashed:{uniforms:ps([Ps.common,Ps.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Rs.linedashed_vert,fragmentShader:Rs.linedashed_frag},depth:{uniforms:ps([Ps.common,Ps.displacementmap]),vertexShader:Rs.depth_vert,fragmentShader:Rs.depth_frag},normal:{uniforms:ps([Ps.common,Ps.bumpmap,Ps.normalmap,Ps.displacementmap,{opacity:{value:1}}]),vertexShader:Rs.meshnormal_vert,fragmentShader:Rs.meshnormal_frag},sprite:{uniforms:ps([Ps.sprite,Ps.fog]),vertexShader:Rs.sprite_vert,fragmentShader:Rs.sprite_frag},background:{uniforms:{uvTransform:{value:new Dn},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Rs.background_vert,fragmentShader:Rs.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:Rs.backgroundCube_vert,fragmentShader:Rs.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Rs.cube_vert,fragmentShader:Rs.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Rs.equirect_vert,fragmentShader:Rs.equirect_frag},distanceRGBA:{uniforms:ps([Ps.common,Ps.displacementmap,{referencePosition:{value:new ci},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Rs.distanceRGBA_vert,fragmentShader:Rs.distanceRGBA_frag},shadow:{uniforms:ps([Ps.lights,Ps.fog,{color:{value:new Yn(0)},opacity:{value:1}}]),vertexShader:Rs.shadow_vert,fragmentShader:Rs.shadow_frag}};ks.physical={uniforms:ps([ks.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Ln(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Yn(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new Ln},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Yn(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Yn(1,1,1)},specularColorMap:{value:null}}]),vertexShader:Rs.meshphysical_vert,fragmentShader:Rs.meshphysical_frag};const Fs={r:0,b:0,g:0};function Os(e,t,n,i,r,s,o){const a=new Yn(0);let l,c,h=!0===s?0:1,u=null,d=0,p=null;function A(t,n){t.getRGB(Fs,As(e)),i.buffers.color.setClear(Fs.r,Fs.g,Fs.b,n,o)}return{getClearColor:function(){return a},setClearColor:function(e,t=1){a.set(e),h=t,A(a,h)},getClearAlpha:function(){return h},setClearAlpha:function(e){h=e,A(a,h)},render:function(i,s){let o=!1,f=!0===s.isScene?s.background:null;f&&f.isTexture&&(f=(s.backgroundBlurriness>0?n:t).get(f));const v=e.xr,y=v.getSession&&v.getSession();y&&\"additive\"===y.environmentBlendMode&&(f=null),null===f?A(a,h):f&&f.isColor&&(A(f,1),o=!0),(e.autoClear||o)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),f&&(f.isCubeTexture||f.mapping===ce)?(void 0===c&&(c=new cs(new us(1,1,1),new ms({name:\"BackgroundCubeMaterial\",uniforms:ds(ks.backgroundCube.uniforms),vertexShader:ks.backgroundCube.vertexShader,fragmentShader:ks.backgroundCube.fragmentShader,side:g,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute(\"normal\"),c.geometry.deleteAttribute(\"uv\"),c.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(c.material,\"envMap\",{get:function(){return this.uniforms.envMap.value}}),r.update(c)),c.material.uniforms.envMap.value=f,c.material.uniforms.flipEnvMap.value=f.isCubeTexture&&!1===f.isRenderTargetTexture?-1:1,c.material.uniforms.backgroundBlurriness.value=s.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=s.backgroundIntensity,u===f&&d===f.version&&p===e.toneMapping||(c.material.needsUpdate=!0,u=f,d=f.version,p=e.toneMapping),c.layers.enableAll(),i.unshift(c,c.geometry,c.material,0,0,null)):f&&f.isTexture&&(void 0===l&&(l=new cs(new Ds(2,2),new ms({name:\"BackgroundMaterial\",uniforms:ds(ks.background.uniforms),vertexShader:ks.background.vertexShader,fragmentShader:ks.background.fragmentShader,side:m,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute(\"normal\"),Object.defineProperty(l.material,\"map\",{get:function(){return this.uniforms.t2D.value}}),r.update(l)),l.material.uniforms.t2D.value=f,l.material.uniforms.backgroundIntensity.value=s.backgroundIntensity,!0===f.matrixAutoUpdate&&f.updateMatrix(),l.material.uniforms.uvTransform.value.copy(f.matrix),u===f&&d===f.version&&p===e.toneMapping||(l.material.needsUpdate=!0,u=f,d=f.version,p=e.toneMapping),l.layers.enableAll(),i.unshift(l,l.geometry,l.material,0,0,null))}}}function Qs(e,t,n,i){const r=e.getParameter(34921),s=i.isWebGL2?null:t.get(\"OES_vertex_array_object\"),o=i.isWebGL2||null!==s,a={},l=p(null);let c=l,h=!1;function u(t){return i.isWebGL2?e.bindVertexArray(t):s.bindVertexArrayOES(t)}function d(t){return i.isWebGL2?e.deleteVertexArray(t):s.deleteVertexArrayOES(t)}function p(e){const t=[],n=[],i=[];for(let e=0;e\u003Cr;e++)t[e]=0,n[e]=0,i[e]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:t,enabledAttributes:n,attributeDivisors:i,object:e,attributes:{},index:null}}function A(){const e=c.newAttributes;for(let t=0,n=e.length;t\u003Cn;t++)e[t]=0}function f(e){m(e,0)}function m(n,r){const s=c.newAttributes,o=c.enabledAttributes,a=c.attributeDivisors;s[n]=1,0===o[n]&&(e.enableVertexAttribArray(n),o[n]=1),a[n]!==r&&((i.isWebGL2?e:t.get(\"ANGLE_instanced_arrays\"))[i.isWebGL2?\"vertexAttribDivisor\":\"vertexAttribDivisorANGLE\"](n,r),a[n]=r)}function g(){const t=c.newAttributes,n=c.enabledAttributes;for(let i=0,r=n.length;i\u003Cr;i++)n[i]!==t[i]&&(e.disableVertexAttribArray(i),n[i]=0)}function v(t,n,r,s,o,a){!0!==i.isWebGL2||5124!==r&&5125!==r?e.vertexAttribPointer(t,n,r,s,o,a):e.vertexAttribIPointer(t,n,r,o,a)}function y(){E(),h=!0,c!==l&&(c=l,u(c.object))}function E(){l.geometry=null,l.program=null,l.wireframe=!1}return{setup:function(r,l,d,y,E){let b=!1;if(o){const t=function(t,n,r){const o=!0===r.wireframe;let l=a[t.id];void 0===l&&(l={},a[t.id]=l);let c=l[n.id];void 0===c&&(c={},l[n.id]=c);let h=c[o];return void 0===h&&(h=p(i.isWebGL2?e.createVertexArray():s.createVertexArrayOES()),c[o]=h),h}(y,d,l);c!==t&&(c=t,u(c.object)),b=function(e,t,n,i){const r=c.attributes,s=t.attributes;let o=0;const a=n.getAttributes();for(const t in a)if(a[t].location>=0){const n=r[t];let i=s[t];if(void 0===i&&(\"instanceMatrix\"===t&&e.instanceMatrix&&(i=e.instanceMatrix),\"instanceColor\"===t&&e.instanceColor&&(i=e.instanceColor)),void 0===n)return!0;if(n.attribute!==i)return!0;if(i&&n.data!==i.data)return!0;o++}return c.attributesNum!==o||c.index!==i}(r,y,d,E),b&&function(e,t,n,i){const r={},s=t.attributes;let o=0;const a=n.getAttributes();for(const t in a)if(a[t].location>=0){let n=s[t];void 0===n&&(\"instanceMatrix\"===t&&e.instanceMatrix&&(n=e.instanceMatrix),\"instanceColor\"===t&&e.instanceColor&&(n=e.instanceColor));const i={};i.attribute=n,n&&n.data&&(i.data=n.data),r[t]=i,o++}c.attributes=r,c.attributesNum=o,c.index=i}(r,y,d,E)}else{const e=!0===l.wireframe;c.geometry===y.id&&c.program===d.id&&c.wireframe===e||(c.geometry=y.id,c.program=d.id,c.wireframe=e,b=!0)}null!==E&&n.update(E,34963),(b||h)&&(h=!1,function(r,s,o,a){if(!1===i.isWebGL2&&(r.isInstancedMesh||a.isInstancedBufferGeometry)&&null===t.get(\"ANGLE_instanced_arrays\"))return;A();const l=a.attributes,c=o.getAttributes(),h=s.defaultAttributeValues;for(const t in c){const i=c[t];if(i.location>=0){let s=l[t];if(void 0===s&&(\"instanceMatrix\"===t&&r.instanceMatrix&&(s=r.instanceMatrix),\"instanceColor\"===t&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const t=s.normalized,o=s.itemSize,l=n.get(s);if(void 0===l)continue;const c=l.buffer,h=l.type,u=l.bytesPerElement;if(s.isInterleavedBufferAttribute){const n=s.data,l=n.stride,d=s.offset;if(n.isInstancedInterleavedBuffer){for(let e=0;e\u003Ci.locationSize;e++)m(i.location+e,n.meshPerAttribute);!0!==r.isInstancedMesh&&void 0===a._maxInstanceCount&&(a._maxInstanceCount=n.meshPerAttribute*n.count)}else for(let e=0;e\u003Ci.locationSize;e++)f(i.location+e);e.bindBuffer(34962,c);for(let e=0;e\u003Ci.locationSize;e++)v(i.location+e,o/i.locationSize,h,t,l*u,(d+o/i.locationSize*e)*u)}else{if(s.isInstancedBufferAttribute){for(let e=0;e\u003Ci.locationSize;e++)m(i.location+e,s.meshPerAttribute);!0!==r.isInstancedMesh&&void 0===a._maxInstanceCount&&(a._maxInstanceCount=s.meshPerAttribute*s.count)}else for(let e=0;e\u003Ci.locationSize;e++)f(i.location+e);e.bindBuffer(34962,c);for(let e=0;e\u003Ci.locationSize;e++)v(i.location+e,o/i.locationSize,h,t,o*u,o/i.locationSize*e*u)}}else if(void 0!==h){const n=h[t];if(void 0!==n)switch(n.length){case 2:e.vertexAttrib2fv(i.location,n);break;case 3:e.vertexAttrib3fv(i.location,n);break;case 4:e.vertexAttrib4fv(i.location,n);break;default:e.vertexAttrib1fv(i.location,n)}}}}g()}(r,l,d,y),null!==E&&e.bindBuffer(34963,n.get(E).buffer))},reset:y,resetDefaultState:E,dispose:function(){y();for(const e in a){const t=a[e];for(const e in t){const n=t[e];for(const e in n)d(n[e].object),delete n[e];delete t[e]}delete a[e]}},releaseStatesOfGeometry:function(e){if(void 0===a[e.id])return;const t=a[e.id];for(const e in t){const n=t[e];for(const e in n)d(n[e].object),delete n[e];delete t[e]}delete a[e.id]},releaseStatesOfProgram:function(e){for(const t in a){const n=a[t];if(void 0===n[e.id])continue;const i=n[e.id];for(const e in i)d(i[e].object),delete i[e];delete n[e.id]}},initAttributes:A,enableAttribute:f,disableUnusedAttributes:g}}function Us(e,t,n,i){const r=i.isWebGL2;let s;this.setMode=function(e){s=e},this.render=function(t,i){e.drawArrays(s,t,i),n.update(i,s,1)},this.renderInstances=function(i,o,a){if(0===a)return;let l,c;if(r)l=e,c=\"drawArraysInstanced\";else if(l=t.get(\"ANGLE_instanced_arrays\"),c=\"drawArraysInstancedANGLE\",null===l)return void console.error(\"THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");l[c](s,i,o,a),n.update(o,s,a)}}function Ns(e,t,n){let i;function r(t){if(\"highp\"===t){if(e.getShaderPrecisionFormat(35633,36338).precision>0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return\"highp\";t=\"mediump\"}return\"mediump\"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?\"mediump\":\"lowp\"}const s=\"undefined\"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext||\"undefined\"!=typeof WebGL2ComputeRenderingContext&&e instanceof WebGL2ComputeRenderingContext;let o=void 0!==n.precision?n.precision:\"highp\";const a=r(o);a!==o&&(console.warn(\"THREE.WebGLRenderer:\",o,\"not supported, using\",a,\"instead.\"),o=a);const l=s||t.has(\"WEBGL_draw_buffers\"),c=!0===n.logarithmicDepthBuffer,h=e.getParameter(34930),u=e.getParameter(35660),d=e.getParameter(3379),p=e.getParameter(34076),A=e.getParameter(34921),f=e.getParameter(36347),m=e.getParameter(36348),g=e.getParameter(36349),v=u>0,y=s||t.has(\"OES_texture_float\");return{isWebGL2:s,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==i)return i;if(!0===t.has(\"EXT_texture_filter_anisotropic\")){const n=t.get(\"EXT_texture_filter_anisotropic\");i=e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i},getMaxPrecision:r,precision:o,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:u,maxTextureSize:d,maxCubemapSize:p,maxAttributes:A,maxVertexUniforms:f,maxVaryings:m,maxFragmentUniforms:g,vertexTextures:v,floatFragmentTextures:y,floatVertexTextures:v&&y,maxSamples:s?e.getParameter(36183):0}}function Gs(e){const t=this;let n=null,i=0,r=!1,s=!1;const o=new _s,a=new Dn,l={value:null,needsUpdate:!1};function c(){l.value!==n&&(l.value=n,l.needsUpdate=i>0),t.numPlanes=i,t.numIntersection=0}function h(e,n,i,r){const s=null!==e?e.length:0;let c=null;if(0!==s){if(c=l.value,!0!==r||null===c){const t=i+4*s,r=n.matrixWorldInverse;a.getNormalMatrix(r),(null===c||c.length\u003Ct)&&(c=new Float32Array(t));for(let t=0,n=i;t!==s;++t,n+=4)o.copy(e[t]).applyMatrix4(r,a),o.normal.toArray(c,n),c[n+3]=o.constant}l.value=c,l.needsUpdate=!0}return t.numPlanes=s,t.numIntersection=0,c}this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t,s){const o=0!==e.length||t||0!==i||r;return r=t,n=h(e,s,0),i=e.length,o},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1,c()},this.setState=function(t,o,a){const u=t.clippingPlanes,d=t.clipIntersection,p=t.clipShadows,A=e.get(t);if(!r||null===u||0===u.length||s&&!p)s?h(null):c();else{const e=s?0:i,t=4*e;let r=A.clippingState||null;l.value=r,r=h(u,o,t,a);for(let e=0;e!==t;++e)r[e]=n[e];A.clippingState=r,this.numIntersection=d?this.numPlanes:0,this.numPlanes+=e}}}function zs(e){let t=new WeakMap;function n(e,t){return t===ae?e.mapping=se:t===le&&(e.mapping=oe),e}function i(e){const n=e.target;n.removeEventListener(\"dispose\",i);const r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture&&!1===r.isRenderTargetTexture){const s=r.mapping;if(s===ae||s===le){if(t.has(r))return n(t.get(r).texture,r.mapping);{const s=r.image;if(s&&s.height>0){const o=new xs(s.height/2);return o.fromEquirectangularTexture(e,r),t.set(r,o),r.addEventListener(\"dispose\",i),n(o.texture,r.mapping)}return null}}}return r},dispose:function(){t=new WeakMap}}}class Hs extends gs{constructor(e=-1,t=1,n=1,i=-1,r=.1,s=2e3){super(),this.isOrthographicCamera=!0,this.type=\"OrthographicCamera\",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=i,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this}setViewOffset(e,t,n,i,r,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-e,s=n+e,o=i+t,a=i-t;if(null!==this.view&&this.view.enabled){const e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=e*this.view.offsetX,s=r+e*this.view.width,o-=t*this.view.offsetY,a=o-t*this.view.height}this.projectionMatrix.makeOrthographic(r,s,o,a,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}}const Vs=[.125,.215,.35,.446,.526,.582],Ws=new Hs,js=new Yn;let qs=null;const Ys=(1+Math.sqrt(5))/2,Xs=1/Ys,Js=[new ci(1,1,1),new ci(-1,1,1),new ci(1,1,-1),new ci(-1,1,-1),new ci(0,Ys,Xs),new ci(0,Ys,-Xs),new ci(Xs,0,Ys),new ci(-Xs,0,Ys),new ci(Ys,Xs,0),new ci(-Ys,Xs,0)];class Ks{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,i=100){qs=this._renderer.getRenderTarget(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,n,i,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=to(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=eo(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;e\u003Cthis._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(qs),e.scissorTest=!1,$s(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===se||e.mapping===oe?this._setSize(0===e.image.length?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),qs=this._renderer.getRenderTarget();const n=t||this._allocateTargets();return this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,n={magFilter:ve,minFilter:ve,generateMipmaps:!1,type:Te,format:Fe,encoding:Dt,depthBuffer:!1},i=Zs(e,t,n);if(null===this._pingPongRenderTarget||this._pingPongRenderTarget.width!==e){null!==this._pingPongRenderTarget&&this._dispose(),this._pingPongRenderTarget=Zs(e,t,n);const{_lodMax:i}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=function(e){const t=[],n=[],i=[];let r=e;const s=e-4+1+Vs.length;for(let o=0;o\u003Cs;o++){const s=Math.pow(2,r);n.push(s);let a=1/s;o>e-4?a=Vs[o-e+4-1]:0===o&&(a=0),i.push(a);const l=1/(s-2),c=-l,h=1+l,u=[c,c,h,c,h,h,c,c,h,h,c,h],d=6,p=6,A=3,f=2,m=1,g=new Float32Array(A*p*d),v=new Float32Array(f*p*d),y=new Float32Array(m*p*d);for(let e=0;e\u003Cd;e++){const t=e%3*2/3-1,n=e>2?0:-1,i=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0];g.set(i,A*p*e),v.set(u,f*p*e);const r=[e,e,e,e,e,e];y.set(r,m*p*e)}const E=new Wr;E.setAttribute(\"position\",new Ir(g,A)),E.setAttribute(\"uv\",new Ir(v,f)),E.setAttribute(\"faceIndex\",new Ir(y,m)),t.push(E),r>4&&r--}return{lodPlanes:t,sizeLods:n,sigmas:i}}(i)),this._blurMaterial=function(e,t,n){const i=new Float32Array(20),r=new ci(0,1,0);return new ms({name:\"SphericalGaussianBlur\",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:\"\\n\\n\\t\\tprecision mediump float;\\n\\t\\tprecision mediump int;\\n\\n\\t\\tattribute float faceIndex;\\n\\n\\t\\tvarying vec3 vOutputDirection;\\n\\n\\t\\t// RH coordinate system; PMREM face-indexing convention\\n\\t\\tvec3 getDirection( vec2 uv, float face ) {\\n\\n\\t\\t\\tuv = 2.0 * uv - 1.0;\\n\\n\\t\\t\\tvec3 direction = vec3( uv, 1.0 );\\n\\n\\t\\t\\tif ( face == 0.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.zyx; // ( 1, v, u ) pos x\\n\\n\\t\\t\\t} else if ( face == 1.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.xzy;\\n\\t\\t\\t\\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\\n\\n\\t\\t\\t} else if ( face == 2.0 ) {\\n\\n\\t\\t\\t\\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\\n\\n\\t\\t\\t} else if ( face == 3.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.zyx;\\n\\t\\t\\t\\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\\n\\n\\t\\t\\t} else if ( face == 4.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.xzy;\\n\\t\\t\\t\\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\\n\\n\\t\\t\\t} else if ( face == 5.0 ) {\\n\\n\\t\\t\\t\\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn direction;\\n\\n\\t\\t}\\n\\n\\t\\tvoid main() {\\n\\n\\t\\t\\tvOutputDirection = getDirection( uv, faceIndex );\\n\\t\\t\\tgl_Position = vec4( position, 1.0 );\\n\\n\\t\\t}\\n\\t\",fragmentShader:\"\\n\\n\\t\\t\\tprecision mediump float;\\n\\t\\t\\tprecision mediump int;\\n\\n\\t\\t\\tvarying vec3 vOutputDirection;\\n\\n\\t\\t\\tuniform sampler2D envMap;\\n\\t\\t\\tuniform int samples;\\n\\t\\t\\tuniform float weights[ n ];\\n\\t\\t\\tuniform bool latitudinal;\\n\\t\\t\\tuniform float dTheta;\\n\\t\\t\\tuniform float mipInt;\\n\\t\\t\\tuniform vec3 poleAxis;\\n\\n\\t\\t\\t#define ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t#include \u003Ccube_uv_reflection_fragment>\\n\\n\\t\\t\\tvec3 getSample( float theta, vec3 axis ) {\\n\\n\\t\\t\\t\\tfloat cosTheta = cos( theta );\\n\\t\\t\\t\\t// Rodrigues' axis-angle rotation\\n\\t\\t\\t\\tvec3 sampleDirection = vOutputDirection * cosTheta\\n\\t\\t\\t\\t\\t+ cross( axis, vOutputDirection ) * sin( theta )\\n\\t\\t\\t\\t\\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\\n\\n\\t\\t\\t\\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvoid main() {\\n\\n\\t\\t\\t\\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\\n\\n\\t\\t\\t\\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\\n\\n\\t\\t\\t\\t\\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\taxis = normalize( axis );\\n\\n\\t\\t\\t\\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t\\t\\t\\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\\n\\n\\t\\t\\t\\tfor ( int i = 1; i \u003C n; i++ ) {\\n\\n\\t\\t\\t\\t\\tif ( i >= samples ) {\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tfloat theta = dTheta * float( i );\\n\\t\\t\\t\\t\\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\\n\\t\\t\\t\\t\\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\t\\t\",blending:y,depthTest:!1,depthWrite:!1})}(i,e,t)}return i}_compileMaterial(e){const t=new cs(this._lodPlanes[0],e);this._renderer.compile(t,Ws)}_sceneToCubeUV(e,t,n,i){const r=new vs(90,1,t,n),s=[1,-1,1,1,1,1],o=[1,1,1,-1,-1,-1],a=this._renderer,l=a.autoClear,c=a.toneMapping;a.getClearColor(js),a.toneMapping=Z,a.autoClear=!1;const h=new Cr({name:\"PMREM.Background\",side:g,depthWrite:!1,depthTest:!1}),u=new cs(new us,h);let d=!1;const p=e.background;p?p.isColor&&(h.color.copy(p),e.background=null,d=!0):(h.color.copy(js),d=!0);for(let t=0;t\u003C6;t++){const n=t%3;0===n?(r.up.set(0,s[t],0),r.lookAt(o[t],0,0)):1===n?(r.up.set(0,0,s[t]),r.lookAt(0,o[t],0)):(r.up.set(0,s[t],0),r.lookAt(0,0,o[t]));const l=this._cubeSize;$s(i,n*l,t>2?l:0,l,l),a.setRenderTarget(i),d&&a.render(u,r),a.render(e,r)}u.geometry.dispose(),u.material.dispose(),a.toneMapping=c,a.autoClear=l,e.background=p}_textureToCubeUV(e,t){const n=this._renderer,i=e.mapping===se||e.mapping===oe;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=to()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=eo());const r=i?this._cubemapMaterial:this._equirectMaterial,s=new cs(this._lodPlanes[0],r);r.uniforms.envMap.value=e;const o=this._cubeSize;$s(t,0,0,3*o,2*o),n.setRenderTarget(t),n.render(s,Ws)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;for(let t=1;t\u003Cthis._lodPlanes.length;t++){const n=Math.sqrt(this._sigmas[t]*this._sigmas[t]-this._sigmas[t-1]*this._sigmas[t-1]),i=Js[(t-1)%Js.length];this._blur(e,t-1,t,n,i)}t.autoClear=n}_blur(e,t,n,i,r){const s=this._pingPongRenderTarget;this._halfBlur(e,s,t,n,i,\"latitudinal\",r),this._halfBlur(s,e,n,n,i,\"longitudinal\",r)}_halfBlur(e,t,n,i,r,s,o){const a=this._renderer,l=this._blurMaterial;\"latitudinal\"!==s&&\"longitudinal\"!==s&&console.error(\"blur direction must be either latitudinal or longitudinal!\");const c=new cs(this._lodPlanes[i],l),h=l.uniforms,u=this._sizeLods[n]-1,d=isFinite(r)?Math.PI/(2*u):2*Math.PI/39,p=r/d,A=isFinite(r)?1+Math.floor(3*p):20;A>20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${A} samples when the maximum is set to 20`);const f=[];let m=0;for(let e=0;e\u003C20;++e){const t=e/p,n=Math.exp(-t*t/2);f.push(n),0===e?m+=n:e\u003CA&&(m+=2*n)}for(let e=0;e\u003Cf.length;e++)f[e]=f[e]/m;h.envMap.value=e.texture,h.samples.value=A,h.weights.value=f,h.latitudinal.value=\"latitudinal\"===s,o&&(h.poleAxis.value=o);const{_lodMax:g}=this;h.dTheta.value=d,h.mipInt.value=g-n;const v=this._sizeLods[i];$s(t,3*v*(i>g-4?i-g+4:0),4*(this._cubeSize-v),3*v,2*v),a.setRenderTarget(t),a.render(c,Ws)}}function Zs(e,t,n){const i=new ni(e,t,n);return i.texture.mapping=ce,i.texture.name=\"PMREM.cubeUv\",i.scissorTest=!0,i}function $s(e,t,n,i,r){e.viewport.set(t,n,i,r),e.scissor.set(t,n,i,r)}function eo(){return new ms({name:\"EquirectangularToCubeUV\",uniforms:{envMap:{value:null}},vertexShader:\"\\n\\n\\t\\tprecision mediump float;\\n\\t\\tprecision mediump int;\\n\\n\\t\\tattribute float faceIndex;\\n\\n\\t\\tvarying vec3 vOutputDirection;\\n\\n\\t\\t// RH coordinate system; PMREM face-indexing convention\\n\\t\\tvec3 getDirection( vec2 uv, float face ) {\\n\\n\\t\\t\\tuv = 2.0 * uv - 1.0;\\n\\n\\t\\t\\tvec3 direction = vec3( uv, 1.0 );\\n\\n\\t\\t\\tif ( face == 0.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.zyx; // ( 1, v, u ) pos x\\n\\n\\t\\t\\t} else if ( face == 1.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.xzy;\\n\\t\\t\\t\\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\\n\\n\\t\\t\\t} else if ( face == 2.0 ) {\\n\\n\\t\\t\\t\\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\\n\\n\\t\\t\\t} else if ( face == 3.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.zyx;\\n\\t\\t\\t\\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\\n\\n\\t\\t\\t} else if ( face == 4.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.xzy;\\n\\t\\t\\t\\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\\n\\n\\t\\t\\t} else if ( face == 5.0 ) {\\n\\n\\t\\t\\t\\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn direction;\\n\\n\\t\\t}\\n\\n\\t\\tvoid main() {\\n\\n\\t\\t\\tvOutputDirection = getDirection( uv, faceIndex );\\n\\t\\t\\tgl_Position = vec4( position, 1.0 );\\n\\n\\t\\t}\\n\\t\",fragmentShader:\"\\n\\n\\t\\t\\tprecision mediump float;\\n\\t\\t\\tprecision mediump int;\\n\\n\\t\\t\\tvarying vec3 vOutputDirection;\\n\\n\\t\\t\\tuniform sampler2D envMap;\\n\\n\\t\\t\\t#include \u003Ccommon>\\n\\n\\t\\t\\tvoid main() {\\n\\n\\t\\t\\t\\tvec3 outputDirection = normalize( vOutputDirection );\\n\\t\\t\\t\\tvec2 uv = equirectUv( outputDirection );\\n\\n\\t\\t\\t\\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\\n\\n\\t\\t\\t}\\n\\t\\t\",blending:y,depthTest:!1,depthWrite:!1})}function to(){return new ms({name:\"CubemapToCubeUV\",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:\"\\n\\n\\t\\tprecision mediump float;\\n\\t\\tprecision mediump int;\\n\\n\\t\\tattribute float faceIndex;\\n\\n\\t\\tvarying vec3 vOutputDirection;\\n\\n\\t\\t// RH coordinate system; PMREM face-indexing convention\\n\\t\\tvec3 getDirection( vec2 uv, float face ) {\\n\\n\\t\\t\\tuv = 2.0 * uv - 1.0;\\n\\n\\t\\t\\tvec3 direction = vec3( uv, 1.0 );\\n\\n\\t\\t\\tif ( face == 0.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.zyx; // ( 1, v, u ) pos x\\n\\n\\t\\t\\t} else if ( face == 1.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.xzy;\\n\\t\\t\\t\\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\\n\\n\\t\\t\\t} else if ( face == 2.0 ) {\\n\\n\\t\\t\\t\\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\\n\\n\\t\\t\\t} else if ( face == 3.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.zyx;\\n\\t\\t\\t\\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\\n\\n\\t\\t\\t} else if ( face == 4.0 ) {\\n\\n\\t\\t\\t\\tdirection = direction.xzy;\\n\\t\\t\\t\\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\\n\\n\\t\\t\\t} else if ( face == 5.0 ) {\\n\\n\\t\\t\\t\\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn direction;\\n\\n\\t\\t}\\n\\n\\t\\tvoid main() {\\n\\n\\t\\t\\tvOutputDirection = getDirection( uv, faceIndex );\\n\\t\\t\\tgl_Position = vec4( position, 1.0 );\\n\\n\\t\\t}\\n\\t\",fragmentShader:\"\\n\\n\\t\\t\\tprecision mediump float;\\n\\t\\t\\tprecision mediump int;\\n\\n\\t\\t\\tuniform float flipEnvMap;\\n\\n\\t\\t\\tvarying vec3 vOutputDirection;\\n\\n\\t\\t\\tuniform samplerCube envMap;\\n\\n\\t\\t\\tvoid main() {\\n\\n\\t\\t\\t\\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\\n\\n\\t\\t\\t}\\n\\t\\t\",blending:y,depthTest:!1,depthWrite:!1})}function no(e){let t=new WeakMap,n=null;function i(e){const n=e.target;n.removeEventListener(\"dispose\",i);const r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){const s=r.mapping,o=s===ae||s===le,a=s===se||s===oe;if(o||a){if(r.isRenderTargetTexture&&!0===r.needsPMREMUpdate){r.needsPMREMUpdate=!1;let i=t.get(r);return null===n&&(n=new Ks(e)),i=o?n.fromEquirectangular(r,i):n.fromCubemap(r,i),t.set(r,i),i.texture}if(t.has(r))return t.get(r).texture;{const s=r.image;if(o&&s&&s.height>0||a&&s&&function(e){let t=0;for(let n=0;n\u003C6;n++)void 0!==e[n]&&t++;return 6===t}(s)){null===n&&(n=new Ks(e));const s=o?n.fromEquirectangular(r):n.fromCubemap(r);return t.set(r,s),r.addEventListener(\"dispose\",i),s.texture}return null}}}return r},dispose:function(){t=new WeakMap,null!==n&&(n.dispose(),n=null)}}}function io(e){const t={};function n(n){if(void 0!==t[n])return t[n];let i;switch(n){case\"WEBGL_depth_texture\":i=e.getExtension(\"WEBGL_depth_texture\")||e.getExtension(\"MOZ_WEBGL_depth_texture\")||e.getExtension(\"WEBKIT_WEBGL_depth_texture\");break;case\"EXT_texture_filter_anisotropic\":i=e.getExtension(\"EXT_texture_filter_anisotropic\")||e.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||e.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");break;case\"WEBGL_compressed_texture_s3tc\":i=e.getExtension(\"WEBGL_compressed_texture_s3tc\")||e.getExtension(\"MOZ_WEBGL_compressed_texture_s3tc\")||e.getExtension(\"WEBKIT_WEBGL_compressed_texture_s3tc\");break;case\"WEBGL_compressed_texture_pvrtc\":i=e.getExtension(\"WEBGL_compressed_texture_pvrtc\")||e.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\");break;default:i=e.getExtension(n)}return t[n]=i,i}return{has:function(e){return null!==n(e)},init:function(e){e.isWebGL2?n(\"EXT_color_buffer_float\"):(n(\"WEBGL_depth_texture\"),n(\"OES_texture_float\"),n(\"OES_texture_half_float\"),n(\"OES_texture_half_float_linear\"),n(\"OES_standard_derivatives\"),n(\"OES_element_index_uint\"),n(\"OES_vertex_array_object\"),n(\"ANGLE_instanced_arrays\")),n(\"OES_texture_float_linear\"),n(\"EXT_color_buffer_half_float\"),n(\"WEBGL_multisampled_render_to_texture\")},get:function(e){const t=n(e);return null===t&&console.warn(\"THREE.WebGLRenderer: \"+e+\" extension not supported.\"),t}}}function ro(e,t,n,i){const r={},s=new WeakMap;function o(e){const a=e.target;null!==a.index&&t.remove(a.index);for(const e in a.attributes)t.remove(a.attributes[e]);a.removeEventListener(\"dispose\",o),delete r[a.id];const l=s.get(a);l&&(t.remove(l),s.delete(a)),i.releaseStatesOfGeometry(a),!0===a.isInstancedBufferGeometry&&delete a._maxInstanceCount,n.memory.geometries--}function a(e){const n=[],i=e.index,r=e.attributes.position;let o=0;if(null!==i){const e=i.array;o=i.version;for(let t=0,i=e.length;t\u003Ci;t+=3){const i=e[t+0],r=e[t+1],s=e[t+2];n.push(i,r,r,s,s,i)}}else{const e=r.array;o=r.version;for(let t=0,i=e.length/3-1;t\u003Ci;t+=3){const e=t+0,i=t+1,r=t+2;n.push(e,i,i,r,r,e)}}const a=new(Pn(n)?Pr:Dr)(n,1);a.version=o;const l=s.get(e);l&&t.remove(l),s.set(e,a)}return{get:function(e,t){return!0===r[t.id]||(t.addEventListener(\"dispose\",o),r[t.id]=!0,n.memory.geometries++),t},update:function(e){const n=e.attributes;for(const e in n)t.update(n[e],34962);const i=e.morphAttributes;for(const e in i){const n=i[e];for(let e=0,i=n.length;e\u003Ci;e++)t.update(n[e],34962)}},getWireframeAttribute:function(e){const t=s.get(e);if(t){const n=e.index;null!==n&&t.version\u003Cn.version&&a(e)}else a(e);return s.get(e)}}}function so(e,t,n,i){const r=i.isWebGL2;let s,o,a;this.setMode=function(e){s=e},this.setIndex=function(e){o=e.type,a=e.bytesPerElement},this.render=function(t,i){e.drawElements(s,i,o,t*a),n.update(i,s,1)},this.renderInstances=function(i,l,c){if(0===c)return;let h,u;if(r)h=e,u=\"drawElementsInstanced\";else if(h=t.get(\"ANGLE_instanced_arrays\"),u=\"drawElementsInstancedANGLE\",null===h)return void console.error(\"THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");h[u](s,l,o,i*a,c),n.update(l,s,c)}}function oo(e){const t={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,textures:0},render:t,programs:null,autoReset:!0,reset:function(){t.frame++,t.calls=0,t.triangles=0,t.points=0,t.lines=0},update:function(e,n,i){switch(t.calls++,n){case 4:t.triangles+=i*(e/3);break;case 1:t.lines+=i*(e/2);break;case 3:t.lines+=i*(e-1);break;case 2:t.lines+=i*e;break;case 0:t.points+=i*e;break;default:console.error(\"THREE.WebGLInfo: Unknown draw mode:\",n)}}}}function ao(e,t){return e[0]-t[0]}function lo(e,t){return Math.abs(t[1])-Math.abs(e[1])}function co(e,t,n){const i={},r=new Float32Array(8),s=new WeakMap,o=new ti,a=[];for(let e=0;e\u003C8;e++)a[e]=[e,0];return{update:function(l,c,h,u){const d=l.morphTargetInfluences;if(!0===t.isWebGL2){const p=c.morphAttributes.position||c.morphAttributes.normal||c.morphAttributes.color,A=void 0!==p?p.length:0;let f=s.get(c);if(void 0===f||f.count!==A){void 0!==f&&f.texture.dispose();const v=void 0!==c.morphAttributes.position,y=void 0!==c.morphAttributes.normal,E=void 0!==c.morphAttributes.color,b=c.morphAttributes.position||[],x=c.morphAttributes.normal||[],w=c.morphAttributes.color||[];let C=0;!0===v&&(C=1),!0===y&&(C=2),!0===E&&(C=3);let M=c.attributes.position.count*C,_=1;M>t.maxTextureSize&&(_=Math.ceil(M/t.maxTextureSize),M=t.maxTextureSize);const I=new Float32Array(M*_*4*A),B=new ii(I,M,_,A);B.type=Se,B.needsUpdate=!0;const S=4*C;for(let L=0;L\u003CA;L++){const D=b[L],R=x[L],P=w[L],k=M*_*4*L;for(let F=0;F\u003CD.count;F++){const O=F*S;!0===v&&(o.fromBufferAttribute(D,F),I[k+O+0]=o.x,I[k+O+1]=o.y,I[k+O+2]=o.z,I[k+O+3]=0),!0===y&&(o.fromBufferAttribute(R,F),I[k+O+4]=o.x,I[k+O+5]=o.y,I[k+O+6]=o.z,I[k+O+7]=0),!0===E&&(o.fromBufferAttribute(P,F),I[k+O+8]=o.x,I[k+O+9]=o.y,I[k+O+10]=o.z,I[k+O+11]=4===P.itemSize?o.w:1)}}function T(){B.dispose(),s.delete(c),c.removeEventListener(\"dispose\",T)}f={count:A,texture:B,size:new Ln(M,_)},s.set(c,f),c.addEventListener(\"dispose\",T)}let m=0;for(let Q=0;Q\u003Cd.length;Q++)m+=d[Q];const g=c.morphTargetsRelative?1:1-m;u.getUniforms().setValue(e,\"morphTargetBaseInfluence\",g),u.getUniforms().setValue(e,\"morphTargetInfluences\",d),u.getUniforms().setValue(e,\"morphTargetsTexture\",f.texture,n),u.getUniforms().setValue(e,\"morphTargetsTextureSize\",f.size)}else{const U=void 0===d?0:d.length;let N=i[c.id];if(void 0===N||N.length!==U){N=[];for(let W=0;W\u003CU;W++)N[W]=[W,0];i[c.id]=N}for(let j=0;j\u003CU;j++){const q=N[j];q[0]=j,q[1]=d[j]}N.sort(lo);for(let Y=0;Y\u003C8;Y++)Y\u003CU&&N[Y][1]?(a[Y][0]=N[Y][0],a[Y][1]=N[Y][1]):(a[Y][0]=Number.MAX_SAFE_INTEGER,a[Y][1]=0);a.sort(ao);const G=c.morphAttributes.position,z=c.morphAttributes.normal;let H=0;for(let X=0;X\u003C8;X++){const J=a[X],K=J[0],Z=J[1];K!==Number.MAX_SAFE_INTEGER&&Z?(G&&c.getAttribute(\"morphTarget\"+X)!==G[K]&&c.setAttribute(\"morphTarget\"+X,G[K]),z&&c.getAttribute(\"morphNormal\"+X)!==z[K]&&c.setAttribute(\"morphNormal\"+X,z[K]),r[X]=Z,H+=Z):(G&&!0===c.hasAttribute(\"morphTarget\"+X)&&c.deleteAttribute(\"morphTarget\"+X),z&&!0===c.hasAttribute(\"morphNormal\"+X)&&c.deleteAttribute(\"morphNormal\"+X),r[X]=0)}const V=c.morphTargetsRelative?1:1-H;u.getUniforms().setValue(e,\"morphTargetBaseInfluence\",V),u.getUniforms().setValue(e,\"morphTargetInfluences\",r)}}}}function ho(e,t,n,i){let r=new WeakMap;function s(e){const t=e.target;t.removeEventListener(\"dispose\",s),n.remove(t.instanceMatrix),null!==t.instanceColor&&n.remove(t.instanceColor)}return{update:function(e){const o=i.render.frame,a=e.geometry,l=t.get(e,a);return r.get(l)!==o&&(t.update(l),r.set(l,o)),e.isInstancedMesh&&(!1===e.hasEventListener(\"dispose\",s)&&e.addEventListener(\"dispose\",s),n.update(e.instanceMatrix,34962),null!==e.instanceColor&&n.update(e.instanceColor,34962)),l},dispose:function(){r=new WeakMap}}}const uo=new ei,po=new ii,Ao=new si,fo=new bs,mo=[],go=[],vo=new Float32Array(16),yo=new Float32Array(9),Eo=new Float32Array(4);function bo(e,t,n){const i=e[0];if(i\u003C=0||i>0)return e;const r=t*n;let s=mo[r];if(void 0===s&&(s=new Float32Array(r),mo[r]=s),0!==t){i.toArray(s,0);for(let i=1,r=0;i!==t;++i)r+=n,e[i].toArray(s,r)}return s}function xo(e,t){if(e.length!==t.length)return!1;for(let n=0,i=e.length;n\u003Ci;n++)if(e[n]!==t[n])return!1;return!0}function wo(e,t){for(let n=0,i=t.length;n\u003Ci;n++)e[n]=t[n]}function Co(e,t){let n=go[t];void 0===n&&(n=new Int32Array(t),go[t]=n);for(let i=0;i!==t;++i)n[i]=e.allocateTextureUnit();return n}function Mo(e,t){const n=this.cache;n[0]!==t&&(e.uniform1f(this.addr,t),n[0]=t)}function _o(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y||(e.uniform2f(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(xo(n,t))return;e.uniform2fv(this.addr,t),wo(n,t)}}function Io(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z||(e.uniform3f(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else if(void 0!==t.r)n[0]===t.r&&n[1]===t.g&&n[2]===t.b||(e.uniform3f(this.addr,t.r,t.g,t.b),n[0]=t.r,n[1]=t.g,n[2]=t.b);else{if(xo(n,t))return;e.uniform3fv(this.addr,t),wo(n,t)}}function Bo(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z&&n[3]===t.w||(e.uniform4f(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(xo(n,t))return;e.uniform4fv(this.addr,t),wo(n,t)}}function So(e,t){const n=this.cache,i=t.elements;if(void 0===i){if(xo(n,t))return;e.uniformMatrix2fv(this.addr,!1,t),wo(n,t)}else{if(xo(n,i))return;Eo.set(i),e.uniformMatrix2fv(this.addr,!1,Eo),wo(n,i)}}function To(e,t){const n=this.cache,i=t.elements;if(void 0===i){if(xo(n,t))return;e.uniformMatrix3fv(this.addr,!1,t),wo(n,t)}else{if(xo(n,i))return;yo.set(i),e.uniformMatrix3fv(this.addr,!1,yo),wo(n,i)}}function Lo(e,t){const n=this.cache,i=t.elements;if(void 0===i){if(xo(n,t))return;e.uniformMatrix4fv(this.addr,!1,t),wo(n,t)}else{if(xo(n,i))return;vo.set(i),e.uniformMatrix4fv(this.addr,!1,vo),wo(n,i)}}function Do(e,t){const n=this.cache;n[0]!==t&&(e.uniform1i(this.addr,t),n[0]=t)}function Ro(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y||(e.uniform2i(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(xo(n,t))return;e.uniform2iv(this.addr,t),wo(n,t)}}function Po(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z||(e.uniform3i(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(xo(n,t))return;e.uniform3iv(this.addr,t),wo(n,t)}}function ko(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z&&n[3]===t.w||(e.uniform4i(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(xo(n,t))return;e.uniform4iv(this.addr,t),wo(n,t)}}function Fo(e,t){const n=this.cache;n[0]!==t&&(e.uniform1ui(this.addr,t),n[0]=t)}function Oo(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y||(e.uniform2ui(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(xo(n,t))return;e.uniform2uiv(this.addr,t),wo(n,t)}}function Qo(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z||(e.uniform3ui(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(xo(n,t))return;e.uniform3uiv(this.addr,t),wo(n,t)}}function Uo(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z&&n[3]===t.w||(e.uniform4ui(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(xo(n,t))return;e.uniform4uiv(this.addr,t),wo(n,t)}}function No(e,t,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture2D(t||uo,r)}function Go(e,t,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture3D(t||Ao,r)}function zo(e,t,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTextureCube(t||fo,r)}function Ho(e,t,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture2DArray(t||po,r)}function Vo(e,t){e.uniform1fv(this.addr,t)}function Wo(e,t){const n=bo(t,this.size,2);e.uniform2fv(this.addr,n)}function jo(e,t){const n=bo(t,this.size,3);e.uniform3fv(this.addr,n)}function qo(e,t){const n=bo(t,this.size,4);e.uniform4fv(this.addr,n)}function Yo(e,t){const n=bo(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,n)}function Xo(e,t){const n=bo(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,n)}function Jo(e,t){const n=bo(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,n)}function Ko(e,t){e.uniform1iv(this.addr,t)}function Zo(e,t){e.uniform2iv(this.addr,t)}function $o(e,t){e.uniform3iv(this.addr,t)}function ea(e,t){e.uniform4iv(this.addr,t)}function ta(e,t){e.uniform1uiv(this.addr,t)}function na(e,t){e.uniform2uiv(this.addr,t)}function ia(e,t){e.uniform3uiv(this.addr,t)}function ra(e,t){e.uniform4uiv(this.addr,t)}function sa(e,t,n){const i=this.cache,r=t.length,s=Co(n,r);xo(i,s)||(e.uniform1iv(this.addr,s),wo(i,s));for(let e=0;e!==r;++e)n.setTexture2D(t[e]||uo,s[e])}function oa(e,t,n){const i=this.cache,r=t.length,s=Co(n,r);xo(i,s)||(e.uniform1iv(this.addr,s),wo(i,s));for(let e=0;e!==r;++e)n.setTexture3D(t[e]||Ao,s[e])}function aa(e,t,n){const i=this.cache,r=t.length,s=Co(n,r);xo(i,s)||(e.uniform1iv(this.addr,s),wo(i,s));for(let e=0;e!==r;++e)n.setTextureCube(t[e]||fo,s[e])}function la(e,t,n){const i=this.cache,r=t.length,s=Co(n,r);xo(i,s)||(e.uniform1iv(this.addr,s),wo(i,s));for(let e=0;e!==r;++e)n.setTexture2DArray(t[e]||po,s[e])}class ca{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.setValue=function(e){switch(e){case 5126:return Mo;case 35664:return _o;case 35665:return Io;case 35666:return Bo;case 35674:return So;case 35675:return To;case 35676:return Lo;case 5124:case 35670:return Do;case 35667:case 35671:return Ro;case 35668:case 35672:return Po;case 35669:case 35673:return ko;case 5125:return Fo;case 36294:return Oo;case 36295:return Qo;case 36296:return Uo;case 35678:case 36198:case 36298:case 36306:case 35682:return No;case 35679:case 36299:case 36307:return Go;case 35680:case 36300:case 36308:case 36293:return zo;case 36289:case 36303:case 36311:case 36292:return Ho}}(t.type)}}class ha{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.size=t.size,this.setValue=function(e){switch(e){case 5126:return Vo;case 35664:return Wo;case 35665:return jo;case 35666:return qo;case 35674:return Yo;case 35675:return Xo;case 35676:return Jo;case 5124:case 35670:return Ko;case 35667:case 35671:return Zo;case 35668:case 35672:return $o;case 35669:case 35673:return ea;case 5125:return ta;case 36294:return na;case 36295:return ia;case 36296:return ra;case 35678:case 36198:case 36298:case 36306:case 35682:return sa;case 35679:case 36299:case 36307:return oa;case 35680:case 36300:case 36308:case 36293:return aa;case 36289:case 36303:case 36311:case 36292:return la}}(t.type)}}class ua{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n){const i=this.seq;for(let r=0,s=i.length;r!==s;++r){const s=i[r];s.setValue(e,t[s.id],n)}}}const da=/(\\w+)(\\])?(\\[|\\.)?/g;function pa(e,t){e.seq.push(t),e.map[t.id]=t}function Aa(e,t,n){const i=e.name,r=i.length;for(da.lastIndex=0;;){const s=da.exec(i),o=da.lastIndex;let a=s[1];const l=\"]\"===s[2],c=s[3];if(l&&(a|=0),void 0===c||\"[\"===c&&o+2===r){pa(n,void 0===c?new ca(a,e,t):new ha(a,e,t));break}{let e=n.map[a];void 0===e&&(e=new ua(a),pa(n,e)),n=e}}}class fa{constructor(e,t){this.seq=[],this.map={};const n=e.getProgramParameter(t,35718);for(let i=0;i\u003Cn;++i){const n=e.getActiveUniform(t,i);Aa(n,e.getUniformLocation(t,n.name),this)}}setValue(e,t,n,i){const r=this.map[t];void 0!==r&&r.setValue(e,n,i)}setOptional(e,t,n){const i=t[n];void 0!==i&&this.setValue(e,n,i)}static upload(e,t,n,i){for(let r=0,s=t.length;r!==s;++r){const s=t[r],o=n[s.id];!1!==o.needsUpdate&&s.setValue(e,o.value,i)}}static seqWithValue(e,t){const n=[];for(let i=0,r=e.length;i!==r;++i){const r=e[i];r.id in t&&n.push(r)}return n}}function ma(e,t,n){const i=e.createShader(t);return e.shaderSource(i,n),e.compileShader(i),i}let ga=0;function va(e,t,n){const i=e.getShaderParameter(t,35713),r=e.getShaderInfoLog(t).trim();if(i&&\"\"===r)return\"\";const s=/ERROR: 0:(\\d+)/.exec(r);if(s){const i=parseInt(s[1]);return n.toUpperCase()+\"\\n\\n\"+r+\"\\n\\n\"+function(e,t){const n=e.split(\"\\n\"),i=[],r=Math.max(t-6,0),s=Math.min(t+6,n.length);for(let e=r;e\u003Cs;e++){const r=e+1;i.push(`${r===t?\">\":\" \"} ${r}: ${n[e]}`)}return i.join(\"\\n\")}(e.getShaderSource(t),i)}return r}function ya(e,t){const n=function(e){switch(e){case Dt:return[\"Linear\",\"( value )\"];case Rt:return[\"sRGB\",\"( value )\"];default:return console.warn(\"THREE.WebGLProgram: Unsupported encoding:\",e),[\"Linear\",\"( value )\"]}}(t);return\"vec4 \"+e+\"( vec4 value ) { return LinearTo\"+n[0]+n[1]+\"; }\"}function Ea(e,t){let n;switch(t){case $:n=\"Linear\";break;case ee:n=\"Reinhard\";break;case te:n=\"OptimizedCineon\";break;case ne:n=\"ACESFilmic\";break;case ie:n=\"Custom\";break;default:console.warn(\"THREE.WebGLProgram: Unsupported toneMapping:\",t),n=\"Linear\"}return\"vec3 \"+e+\"( vec3 color ) { return \"+n+\"ToneMapping( color ); }\"}function ba(e){return\"\"!==e}function xa(e,t){const n=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function wa(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}const Ca=/^[ \\t]*#include +\u003C([\\w\\d./]+)>/gm;function Ma(e){return e.replace(Ca,_a)}function _a(e,t){const n=Rs[t];if(void 0===n)throw new Error(\"Can not resolve #include \u003C\"+t+\">\");return Ma(n)}const Ia=/#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*\u003C\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;function Ba(e){return e.replace(Ia,Sa)}function Sa(e,t,n,i){let r=\"\";for(let e=parseInt(t);e\u003CparseInt(n);e++)r+=i.replace(/\\[\\s*i\\s*\\]/g,\"[ \"+e+\" ]\").replace(/UNROLLED_LOOP_INDEX/g,e);return r}function Ta(e){let t=\"precision \"+e.precision+\" float;\\nprecision \"+e.precision+\" int;\";return\"highp\"===e.precision?t+=\"\\n#define HIGH_PRECISION\":\"mediump\"===e.precision?t+=\"\\n#define MEDIUM_PRECISION\":\"lowp\"===e.precision&&(t+=\"\\n#define LOW_PRECISION\"),t}function La(e,t,n,i){const r=e.getContext(),s=n.defines;let o=n.vertexShader,a=n.fragmentShader;const l=function(e){let t=\"SHADOWMAP_TYPE_BASIC\";return e.shadowMapType===p?t=\"SHADOWMAP_TYPE_PCF\":e.shadowMapType===A?t=\"SHADOWMAP_TYPE_PCF_SOFT\":e.shadowMapType===f&&(t=\"SHADOWMAP_TYPE_VSM\"),t}(n),c=function(e){let t=\"ENVMAP_TYPE_CUBE\";if(e.envMap)switch(e.envMapMode){case se:case oe:t=\"ENVMAP_TYPE_CUBE\";break;case ce:t=\"ENVMAP_TYPE_CUBE_UV\"}return t}(n),h=function(e){let t=\"ENVMAP_MODE_REFLECTION\";return e.envMap&&e.envMapMode===oe&&(t=\"ENVMAP_MODE_REFRACTION\"),t}(n),u=function(e){let t=\"ENVMAP_BLENDING_NONE\";if(e.envMap)switch(e.combine){case X:t=\"ENVMAP_BLENDING_MULTIPLY\";break;case J:t=\"ENVMAP_BLENDING_MIX\";break;case K:t=\"ENVMAP_BLENDING_ADD\"}return t}(n),d=function(e){const t=e.envMapCubeUVHeight;if(null===t)return null;const n=Math.log2(t)-2,i=1/t;return{texelWidth:1/(3*Math.max(Math.pow(2,n),112)),texelHeight:i,maxMip:n}}(n),m=n.isWebGL2?\"\":function(e){return[e.extensionDerivatives||e.envMapCubeUVHeight||e.bumpMap||e.tangentSpaceNormalMap||e.clearcoatNormalMap||e.flatShading||\"physical\"===e.shaderID?\"#extension GL_OES_standard_derivatives : enable\":\"\",(e.extensionFragDepth||e.logarithmicDepthBuffer)&&e.rendererExtensionFragDepth?\"#extension GL_EXT_frag_depth : enable\":\"\",e.extensionDrawBuffers&&e.rendererExtensionDrawBuffers?\"#extension GL_EXT_draw_buffers : require\":\"\",(e.extensionShaderTextureLOD||e.envMap||e.transmission)&&e.rendererExtensionShaderTextureLod?\"#extension GL_EXT_shader_texture_lod : enable\":\"\"].filter(ba).join(\"\\n\")}(n),g=function(e){const t=[];for(const n in e){const i=e[n];!1!==i&&t.push(\"#define \"+n+\" \"+i)}return t.join(\"\\n\")}(s),v=r.createProgram();let y,E,b=n.glslVersion?\"#version \"+n.glslVersion+\"\\n\":\"\";n.isRawShaderMaterial?(y=[g].filter(ba).join(\"\\n\"),y.length>0&&(y+=\"\\n\"),E=[m,g].filter(ba).join(\"\\n\"),E.length>0&&(E+=\"\\n\")):(y=[Ta(n),\"#define SHADER_NAME \"+n.shaderName,g,n.instancing?\"#define USE_INSTANCING\":\"\",n.instancingColor?\"#define USE_INSTANCING_COLOR\":\"\",n.supportsVertexTextures?\"#define VERTEX_TEXTURES\":\"\",n.useFog&&n.fog?\"#define USE_FOG\":\"\",n.useFog&&n.fogExp2?\"#define FOG_EXP2\":\"\",n.map?\"#define USE_MAP\":\"\",n.envMap?\"#define USE_ENVMAP\":\"\",n.envMap?\"#define \"+h:\"\",n.lightMap?\"#define USE_LIGHTMAP\":\"\",n.aoMap?\"#define USE_AOMAP\":\"\",n.emissiveMap?\"#define USE_EMISSIVEMAP\":\"\",n.bumpMap?\"#define USE_BUMPMAP\":\"\",n.normalMap?\"#define USE_NORMALMAP\":\"\",n.normalMap&&n.objectSpaceNormalMap?\"#define OBJECTSPACE_NORMALMAP\":\"\",n.normalMap&&n.tangentSpaceNormalMap?\"#define TANGENTSPACE_NORMALMAP\":\"\",n.clearcoatMap?\"#define USE_CLEARCOATMAP\":\"\",n.clearcoatRoughnessMap?\"#define USE_CLEARCOAT_ROUGHNESSMAP\":\"\",n.clearcoatNormalMap?\"#define USE_CLEARCOAT_NORMALMAP\":\"\",n.iridescenceMap?\"#define USE_IRIDESCENCEMAP\":\"\",n.iridescenceThicknessMap?\"#define USE_IRIDESCENCE_THICKNESSMAP\":\"\",n.displacementMap&&n.supportsVertexTextures?\"#define USE_DISPLACEMENTMAP\":\"\",n.specularMap?\"#define USE_SPECULARMAP\":\"\",n.specularIntensityMap?\"#define USE_SPECULARINTENSITYMAP\":\"\",n.specularColorMap?\"#define USE_SPECULARCOLORMAP\":\"\",n.roughnessMap?\"#define USE_ROUGHNESSMAP\":\"\",n.metalnessMap?\"#define USE_METALNESSMAP\":\"\",n.alphaMap?\"#define USE_ALPHAMAP\":\"\",n.transmission?\"#define USE_TRANSMISSION\":\"\",n.transmissionMap?\"#define USE_TRANSMISSIONMAP\":\"\",n.thicknessMap?\"#define USE_THICKNESSMAP\":\"\",n.sheenColorMap?\"#define USE_SHEENCOLORMAP\":\"\",n.sheenRoughnessMap?\"#define USE_SHEENROUGHNESSMAP\":\"\",n.vertexTangents?\"#define USE_TANGENT\":\"\",n.vertexColors?\"#define USE_COLOR\":\"\",n.vertexAlphas?\"#define USE_COLOR_ALPHA\":\"\",n.vertexUvs?\"#define USE_UV\":\"\",n.uvsVertexOnly?\"#define UVS_VERTEX_ONLY\":\"\",n.flatShading?\"#define FLAT_SHADED\":\"\",n.skinning?\"#define USE_SKINNING\":\"\",n.morphTargets?\"#define USE_MORPHTARGETS\":\"\",n.morphNormals&&!1===n.flatShading?\"#define USE_MORPHNORMALS\":\"\",n.morphColors&&n.isWebGL2?\"#define USE_MORPHCOLORS\":\"\",n.morphTargetsCount>0&&n.isWebGL2?\"#define MORPHTARGETS_TEXTURE\":\"\",n.morphTargetsCount>0&&n.isWebGL2?\"#define MORPHTARGETS_TEXTURE_STRIDE \"+n.morphTextureStride:\"\",n.morphTargetsCount>0&&n.isWebGL2?\"#define MORPHTARGETS_COUNT \"+n.morphTargetsCount:\"\",n.doubleSided?\"#define DOUBLE_SIDED\":\"\",n.flipSided?\"#define FLIP_SIDED\":\"\",n.shadowMapEnabled?\"#define USE_SHADOWMAP\":\"\",n.shadowMapEnabled?\"#define \"+l:\"\",n.sizeAttenuation?\"#define USE_SIZEATTENUATION\":\"\",n.logarithmicDepthBuffer?\"#define USE_LOGDEPTHBUF\":\"\",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?\"#define USE_LOGDEPTHBUF_EXT\":\"\",\"uniform mat4 modelMatrix;\",\"uniform mat4 modelViewMatrix;\",\"uniform mat4 projectionMatrix;\",\"uniform mat4 viewMatrix;\",\"uniform mat3 normalMatrix;\",\"uniform vec3 cameraPosition;\",\"uniform bool isOrthographic;\",\"#ifdef USE_INSTANCING\",\"\\tattribute mat4 instanceMatrix;\",\"#endif\",\"#ifdef USE_INSTANCING_COLOR\",\"\\tattribute vec3 instanceColor;\",\"#endif\",\"attribute vec3 position;\",\"attribute vec3 normal;\",\"attribute vec2 uv;\",\"#ifdef USE_TANGENT\",\"\\tattribute vec4 tangent;\",\"#endif\",\"#if defined( USE_COLOR_ALPHA )\",\"\\tattribute vec4 color;\",\"#elif defined( USE_COLOR )\",\"\\tattribute vec3 color;\",\"#endif\",\"#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )\",\"\\tattribute vec3 morphTarget0;\",\"\\tattribute vec3 morphTarget1;\",\"\\tattribute vec3 morphTarget2;\",\"\\tattribute vec3 morphTarget3;\",\"\\t#ifdef USE_MORPHNORMALS\",\"\\t\\tattribute vec3 morphNormal0;\",\"\\t\\tattribute vec3 morphNormal1;\",\"\\t\\tattribute vec3 morphNormal2;\",\"\\t\\tattribute vec3 morphNormal3;\",\"\\t#else\",\"\\t\\tattribute vec3 morphTarget4;\",\"\\t\\tattribute vec3 morphTarget5;\",\"\\t\\tattribute vec3 morphTarget6;\",\"\\t\\tattribute vec3 morphTarget7;\",\"\\t#endif\",\"#endif\",\"#ifdef USE_SKINNING\",\"\\tattribute vec4 skinIndex;\",\"\\tattribute vec4 skinWeight;\",\"#endif\",\"\\n\"].filter(ba).join(\"\\n\"),E=[m,Ta(n),\"#define SHADER_NAME \"+n.shaderName,g,n.useFog&&n.fog?\"#define USE_FOG\":\"\",n.useFog&&n.fogExp2?\"#define FOG_EXP2\":\"\",n.map?\"#define USE_MAP\":\"\",n.matcap?\"#define USE_MATCAP\":\"\",n.envMap?\"#define USE_ENVMAP\":\"\",n.envMap?\"#define \"+c:\"\",n.envMap?\"#define \"+h:\"\",n.envMap?\"#define \"+u:\"\",d?\"#define CUBEUV_TEXEL_WIDTH \"+d.texelWidth:\"\",d?\"#define CUBEUV_TEXEL_HEIGHT \"+d.texelHeight:\"\",d?\"#define CUBEUV_MAX_MIP \"+d.maxMip+\".0\":\"\",n.lightMap?\"#define USE_LIGHTMAP\":\"\",n.aoMap?\"#define USE_AOMAP\":\"\",n.emissiveMap?\"#define USE_EMISSIVEMAP\":\"\",n.bumpMap?\"#define USE_BUMPMAP\":\"\",n.normalMap?\"#define USE_NORMALMAP\":\"\",n.normalMap&&n.objectSpaceNormalMap?\"#define OBJECTSPACE_NORMALMAP\":\"\",n.normalMap&&n.tangentSpaceNormalMap?\"#define TANGENTSPACE_NORMALMAP\":\"\",n.clearcoat?\"#define USE_CLEARCOAT\":\"\",n.clearcoatMap?\"#define USE_CLEARCOATMAP\":\"\",n.clearcoatRoughnessMap?\"#define USE_CLEARCOAT_ROUGHNESSMAP\":\"\",n.clearcoatNormalMap?\"#define USE_CLEARCOAT_NORMALMAP\":\"\",n.iridescence?\"#define USE_IRIDESCENCE\":\"\",n.iridescenceMap?\"#define USE_IRIDESCENCEMAP\":\"\",n.iridescenceThicknessMap?\"#define USE_IRIDESCENCE_THICKNESSMAP\":\"\",n.specularMap?\"#define USE_SPECULARMAP\":\"\",n.specularIntensityMap?\"#define USE_SPECULARINTENSITYMAP\":\"\",n.specularColorMap?\"#define USE_SPECULARCOLORMAP\":\"\",n.roughnessMap?\"#define USE_ROUGHNESSMAP\":\"\",n.metalnessMap?\"#define USE_METALNESSMAP\":\"\",n.alphaMap?\"#define USE_ALPHAMAP\":\"\",n.alphaTest?\"#define USE_ALPHATEST\":\"\",n.sheen?\"#define USE_SHEEN\":\"\",n.sheenColorMap?\"#define USE_SHEENCOLORMAP\":\"\",n.sheenRoughnessMap?\"#define USE_SHEENROUGHNESSMAP\":\"\",n.transmission?\"#define USE_TRANSMISSION\":\"\",n.transmissionMap?\"#define USE_TRANSMISSIONMAP\":\"\",n.thicknessMap?\"#define USE_THICKNESSMAP\":\"\",n.decodeVideoTexture?\"#define DECODE_VIDEO_TEXTURE\":\"\",n.vertexTangents?\"#define USE_TANGENT\":\"\",n.vertexColors||n.instancingColor?\"#define USE_COLOR\":\"\",n.vertexAlphas?\"#define USE_COLOR_ALPHA\":\"\",n.vertexUvs?\"#define USE_UV\":\"\",n.uvsVertexOnly?\"#define UVS_VERTEX_ONLY\":\"\",n.gradientMap?\"#define USE_GRADIENTMAP\":\"\",n.flatShading?\"#define FLAT_SHADED\":\"\",n.doubleSided?\"#define DOUBLE_SIDED\":\"\",n.flipSided?\"#define FLIP_SIDED\":\"\",n.shadowMapEnabled?\"#define USE_SHADOWMAP\":\"\",n.shadowMapEnabled?\"#define \"+l:\"\",n.premultipliedAlpha?\"#define PREMULTIPLIED_ALPHA\":\"\",n.physicallyCorrectLights?\"#define PHYSICALLY_CORRECT_LIGHTS\":\"\",n.logarithmicDepthBuffer?\"#define USE_LOGDEPTHBUF\":\"\",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?\"#define USE_LOGDEPTHBUF_EXT\":\"\",\"uniform mat4 viewMatrix;\",\"uniform vec3 cameraPosition;\",\"uniform bool isOrthographic;\",n.toneMapping!==Z?\"#define TONE_MAPPING\":\"\",n.toneMapping!==Z?Rs.tonemapping_pars_fragment:\"\",n.toneMapping!==Z?Ea(\"toneMapping\",n.toneMapping):\"\",n.dithering?\"#define DITHERING\":\"\",n.opaque?\"#define OPAQUE\":\"\",Rs.encodings_pars_fragment,ya(\"linearToOutputTexel\",n.outputEncoding),n.useDepthPacking?\"#define DEPTH_PACKING \"+n.depthPacking:\"\",\"\\n\"].filter(ba).join(\"\\n\")),o=Ma(o),o=xa(o,n),o=wa(o,n),a=Ma(a),a=xa(a,n),a=wa(a,n),o=Ba(o),a=Ba(a),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(b=\"#version 300 es\\n\",y=[\"precision mediump sampler2DArray;\",\"#define attribute in\",\"#define varying out\",\"#define texture2D texture\"].join(\"\\n\")+\"\\n\"+y,E=[\"#define varying in\",n.glslVersion===An?\"\":\"layout(location = 0) out highp vec4 pc_fragColor;\",n.glslVersion===An?\"\":\"#define gl_FragColor pc_fragColor\",\"#define gl_FragDepthEXT gl_FragDepth\",\"#define texture2D texture\",\"#define textureCube texture\",\"#define texture2DProj textureProj\",\"#define texture2DLodEXT textureLod\",\"#define texture2DProjLodEXT textureProjLod\",\"#define textureCubeLodEXT textureLod\",\"#define texture2DGradEXT textureGrad\",\"#define texture2DProjGradEXT textureProjGrad\",\"#define textureCubeGradEXT textureGrad\"].join(\"\\n\")+\"\\n\"+E);const x=b+E+a,w=ma(r,35633,b+y+o),C=ma(r,35632,x);if(r.attachShader(v,w),r.attachShader(v,C),void 0!==n.index0AttributeName?r.bindAttribLocation(v,0,n.index0AttributeName):!0===n.morphTargets&&r.bindAttribLocation(v,0,\"position\"),r.linkProgram(v),e.debug.checkShaderErrors){const e=r.getProgramInfoLog(v).trim(),t=r.getShaderInfoLog(w).trim(),n=r.getShaderInfoLog(C).trim();let i=!0,s=!0;if(!1===r.getProgramParameter(v,35714)){i=!1;const t=va(r,w,\"vertex\"),n=va(r,C,\"fragment\");console.error(\"THREE.WebGLProgram: Shader Error \"+r.getError()+\" - VALIDATE_STATUS \"+r.getProgramParameter(v,35715)+\"\\n\\nProgram Info Log: \"+e+\"\\n\"+t+\"\\n\"+n)}else\"\"!==e?console.warn(\"THREE.WebGLProgram: Program Info Log:\",e):\"\"!==t&&\"\"!==n||(s=!1);s&&(this.diagnostics={runnable:i,programLog:e,vertexShader:{log:t,prefix:y},fragmentShader:{log:n,prefix:E}})}let M,_;return r.deleteShader(w),r.deleteShader(C),this.getUniforms=function(){return void 0===M&&(M=new fa(r,v)),M},this.getAttributes=function(){return void 0===_&&(_=function(e,t){const n={},i=e.getProgramParameter(t,35721);for(let r=0;r\u003Ci;r++){const i=e.getActiveAttrib(t,r),s=i.name;let o=1;35674===i.type&&(o=2),35675===i.type&&(o=3),35676===i.type&&(o=4),n[s]={type:i.type,location:e.getAttribLocation(t,s),locationSize:o}}return n}(r,v)),_},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(v),this.program=void 0},this.name=n.shaderName,this.id=ga++,this.cacheKey=t,this.usedTimes=1,this.program=v,this.vertexShader=w,this.fragmentShader=C,this}let Da=0;class Ra{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,i=this._getShaderStage(t),r=this._getShaderStage(n),s=this._getShaderCacheForMaterial(e);return!1===s.has(i)&&(s.add(i),i.usedTimes++),!1===s.has(r)&&(s.add(r),r.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const e of t)e.usedTimes--,0===e.usedTimes&&this.shaderCache.delete(e.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return void 0===n&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return void 0===n&&(n=new Pa(e),t.set(e,n)),n}}class Pa{constructor(e){this.id=Da++,this.code=e,this.usedTimes=0}}function ka(e,t,n,i,r,s,o){const a=new Ji,l=new Ra,c=[],h=r.isWebGL2,u=r.logarithmicDepthBuffer,d=r.vertexTextures;let p=r.precision;const A={MeshDepthMaterial:\"depth\",MeshDistanceMaterial:\"distanceRGBA\",MeshNormalMaterial:\"normal\",MeshBasicMaterial:\"basic\",MeshLambertMaterial:\"lambert\",MeshPhongMaterial:\"phong\",MeshToonMaterial:\"toon\",MeshStandardMaterial:\"physical\",MeshPhysicalMaterial:\"physical\",MeshMatcapMaterial:\"matcap\",LineBasicMaterial:\"basic\",LineDashedMaterial:\"dashed\",PointsMaterial:\"points\",ShadowMaterial:\"shadow\",SpriteMaterial:\"sprite\"};return{getParameters:function(s,a,c,f,m){const y=f.fog,b=m.geometry,x=s.isMeshStandardMaterial?f.environment:null,w=(s.isMeshStandardMaterial?n:t).get(s.envMap||x),C=w&&w.mapping===ce?w.image.height:null,M=A[s.type];null!==s.precision&&(p=r.getMaxPrecision(s.precision),p!==s.precision&&console.warn(\"THREE.WebGLProgram.getParameters:\",s.precision,\"not supported, using\",p,\"instead.\"));const _=b.morphAttributes.position||b.morphAttributes.normal||b.morphAttributes.color,I=void 0!==_?_.length:0;let B,S,T,L,D=0;if(void 0!==b.morphAttributes.position&&(D=1),void 0!==b.morphAttributes.normal&&(D=2),void 0!==b.morphAttributes.color&&(D=3),M){const e=ks[M];B=e.vertexShader,S=e.fragmentShader}else B=s.vertexShader,S=s.fragmentShader,l.update(s),T=l.getVertexShaderID(s),L=l.getFragmentShaderID(s);const R=e.getRenderTarget(),P=s.alphaTest>0,k=s.clearcoat>0,F=s.iridescence>0;return{isWebGL2:h,shaderID:M,shaderName:s.type,vertexShader:B,fragmentShader:S,defines:s.defines,customVertexShaderID:T,customFragmentShaderID:L,isRawShaderMaterial:!0===s.isRawShaderMaterial,glslVersion:s.glslVersion,precision:p,instancing:!0===m.isInstancedMesh,instancingColor:!0===m.isInstancedMesh&&null!==m.instanceColor,supportsVertexTextures:d,outputEncoding:null===R?e.outputEncoding:!0===R.isXRRenderTarget?R.texture.encoding:Dt,map:!!s.map,matcap:!!s.matcap,envMap:!!w,envMapMode:w&&w.mapping,envMapCubeUVHeight:C,lightMap:!!s.lightMap,aoMap:!!s.aoMap,emissiveMap:!!s.emissiveMap,bumpMap:!!s.bumpMap,normalMap:!!s.normalMap,objectSpaceNormalMap:s.normalMapType===Ot,tangentSpaceNormalMap:s.normalMapType===Ft,decodeVideoTexture:!!s.map&&!0===s.map.isVideoTexture&&s.map.encoding===Rt,clearcoat:k,clearcoatMap:k&&!!s.clearcoatMap,clearcoatRoughnessMap:k&&!!s.clearcoatRoughnessMap,clearcoatNormalMap:k&&!!s.clearcoatNormalMap,iridescence:F,iridescenceMap:F&&!!s.iridescenceMap,iridescenceThicknessMap:F&&!!s.iridescenceThicknessMap,displacementMap:!!s.displacementMap,roughnessMap:!!s.roughnessMap,metalnessMap:!!s.metalnessMap,specularMap:!!s.specularMap,specularIntensityMap:!!s.specularIntensityMap,specularColorMap:!!s.specularColorMap,opaque:!1===s.transparent&&s.blending===E,alphaMap:!!s.alphaMap,alphaTest:P,gradientMap:!!s.gradientMap,sheen:s.sheen>0,sheenColorMap:!!s.sheenColorMap,sheenRoughnessMap:!!s.sheenRoughnessMap,transmission:s.transmission>0,transmissionMap:!!s.transmissionMap,thicknessMap:!!s.thicknessMap,combine:s.combine,vertexTangents:!!s.normalMap&&!!b.attributes.tangent,vertexColors:s.vertexColors,vertexAlphas:!0===s.vertexColors&&!!b.attributes.color&&4===b.attributes.color.itemSize,vertexUvs:!!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatMap||s.clearcoatRoughnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.displacementMap||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheenColorMap||s.sheenRoughnessMap),uvsVertexOnly:!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.transmission>0||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheen>0||s.sheenColorMap||s.sheenRoughnessMap||!s.displacementMap),fog:!!y,useFog:!0===s.fog,fogExp2:y&&y.isFogExp2,flatShading:!!s.flatShading,sizeAttenuation:s.sizeAttenuation,logarithmicDepthBuffer:u,skinning:!0===m.isSkinnedMesh,morphTargets:void 0!==b.morphAttributes.position,morphNormals:void 0!==b.morphAttributes.normal,morphColors:void 0!==b.morphAttributes.color,morphTargetsCount:I,morphTextureStride:D,numDirLights:a.directional.length,numPointLights:a.point.length,numSpotLights:a.spot.length,numSpotLightMaps:a.spotLightMap.length,numRectAreaLights:a.rectArea.length,numHemiLights:a.hemi.length,numDirLightShadows:a.directionalShadowMap.length,numPointLightShadows:a.pointShadowMap.length,numSpotLightShadows:a.spotShadowMap.length,numSpotLightShadowsWithMaps:a.numSpotLightShadowsWithMaps,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:s.dithering,shadowMapEnabled:e.shadowMap.enabled&&c.length>0,shadowMapType:e.shadowMap.type,toneMapping:s.toneMapped?e.toneMapping:Z,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:s.premultipliedAlpha,doubleSided:s.side===v,flipSided:s.side===g,useDepthPacking:!!s.depthPacking,depthPacking:s.depthPacking||0,index0AttributeName:s.index0AttributeName,extensionDerivatives:s.extensions&&s.extensions.derivatives,extensionFragDepth:s.extensions&&s.extensions.fragDepth,extensionDrawBuffers:s.extensions&&s.extensions.drawBuffers,extensionShaderTextureLOD:s.extensions&&s.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||i.has(\"EXT_frag_depth\"),rendererExtensionDrawBuffers:h||i.has(\"WEBGL_draw_buffers\"),rendererExtensionShaderTextureLod:h||i.has(\"EXT_shader_texture_lod\"),customProgramCacheKey:s.customProgramCacheKey()}},getProgramCacheKey:function(t){const n=[];if(t.shaderID?n.push(t.shaderID):(n.push(t.customVertexShaderID),n.push(t.customFragmentShaderID)),void 0!==t.defines)for(const e in t.defines)n.push(e),n.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(function(e,t){e.push(t.precision),e.push(t.outputEncoding),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.combine),e.push(t.vertexUvs),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}(n,t),function(e,t){a.disableAll(),t.isWebGL2&&a.enable(0),t.supportsVertexTextures&&a.enable(1),t.instancing&&a.enable(2),t.instancingColor&&a.enable(3),t.map&&a.enable(4),t.matcap&&a.enable(5),t.envMap&&a.enable(6),t.lightMap&&a.enable(7),t.aoMap&&a.enable(8),t.emissiveMap&&a.enable(9),t.bumpMap&&a.enable(10),t.normalMap&&a.enable(11),t.objectSpaceNormalMap&&a.enable(12),t.tangentSpaceNormalMap&&a.enable(13),t.clearcoat&&a.enable(14),t.clearcoatMap&&a.enable(15),t.clearcoatRoughnessMap&&a.enable(16),t.clearcoatNormalMap&&a.enable(17),t.iridescence&&a.enable(18),t.iridescenceMap&&a.enable(19),t.iridescenceThicknessMap&&a.enable(20),t.displacementMap&&a.enable(21),t.specularMap&&a.enable(22),t.roughnessMap&&a.enable(23),t.metalnessMap&&a.enable(24),t.gradientMap&&a.enable(25),t.alphaMap&&a.enable(26),t.alphaTest&&a.enable(27),t.vertexColors&&a.enable(28),t.vertexAlphas&&a.enable(29),t.vertexUvs&&a.enable(30),t.vertexTangents&&a.enable(31),t.uvsVertexOnly&&a.enable(32),e.push(a.mask),a.disableAll(),t.fog&&a.enable(0),t.useFog&&a.enable(1),t.flatShading&&a.enable(2),t.logarithmicDepthBuffer&&a.enable(3),t.skinning&&a.enable(4),t.morphTargets&&a.enable(5),t.morphNormals&&a.enable(6),t.morphColors&&a.enable(7),t.premultipliedAlpha&&a.enable(8),t.shadowMapEnabled&&a.enable(9),t.physicallyCorrectLights&&a.enable(10),t.doubleSided&&a.enable(11),t.flipSided&&a.enable(12),t.useDepthPacking&&a.enable(13),t.dithering&&a.enable(14),t.specularIntensityMap&&a.enable(15),t.specularColorMap&&a.enable(16),t.transmission&&a.enable(17),t.transmissionMap&&a.enable(18),t.thicknessMap&&a.enable(19),t.sheen&&a.enable(20),t.sheenColorMap&&a.enable(21),t.sheenRoughnessMap&&a.enable(22),t.decodeVideoTexture&&a.enable(23),t.opaque&&a.enable(24),e.push(a.mask)}(n,t),n.push(e.outputEncoding)),n.push(t.customProgramCacheKey),n.join()},getUniforms:function(e){const t=A[e.type];let n;if(t){const e=ks[t];n=fs.clone(e.uniforms)}else n=e.uniforms;return n},acquireProgram:function(t,n){let i;for(let e=0,t=c.length;e\u003Ct;e++){const t=c[e];if(t.cacheKey===n){i=t,++i.usedTimes;break}}return void 0===i&&(i=new La(e,n,t,s),c.push(i)),i},releaseProgram:function(e){if(0==--e.usedTimes){const t=c.indexOf(e);c[t]=c[c.length-1],c.pop(),e.destroy()}},releaseShaderCache:function(e){l.remove(e)},programs:c,dispose:function(){l.dispose()}}}function Fa(){let e=new WeakMap;return{get:function(t){let n=e.get(t);return void 0===n&&(n={},e.set(t,n)),n},remove:function(t){e.delete(t)},update:function(t,n,i){e.get(t)[n]=i},dispose:function(){e=new WeakMap}}}function Oa(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function Qa(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function Ua(){const e=[];let t=0;const n=[],i=[],r=[];function s(n,i,r,s,o,a){let l=e[t];return void 0===l?(l={id:n.id,object:n,geometry:i,material:r,groupOrder:s,renderOrder:n.renderOrder,z:o,group:a},e[t]=l):(l.id=n.id,l.object=n,l.geometry=i,l.material=r,l.groupOrder=s,l.renderOrder=n.renderOrder,l.z=o,l.group=a),t++,l}return{opaque:n,transmissive:i,transparent:r,init:function(){t=0,n.length=0,i.length=0,r.length=0},push:function(e,t,o,a,l,c){const h=s(e,t,o,a,l,c);o.transmission>0?i.push(h):!0===o.transparent?r.push(h):n.push(h)},unshift:function(e,t,o,a,l,c){const h=s(e,t,o,a,l,c);o.transmission>0?i.unshift(h):!0===o.transparent?r.unshift(h):n.unshift(h)},finish:function(){for(let n=t,i=e.length;n\u003Ci;n++){const t=e[n];if(null===t.id)break;t.id=null,t.object=null,t.geometry=null,t.material=null,t.group=null}},sort:function(e,t){n.length>1&&n.sort(e||Oa),i.length>1&&i.sort(t||Qa),r.length>1&&r.sort(t||Qa)}}}function Na(){let e=new WeakMap;return{get:function(t,n){const i=e.get(t);let r;return void 0===i?(r=new Ua,e.set(t,[r])):n>=i.length?(r=new Ua,i.push(r)):r=i[n],r},dispose:function(){e=new WeakMap}}}function Ga(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let n;switch(t.type){case\"DirectionalLight\":n={direction:new ci,color:new Yn};break;case\"SpotLight\":n={position:new ci,direction:new ci,color:new Yn,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case\"PointLight\":n={position:new ci,color:new Yn,distance:0,decay:0};break;case\"HemisphereLight\":n={direction:new ci,skyColor:new Yn,groundColor:new Yn};break;case\"RectAreaLight\":n={color:new Yn,position:new ci,halfWidth:new ci,halfHeight:new ci}}return e[t.id]=n,n}}}let za=0;function Ha(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+(t.map?1:0)-(e.map?1:0)}function Va(e,t){const n=new Ga,i=function(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let n;switch(t.type){case\"DirectionalLight\":case\"SpotLight\":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ln};break;case\"PointLight\":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ln,shadowCameraNear:1,shadowCameraFar:1e3}}return e[t.id]=n,n}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let e=0;e\u003C9;e++)r.probe.push(new ci);const s=new ci,o=new Ui,a=new Ui;return{setup:function(s,o){let a=0,l=0,c=0;for(let e=0;e\u003C9;e++)r.probe[e].set(0,0,0);let h=0,u=0,d=0,p=0,A=0,f=0,m=0,g=0,v=0,y=0;s.sort(Ha);const E=!0!==o?Math.PI:1;for(let e=0,t=s.length;e\u003Ct;e++){const t=s[e],o=t.color,b=t.intensity,x=t.distance,w=t.shadow&&t.shadow.map?t.shadow.map.texture:null;if(t.isAmbientLight)a+=o.r*b*E,l+=o.g*b*E,c+=o.b*b*E;else if(t.isLightProbe)for(let e=0;e\u003C9;e++)r.probe[e].addScaledVector(t.sh.coefficients[e],b);else if(t.isDirectionalLight){const e=n.get(t);if(e.color.copy(t.color).multiplyScalar(t.intensity*E),t.castShadow){const e=t.shadow,n=i.get(t);n.shadowBias=e.bias,n.shadowNormalBias=e.normalBias,n.shadowRadius=e.radius,n.shadowMapSize=e.mapSize,r.directionalShadow[h]=n,r.directionalShadowMap[h]=w,r.directionalShadowMatrix[h]=t.shadow.matrix,f++}r.directional[h]=e,h++}else if(t.isSpotLight){const e=n.get(t);e.position.setFromMatrixPosition(t.matrixWorld),e.color.copy(o).multiplyScalar(b*E),e.distance=x,e.coneCos=Math.cos(t.angle),e.penumbraCos=Math.cos(t.angle*(1-t.penumbra)),e.decay=t.decay,r.spot[d]=e;const s=t.shadow;if(t.map&&(r.spotLightMap[v]=t.map,v++,s.updateMatrices(t),t.castShadow&&y++),r.spotLightMatrix[d]=s.matrix,t.castShadow){const e=i.get(t);e.shadowBias=s.bias,e.shadowNormalBias=s.normalBias,e.shadowRadius=s.radius,e.shadowMapSize=s.mapSize,r.spotShadow[d]=e,r.spotShadowMap[d]=w,g++}d++}else if(t.isRectAreaLight){const e=n.get(t);e.color.copy(o).multiplyScalar(b),e.halfWidth.set(.5*t.width,0,0),e.halfHeight.set(0,.5*t.height,0),r.rectArea[p]=e,p++}else if(t.isPointLight){const e=n.get(t);if(e.color.copy(t.color).multiplyScalar(t.intensity*E),e.distance=t.distance,e.decay=t.decay,t.castShadow){const e=t.shadow,n=i.get(t);n.shadowBias=e.bias,n.shadowNormalBias=e.normalBias,n.shadowRadius=e.radius,n.shadowMapSize=e.mapSize,n.shadowCameraNear=e.camera.near,n.shadowCameraFar=e.camera.far,r.pointShadow[u]=n,r.pointShadowMap[u]=w,r.pointShadowMatrix[u]=t.shadow.matrix,m++}r.point[u]=e,u++}else if(t.isHemisphereLight){const e=n.get(t);e.skyColor.copy(t.color).multiplyScalar(b*E),e.groundColor.copy(t.groundColor).multiplyScalar(b*E),r.hemi[A]=e,A++}}p>0&&(t.isWebGL2||!0===e.has(\"OES_texture_float_linear\")?(r.rectAreaLTC1=Ps.LTC_FLOAT_1,r.rectAreaLTC2=Ps.LTC_FLOAT_2):!0===e.has(\"OES_texture_half_float_linear\")?(r.rectAreaLTC1=Ps.LTC_HALF_1,r.rectAreaLTC2=Ps.LTC_HALF_2):console.error(\"THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.\")),r.ambient[0]=a,r.ambient[1]=l,r.ambient[2]=c;const b=r.hash;b.directionalLength===h&&b.pointLength===u&&b.spotLength===d&&b.rectAreaLength===p&&b.hemiLength===A&&b.numDirectionalShadows===f&&b.numPointShadows===m&&b.numSpotShadows===g&&b.numSpotMaps===v||(r.directional.length=h,r.spot.length=d,r.rectArea.length=p,r.point.length=u,r.hemi.length=A,r.directionalShadow.length=f,r.directionalShadowMap.length=f,r.pointShadow.length=m,r.pointShadowMap.length=m,r.spotShadow.length=g,r.spotShadowMap.length=g,r.directionalShadowMatrix.length=f,r.pointShadowMatrix.length=m,r.spotLightMatrix.length=g+v-y,r.spotLightMap.length=v,r.numSpotLightShadowsWithMaps=y,b.directionalLength=h,b.pointLength=u,b.spotLength=d,b.rectAreaLength=p,b.hemiLength=A,b.numDirectionalShadows=f,b.numPointShadows=m,b.numSpotShadows=g,b.numSpotMaps=v,r.version=za++)},setupView:function(e,t){let n=0,i=0,l=0,c=0,h=0;const u=t.matrixWorldInverse;for(let t=0,d=e.length;t\u003Cd;t++){const d=e[t];if(d.isDirectionalLight){const e=r.directional[n];e.direction.setFromMatrixPosition(d.matrixWorld),s.setFromMatrixPosition(d.target.matrixWorld),e.direction.sub(s),e.direction.transformDirection(u),n++}else if(d.isSpotLight){const e=r.spot[l];e.position.setFromMatrixPosition(d.matrixWorld),e.position.applyMatrix4(u),e.direction.setFromMatrixPosition(d.matrixWorld),s.setFromMatrixPosition(d.target.matrixWorld),e.direction.sub(s),e.direction.transformDirection(u),l++}else if(d.isRectAreaLight){const e=r.rectArea[c];e.position.setFromMatrixPosition(d.matrixWorld),e.position.applyMatrix4(u),a.identity(),o.copy(d.matrixWorld),o.premultiply(u),a.extractRotation(o),e.halfWidth.set(.5*d.width,0,0),e.halfHeight.set(0,.5*d.height,0),e.halfWidth.applyMatrix4(a),e.halfHeight.applyMatrix4(a),c++}else if(d.isPointLight){const e=r.point[i];e.position.setFromMatrixPosition(d.matrixWorld),e.position.applyMatrix4(u),i++}else if(d.isHemisphereLight){const e=r.hemi[h];e.direction.setFromMatrixPosition(d.matrixWorld),e.direction.transformDirection(u),h++}}},state:r}}function Wa(e,t){const n=new Va(e,t),i=[],r=[];return{init:function(){i.length=0,r.length=0},state:{lightsArray:i,shadowsArray:r,lights:n},setupLights:function(e){n.setup(i,e)},setupLightsView:function(e){n.setupView(i,e)},pushLight:function(e){i.push(e)},pushShadow:function(e){r.push(e)}}}function ja(e,t){let n=new WeakMap;return{get:function(i,r=0){const s=n.get(i);let o;return void 0===s?(o=new Wa(e,t),n.set(i,[o])):r>=s.length?(o=new Wa(e,t),s.push(o)):o=s[r],o},dispose:function(){n=new WeakMap}}}class qa extends wr{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type=\"MeshDepthMaterial\",this.depthPacking=Pt,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class Ya extends wr{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type=\"MeshDistanceMaterial\",this.referencePosition=new ci,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}function Xa(e,t,n){let i=new Ss;const r=new Ln,s=new Ln,o=new ti,a=new qa({depthPacking:kt}),l=new Ya,c={},h=n.maxTextureSize,u={0:g,1:m,2:v},d=new ms({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ln},radius:{value:4}},vertexShader:\"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\",fragmentShader:\"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \u003Cpacking>\\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples \u003C= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples \u003C= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i \u003C samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\"}),A=d.clone();A.defines.HORIZONTAL_PASS=1;const E=new Wr;E.setAttribute(\"position\",new Ir(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const b=new cs(E,d),x=this;function w(n,i){const s=t.update(b);d.defines.VSM_SAMPLES!==n.blurSamples&&(d.defines.VSM_SAMPLES=n.blurSamples,A.defines.VSM_SAMPLES=n.blurSamples,d.needsUpdate=!0,A.needsUpdate=!0),null===n.mapPass&&(n.mapPass=new ni(r.x,r.y)),d.uniforms.shadow_pass.value=n.map.texture,d.uniforms.resolution.value=n.mapSize,d.uniforms.radius.value=n.radius,e.setRenderTarget(n.mapPass),e.clear(),e.renderBufferDirect(i,null,s,d,b,null),A.uniforms.shadow_pass.value=n.mapPass.texture,A.uniforms.resolution.value=n.mapSize,A.uniforms.radius.value=n.radius,e.setRenderTarget(n.map),e.clear(),e.renderBufferDirect(i,null,s,A,b,null)}function C(t,n,i,r,s,o){let h=null;const d=!0===i.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(h=void 0!==d?d:!0===i.isPointLight?l:a,e.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){const e=h.uuid,t=n.uuid;let i=c[e];void 0===i&&(i={},c[e]=i);let r=i[t];void 0===r&&(r=h.clone(),i[t]=r),h=r}return h.visible=n.visible,h.wireframe=n.wireframe,h.side=o===f?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:u[n.side],h.alphaMap=n.alphaMap,h.alphaTest=n.alphaTest,h.map=n.map,h.clipShadows=n.clipShadows,h.clippingPlanes=n.clippingPlanes,h.clipIntersection=n.clipIntersection,h.displacementMap=n.displacementMap,h.displacementScale=n.displacementScale,h.displacementBias=n.displacementBias,h.wireframeLinewidth=n.wireframeLinewidth,h.linewidth=n.linewidth,!0===i.isPointLight&&!0===h.isMeshDistanceMaterial&&(h.referencePosition.setFromMatrixPosition(i.matrixWorld),h.nearDistance=r,h.farDistance=s),h}function M(n,r,s,o,a){if(!1===n.visible)return;if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&a===f)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,n.matrixWorld);const i=t.update(n),r=n.material;if(Array.isArray(r)){const t=i.groups;for(let l=0,c=t.length;l\u003Cc;l++){const c=t[l],h=r[c.materialIndex];if(h&&h.visible){const t=C(n,h,o,s.near,s.far,a);e.renderBufferDirect(s,null,i,t,n,c)}}}else if(r.visible){const t=C(n,r,o,s.near,s.far,a);e.renderBufferDirect(s,null,i,t,n,null)}}const l=n.children;for(let e=0,t=l.length;e\u003Ct;e++)M(l[e],r,s,o,a)}this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=p,this.render=function(t,n,a){if(!1===x.enabled)return;if(!1===x.autoUpdate&&!1===x.needsUpdate)return;if(0===t.length)return;const l=e.getRenderTarget(),c=e.getActiveCubeFace(),u=e.getActiveMipmapLevel(),d=e.state;d.setBlending(y),d.buffers.color.setClear(1,1,1,1),d.buffers.depth.setTest(!0),d.setScissorTest(!1);for(let l=0,c=t.length;l\u003Cc;l++){const c=t[l],u=c.shadow;if(void 0===u){console.warn(\"THREE.WebGLShadowMap:\",c,\"has no shadow.\");continue}if(!1===u.autoUpdate&&!1===u.needsUpdate)continue;r.copy(u.mapSize);const p=u.getFrameExtents();if(r.multiply(p),s.copy(u.mapSize),(r.x>h||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/p.x),r.x=s.x*p.x,u.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/p.y),r.y=s.y*p.y,u.mapSize.y=s.y)),null===u.map){const e=this.type!==f?{minFilter:pe,magFilter:pe}:{};u.map=new ni(r.x,r.y,e),u.map.texture.name=c.name+\".shadowMap\",u.camera.updateProjectionMatrix()}e.setRenderTarget(u.map),e.clear();const A=u.getViewportCount();for(let e=0;e\u003CA;e++){const t=u.getViewport(e);o.set(s.x*t.x,s.y*t.y,s.x*t.z,s.y*t.w),d.viewport(o),u.updateMatrices(c,e),i=u.getFrustum(),M(n,a,u.camera,c,this.type)}!0!==u.isPointLightShadow&&this.type===f&&w(u,a),u.needsUpdate=!1}x.needsUpdate=!1,e.setRenderTarget(l,c,u)}}function Ja(e,t,n){const i=n.isWebGL2,r=new function(){let t=!1;const n=new ti;let i=null;const r=new ti(0,0,0,0);return{setMask:function(n){i===n||t||(e.colorMask(n,n,n,n),i=n)},setLocked:function(e){t=e},setClear:function(t,i,s,o,a){!0===a&&(t*=o,i*=o,s*=o),n.set(t,i,s,o),!1===r.equals(n)&&(e.clearColor(t,i,s,o),r.copy(n))},reset:function(){t=!1,i=null,r.set(-1,0,0,0)}}},s=new function(){let t=!1,n=null,i=null,r=null;return{setTest:function(e){e?be(2929):xe(2929)},setMask:function(i){n===i||t||(e.depthMask(i),n=i)},setFunc:function(t){if(i!==t){switch(t){case G:e.depthFunc(512);break;case z:e.depthFunc(519);break;case H:e.depthFunc(513);break;case V:e.depthFunc(515);break;case W:e.depthFunc(514);break;case j:e.depthFunc(518);break;case q:e.depthFunc(516);break;case Y:e.depthFunc(517);break;default:e.depthFunc(515)}i=t}},setLocked:function(e){t=e},setClear:function(t){r!==t&&(e.clearDepth(t),r=t)},reset:function(){t=!1,n=null,i=null,r=null}}},o=new function(){let t=!1,n=null,i=null,r=null,s=null,o=null,a=null,l=null,c=null;return{setTest:function(e){t||(e?be(2960):xe(2960))},setMask:function(i){n===i||t||(e.stencilMask(i),n=i)},setFunc:function(t,n,o){i===t&&r===n&&s===o||(e.stencilFunc(t,n,o),i=t,r=n,s=o)},setOp:function(t,n,i){o===t&&a===n&&l===i||(e.stencilOp(t,n,i),o=t,a=n,l=i)},setLocked:function(e){t=e},setClear:function(t){c!==t&&(e.clearStencil(t),c=t)},reset:function(){t=!1,n=null,i=null,r=null,s=null,o=null,a=null,l=null,c=null}}},a=new WeakMap,u=new WeakMap;let d={},p={},A=new WeakMap,f=[],m=null,X=!1,J=null,K=null,Z=null,$=null,ee=null,te=null,ne=null,ie=!1,re=null,se=null,oe=null,ae=null,le=null;const ce=e.getParameter(35661);let he=!1,ue=0;const de=e.getParameter(7938);-1!==de.indexOf(\"WebGL\")?(ue=parseFloat(/^WebGL (\\d)/.exec(de)[1]),he=ue>=1):-1!==de.indexOf(\"OpenGL ES\")&&(ue=parseFloat(/^OpenGL ES (\\d)/.exec(de)[1]),he=ue>=2);let pe=null,Ae={};const fe=e.getParameter(3088),me=e.getParameter(2978),ge=(new ti).fromArray(fe),ve=(new ti).fromArray(me);function ye(t,n,i){const r=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,10241,9728),e.texParameteri(t,10240,9728);for(let t=0;t\u003Ci;t++)e.texImage2D(n+t,0,6408,1,1,0,6408,5121,r);return s}const Ee={};function be(t){!0!==d[t]&&(e.enable(t),d[t]=!0)}function xe(t){!1!==d[t]&&(e.disable(t),d[t]=!1)}Ee[3553]=ye(3553,3553,1),Ee[34067]=ye(34067,34069,6),r.setClear(0,0,0,1),s.setClear(1),o.setClear(0),be(2929),s.setFunc(V),_e(!1),Ie(c),be(2884),Me(y);const we={[M]:32774,[_]:32778,[I]:32779};if(i)we[B]=32775,we[S]=32776;else{const e=t.get(\"EXT_blend_minmax\");null!==e&&(we[B]=e.MIN_EXT,we[S]=e.MAX_EXT)}const Ce={[T]:0,[L]:1,[D]:768,[P]:770,[N]:776,[Q]:774,[F]:772,[R]:769,[k]:771,[U]:775,[O]:773};function Me(t,n,i,r,s,o,a,l){if(t!==y){if(!1===X&&(be(3042),X=!0),t===C)s=s||n,o=o||i,a=a||r,n===K&&s===ee||(e.blendEquationSeparate(we[n],we[s]),K=n,ee=s),i===Z&&r===$&&o===te&&a===ne||(e.blendFuncSeparate(Ce[i],Ce[r],Ce[o],Ce[a]),Z=i,$=r,te=o,ne=a),J=t,ie=!1;else if(t!==J||l!==ie){if(K===M&&ee===M||(e.blendEquation(32774),K=M,ee=M),l)switch(t){case E:e.blendFuncSeparate(1,771,1,771);break;case b:e.blendFunc(1,1);break;case x:e.blendFuncSeparate(0,769,0,1);break;case w:e.blendFuncSeparate(0,768,0,770);break;default:console.error(\"THREE.WebGLState: Invalid blending: \",t)}else switch(t){case E:e.blendFuncSeparate(770,771,1,771);break;case b:e.blendFunc(770,1);break;case x:e.blendFuncSeparate(0,769,0,1);break;case w:e.blendFunc(0,768);break;default:console.error(\"THREE.WebGLState: Invalid blending: \",t)}Z=null,$=null,te=null,ne=null,J=t,ie=l}}else!0===X&&(xe(3042),X=!1)}function _e(t){re!==t&&(t?e.frontFace(2304):e.frontFace(2305),re=t)}function Ie(t){t!==l?(be(2884),t!==se&&(t===c?e.cullFace(1029):t===h?e.cullFace(1028):e.cullFace(1032))):xe(2884),se=t}function Be(t,n,i){t?(be(32823),ae===n&&le===i||(e.polygonOffset(n,i),ae=n,le=i)):xe(32823)}return{buffers:{color:r,depth:s,stencil:o},enable:be,disable:xe,bindFramebuffer:function(t,n){return p[t]!==n&&(e.bindFramebuffer(t,n),p[t]=n,i&&(36009===t&&(p[36160]=n),36160===t&&(p[36009]=n)),!0)},drawBuffers:function(i,r){let s=f,o=!1;if(i)if(s=A.get(r),void 0===s&&(s=[],A.set(r,s)),i.isWebGLMultipleRenderTargets){const e=i.texture;if(s.length!==e.length||36064!==s[0]){for(let t=0,n=e.length;t\u003Cn;t++)s[t]=36064+t;s.length=e.length,o=!0}}else 36064!==s[0]&&(s[0]=36064,o=!0);else 1029!==s[0]&&(s[0]=1029,o=!0);o&&(n.isWebGL2?e.drawBuffers(s):t.get(\"WEBGL_draw_buffers\").drawBuffersWEBGL(s))},useProgram:function(t){return m!==t&&(e.useProgram(t),m=t,!0)},setBlending:Me,setMaterial:function(e,t){e.side===v?xe(2884):be(2884);let n=e.side===g;t&&(n=!n),_e(n),e.blending===E&&!1===e.transparent?Me(y):Me(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha,e.premultipliedAlpha),s.setFunc(e.depthFunc),s.setTest(e.depthTest),s.setMask(e.depthWrite),r.setMask(e.colorWrite);const i=e.stencilWrite;o.setTest(i),i&&(o.setMask(e.stencilWriteMask),o.setFunc(e.stencilFunc,e.stencilRef,e.stencilFuncMask),o.setOp(e.stencilFail,e.stencilZFail,e.stencilZPass)),Be(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits),!0===e.alphaToCoverage?be(32926):xe(32926)},setFlipSided:_e,setCullFace:Ie,setLineWidth:function(t){t!==oe&&(he&&e.lineWidth(t),oe=t)},setPolygonOffset:Be,setScissorTest:function(e){e?be(3089):xe(3089)},activeTexture:function(t){void 0===t&&(t=33984+ce-1),pe!==t&&(e.activeTexture(t),pe=t)},bindTexture:function(t,n,i){void 0===i&&(i=null===pe?33984+ce-1:pe);let r=Ae[i];void 0===r&&(r={type:void 0,texture:void 0},Ae[i]=r),r.type===t&&r.texture===n||(pe!==i&&(e.activeTexture(i),pe=i),e.bindTexture(t,n||Ee[t]),r.type=t,r.texture=n)},unbindTexture:function(){const t=Ae[pe];void 0!==t&&void 0!==t.type&&(e.bindTexture(t.type,null),t.type=void 0,t.texture=void 0)},compressedTexImage2D:function(){try{e.compressedTexImage2D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},compressedTexImage3D:function(){try{e.compressedTexImage3D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},texImage2D:function(){try{e.texImage2D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},texImage3D:function(){try{e.texImage3D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},updateUBOMapping:function(t,n){let i=u.get(n);void 0===i&&(i=new WeakMap,u.set(n,i));let r=i.get(t);void 0===r&&(r=e.getUniformBlockIndex(n,t.name),i.set(t,r))},uniformBlockBinding:function(t,n){const i=u.get(n).get(t);a.get(t)!==i&&(e.uniformBlockBinding(n,i,t.__bindingPointIndex),a.set(t,i))},texStorage2D:function(){try{e.texStorage2D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},texStorage3D:function(){try{e.texStorage3D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},texSubImage2D:function(){try{e.texSubImage2D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},texSubImage3D:function(){try{e.texSubImage3D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},compressedTexSubImage2D:function(){try{e.compressedTexSubImage2D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},compressedTexSubImage3D:function(){try{e.compressedTexSubImage3D.apply(e,arguments)}catch(e){console.error(\"THREE.WebGLState:\",e)}},scissor:function(t){!1===ge.equals(t)&&(e.scissor(t.x,t.y,t.z,t.w),ge.copy(t))},viewport:function(t){!1===ve.equals(t)&&(e.viewport(t.x,t.y,t.z,t.w),ve.copy(t))},reset:function(){e.disable(3042),e.disable(2884),e.disable(2929),e.disable(32823),e.disable(3089),e.disable(2960),e.disable(32926),e.blendEquation(32774),e.blendFunc(1,0),e.blendFuncSeparate(1,0,1,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(513),e.clearDepth(1),e.stencilMask(4294967295),e.stencilFunc(519,0,4294967295),e.stencilOp(7680,7680,7680),e.clearStencil(0),e.cullFace(1029),e.frontFace(2305),e.polygonOffset(0,0),e.activeTexture(33984),e.bindFramebuffer(36160,null),!0===i&&(e.bindFramebuffer(36009,null),e.bindFramebuffer(36008,null)),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),d={},pe=null,Ae={},p={},A=new WeakMap,f=[],m=null,X=!1,J=null,K=null,Z=null,$=null,ee=null,te=null,ne=null,ie=!1,re=null,se=null,oe=null,ae=null,le=null,ge.set(0,0,e.canvas.width,e.canvas.height),ve.set(0,0,e.canvas.width,e.canvas.height),r.reset(),s.reset(),o.reset()}}}function Ka(e,t,n,i,r,s,o){const a=r.isWebGL2,l=r.maxTextures,c=r.maxCubemapSize,h=r.maxTextureSize,u=r.maxSamples,d=t.has(\"WEBGL_multisampled_render_to_texture\")?t.get(\"WEBGL_multisampled_render_to_texture\"):null,p=\"undefined\"!=typeof navigator&&/OculusBrowser/g.test(navigator.userAgent),A=new WeakMap;let f;const m=new WeakMap;let g=!1;try{g=\"undefined\"!=typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext(\"2d\")}catch(e){}function v(e,t){return g?new OffscreenCanvas(e,t):On(\"canvas\")}function y(e,t,n,i){let r=1;if((e.width>i||e.height>i)&&(r=i/Math.max(e.width,e.height)),r\u003C1||!0===t){if(\"undefined\"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||\"undefined\"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||\"undefined\"!=typeof ImageBitmap&&e instanceof ImageBitmap){const i=t?In:Math.floor,s=i(r*e.width),o=i(r*e.height);void 0===f&&(f=v(s,o));const a=n?v(s,o):f;return a.width=s,a.height=o,a.getContext(\"2d\").drawImage(e,0,0,s,o),console.warn(\"THREE.WebGLRenderer: Texture has been resized from (\"+e.width+\"x\"+e.height+\") to (\"+s+\"x\"+o+\").\"),a}return\"data\"in e&&console.warn(\"THREE.WebGLRenderer: Image in DataTexture is too big (\"+e.width+\"x\"+e.height+\").\"),e}return e}function E(e){return Mn(e.width)&&Mn(e.height)}function b(e,t){return e.generateMipmaps&&t&&e.minFilter!==pe&&e.minFilter!==ve}function x(t){e.generateMipmap(t)}function w(n,i,r,s,o=!1){if(!1===a)return i;if(null!==n){if(void 0!==e[n])return e[n];console.warn(\"THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '\"+n+\"'\")}let l=i;return 6403===i&&(5126===r&&(l=33326),5131===r&&(l=33325),5121===r&&(l=33321)),33319===i&&(5126===r&&(l=33328),5131===r&&(l=33327),5121===r&&(l=33323)),6408===i&&(5126===r&&(l=34836),5131===r&&(l=34842),5121===r&&(l=s===Rt&&!1===o?35907:32856),32819===r&&(l=32854),32820===r&&(l=32855)),33325!==l&&33326!==l&&33327!==l&&33328!==l&&34842!==l&&34836!==l||t.get(\"EXT_color_buffer_float\"),l}function C(e,t,n){return!0===b(e,n)||e.isFramebufferTexture&&e.minFilter!==pe&&e.minFilter!==ve?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function M(e){return e===pe||e===Ae||e===me?9728:9729}function _(e){const t=e.target;t.removeEventListener(\"dispose\",_),function(e){const t=i.get(e);if(void 0===t.__webglInit)return;const n=e.source,r=m.get(n);if(r){const i=r[t.__cacheKey];i.usedTimes--,0===i.usedTimes&&B(e),0===Object.keys(r).length&&m.delete(n)}i.remove(e)}(t),t.isVideoTexture&&A.delete(t)}function I(t){const n=t.target;n.removeEventListener(\"dispose\",I),function(t){const n=t.texture,r=i.get(t),s=i.get(n);if(void 0!==s.__webglTexture&&(e.deleteTexture(s.__webglTexture),o.memory.textures--),t.depthTexture&&t.depthTexture.dispose(),t.isWebGLCubeRenderTarget)for(let t=0;t\u003C6;t++)e.deleteFramebuffer(r.__webglFramebuffer[t]),r.__webglDepthbuffer&&e.deleteRenderbuffer(r.__webglDepthbuffer[t]);else{if(e.deleteFramebuffer(r.__webglFramebuffer),r.__webglDepthbuffer&&e.deleteRenderbuffer(r.__webglDepthbuffer),r.__webglMultisampledFramebuffer&&e.deleteFramebuffer(r.__webglMultisampledFramebuffer),r.__webglColorRenderbuffer)for(let t=0;t\u003Cr.__webglColorRenderbuffer.length;t++)r.__webglColorRenderbuffer[t]&&e.deleteRenderbuffer(r.__webglColorRenderbuffer[t]);r.__webglDepthRenderbuffer&&e.deleteRenderbuffer(r.__webglDepthRenderbuffer)}if(t.isWebGLMultipleRenderTargets)for(let t=0,r=n.length;t\u003Cr;t++){const r=i.get(n[t]);r.__webglTexture&&(e.deleteTexture(r.__webglTexture),o.memory.textures--),i.remove(n[t])}i.remove(n),i.remove(t)}(n)}function B(t){const n=i.get(t);e.deleteTexture(n.__webglTexture);const r=t.source;delete m.get(r)[n.__cacheKey],o.memory.textures--}let S=0;function T(e,t){const r=i.get(e);if(e.isVideoTexture&&function(e){const t=o.render.frame;A.get(e)!==t&&(A.set(e,t),e.update())}(e),!1===e.isRenderTargetTexture&&e.version>0&&r.__version!==e.version){const n=e.image;if(null===n)console.warn(\"THREE.WebGLRenderer: Texture marked for update but no image data found.\");else{if(!1!==n.complete)return void k(r,e,t);console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is incomplete\")}}n.bindTexture(3553,r.__webglTexture,33984+t)}const L={[he]:10497,[ue]:33071,[de]:33648},D={[pe]:9728,[Ae]:9984,[me]:9986,[ve]:9729,[ye]:9985,[be]:9987};function R(n,s,o){if(o?(e.texParameteri(n,10242,L[s.wrapS]),e.texParameteri(n,10243,L[s.wrapT]),32879!==n&&35866!==n||e.texParameteri(n,32882,L[s.wrapR]),e.texParameteri(n,10240,D[s.magFilter]),e.texParameteri(n,10241,D[s.minFilter])):(e.texParameteri(n,10242,33071),e.texParameteri(n,10243,33071),32879!==n&&35866!==n||e.texParameteri(n,32882,33071),s.wrapS===ue&&s.wrapT===ue||console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.\"),e.texParameteri(n,10240,M(s.magFilter)),e.texParameteri(n,10241,M(s.minFilter)),s.minFilter!==pe&&s.minFilter!==ve&&console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.\")),!0===t.has(\"EXT_texture_filter_anisotropic\")){const o=t.get(\"EXT_texture_filter_anisotropic\");if(s.type===Se&&!1===t.has(\"OES_texture_float_linear\"))return;if(!1===a&&s.type===Te&&!1===t.has(\"OES_texture_half_float_linear\"))return;(s.anisotropy>1||i.get(s).__currentAnisotropy)&&(e.texParameterf(n,o.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,r.getMaxAnisotropy())),i.get(s).__currentAnisotropy=s.anisotropy)}}function P(t,n){let i=!1;void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener(\"dispose\",_));const r=n.source;let s=m.get(r);void 0===s&&(s={},m.set(r,s));const a=function(e){const t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.encoding),t.join()}(n);if(a!==t.__cacheKey){void 0===s[a]&&(s[a]={texture:e.createTexture(),usedTimes:0},o.memory.textures++,i=!0),s[a].usedTimes++;const r=s[t.__cacheKey];void 0!==r&&(s[t.__cacheKey].usedTimes--,0===r.usedTimes&&B(n)),t.__cacheKey=a,t.__webglTexture=s[a].texture}return i}function k(t,r,o){let l=3553;(r.isDataArrayTexture||r.isCompressedArrayTexture)&&(l=35866),r.isData3DTexture&&(l=32879);const c=P(t,r),u=r.source;n.bindTexture(l,t.__webglTexture,33984+o);const d=i.get(u);if(u.version!==d.__version||!0===c){n.activeTexture(33984+o),e.pixelStorei(37440,r.flipY),e.pixelStorei(37441,r.premultiplyAlpha),e.pixelStorei(3317,r.unpackAlignment),e.pixelStorei(37443,0);const t=function(e){return!a&&(e.wrapS!==ue||e.wrapT!==ue||e.minFilter!==pe&&e.minFilter!==ve)}(r)&&!1===E(r.image);let i=y(r.image,t,!1,h);i=G(r,i);const p=E(i)||a,A=s.convert(r.format,r.encoding);let f,m=s.convert(r.type),g=w(r.internalFormat,A,m,r.encoding,r.isVideoTexture);R(l,r,p);const v=r.mipmaps,M=a&&!0!==r.isVideoTexture,_=void 0===d.__version||!0===c,I=C(r,i,p);if(r.isDepthTexture)g=6402,a?g=r.type===Se?36012:r.type===Be?33190:r.type===Re?35056:33189:r.type===Se&&console.error(\"WebGLRenderer: Floating point depth texture requires WebGL2.\"),r.format===Ue&&6402===g&&r.type!==_e&&r.type!==Be&&(console.warn(\"THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.\"),r.type=Be,m=s.convert(r.type)),r.format===Ne&&6402===g&&(g=34041,r.type!==Re&&(console.warn(\"THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.\"),r.type=Re,m=s.convert(r.type))),_&&(M?n.texStorage2D(3553,1,g,i.width,i.height):n.texImage2D(3553,0,g,i.width,i.height,0,A,m,null));else if(r.isDataTexture)if(v.length>0&&p){M&&_&&n.texStorage2D(3553,I,g,v[0].width,v[0].height);for(let e=0,t=v.length;e\u003Ct;e++)f=v[e],M?n.texSubImage2D(3553,e,0,0,f.width,f.height,A,m,f.data):n.texImage2D(3553,e,g,f.width,f.height,0,A,m,f.data);r.generateMipmaps=!1}else M?(_&&n.texStorage2D(3553,I,g,i.width,i.height),n.texSubImage2D(3553,0,0,0,i.width,i.height,A,m,i.data)):n.texImage2D(3553,0,g,i.width,i.height,0,A,m,i.data);else if(r.isCompressedTexture)if(r.isCompressedArrayTexture){M&&_&&n.texStorage3D(35866,I,g,v[0].width,v[0].height,i.depth);for(let e=0,t=v.length;e\u003Ct;e++)f=v[e],r.format!==Fe?null!==A?M?n.compressedTexSubImage3D(35866,e,0,0,0,f.width,f.height,i.depth,A,f.data,0,0):n.compressedTexImage3D(35866,e,g,f.width,f.height,i.depth,0,f.data,0,0):console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\"):M?n.texSubImage3D(35866,e,0,0,0,f.width,f.height,i.depth,A,m,f.data):n.texImage3D(35866,e,g,f.width,f.height,i.depth,0,A,m,f.data)}else{M&&_&&n.texStorage2D(3553,I,g,v[0].width,v[0].height);for(let e=0,t=v.length;e\u003Ct;e++)f=v[e],r.format!==Fe?null!==A?M?n.compressedTexSubImage2D(3553,e,0,0,f.width,f.height,A,f.data):n.compressedTexImage2D(3553,e,g,f.width,f.height,0,f.data):console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\"):M?n.texSubImage2D(3553,e,0,0,f.width,f.height,A,m,f.data):n.texImage2D(3553,e,g,f.width,f.height,0,A,m,f.data)}else if(r.isDataArrayTexture)M?(_&&n.texStorage3D(35866,I,g,i.width,i.height,i.depth),n.texSubImage3D(35866,0,0,0,0,i.width,i.height,i.depth,A,m,i.data)):n.texImage3D(35866,0,g,i.width,i.height,i.depth,0,A,m,i.data);else if(r.isData3DTexture)M?(_&&n.texStorage3D(32879,I,g,i.width,i.height,i.depth),n.texSubImage3D(32879,0,0,0,0,i.width,i.height,i.depth,A,m,i.data)):n.texImage3D(32879,0,g,i.width,i.height,i.depth,0,A,m,i.data);else if(r.isFramebufferTexture){if(_)if(M)n.texStorage2D(3553,I,g,i.width,i.height);else{let e=i.width,t=i.height;for(let i=0;i\u003CI;i++)n.texImage2D(3553,i,g,e,t,0,A,m,null),e>>=1,t>>=1}}else if(v.length>0&&p){M&&_&&n.texStorage2D(3553,I,g,v[0].width,v[0].height);for(let e=0,t=v.length;e\u003Ct;e++)f=v[e],M?n.texSubImage2D(3553,e,0,0,A,m,f):n.texImage2D(3553,e,g,A,m,f);r.generateMipmaps=!1}else M?(_&&n.texStorage2D(3553,I,g,i.width,i.height),n.texSubImage2D(3553,0,0,0,A,m,i)):n.texImage2D(3553,0,g,A,m,i);b(r,p)&&x(l),d.__version=u.version,r.onUpdate&&r.onUpdate(r)}t.__version=r.version}function F(t,r,o,a,l){const c=s.convert(o.format,o.encoding),h=s.convert(o.type),u=w(o.internalFormat,c,h,o.encoding);i.get(r).__hasExternalTextures||(32879===l||35866===l?n.texImage3D(l,0,u,r.width,r.height,r.depth,0,c,h,null):n.texImage2D(l,0,u,r.width,r.height,0,c,h,null)),n.bindFramebuffer(36160,t),N(r)?d.framebufferTexture2DMultisampleEXT(36160,a,l,i.get(o).__webglTexture,0,U(r)):(3553===l||l>=34069&&l\u003C=34074)&&e.framebufferTexture2D(36160,a,l,i.get(o).__webglTexture,0),n.bindFramebuffer(36160,null)}function O(t,n,i){if(e.bindRenderbuffer(36161,t),n.depthBuffer&&!n.stencilBuffer){let r=33189;if(i||N(n)){const t=n.depthTexture;t&&t.isDepthTexture&&(t.type===Se?r=36012:t.type===Be&&(r=33190));const i=U(n);N(n)?d.renderbufferStorageMultisampleEXT(36161,i,r,n.width,n.height):e.renderbufferStorageMultisample(36161,i,r,n.width,n.height)}else e.renderbufferStorage(36161,r,n.width,n.height);e.framebufferRenderbuffer(36160,36096,36161,t)}else if(n.depthBuffer&&n.stencilBuffer){const r=U(n);i&&!1===N(n)?e.renderbufferStorageMultisample(36161,r,35056,n.width,n.height):N(n)?d.renderbufferStorageMultisampleEXT(36161,r,35056,n.width,n.height):e.renderbufferStorage(36161,34041,n.width,n.height),e.framebufferRenderbuffer(36160,33306,36161,t)}else{const t=!0===n.isWebGLMultipleRenderTargets?n.texture:[n.texture];for(let r=0;r\u003Ct.length;r++){const o=t[r],a=s.convert(o.format,o.encoding),l=s.convert(o.type),c=w(o.internalFormat,a,l,o.encoding),h=U(n);i&&!1===N(n)?e.renderbufferStorageMultisample(36161,h,c,n.width,n.height):N(n)?d.renderbufferStorageMultisampleEXT(36161,h,c,n.width,n.height):e.renderbufferStorage(36161,c,n.width,n.height)}}e.bindRenderbuffer(36161,null)}function Q(t){const r=i.get(t),s=!0===t.isWebGLCubeRenderTarget;if(t.depthTexture&&!r.__autoAllocateDepthBuffer){if(s)throw new Error(\"target.depthTexture not supported in Cube render targets\");!function(t,r){if(r&&r.isWebGLCubeRenderTarget)throw new Error(\"Depth Texture with cube render targets is not supported\");if(n.bindFramebuffer(36160,t),!r.depthTexture||!r.depthTexture.isDepthTexture)throw new Error(\"renderTarget.depthTexture must be an instance of THREE.DepthTexture\");i.get(r.depthTexture).__webglTexture&&r.depthTexture.image.width===r.width&&r.depthTexture.image.height===r.height||(r.depthTexture.image.width=r.width,r.depthTexture.image.height=r.height,r.depthTexture.needsUpdate=!0),T(r.depthTexture,0);const s=i.get(r.depthTexture).__webglTexture,o=U(r);if(r.depthTexture.format===Ue)N(r)?d.framebufferTexture2DMultisampleEXT(36160,36096,3553,s,0,o):e.framebufferTexture2D(36160,36096,3553,s,0);else{if(r.depthTexture.format!==Ne)throw new Error(\"Unknown depthTexture format\");N(r)?d.framebufferTexture2DMultisampleEXT(36160,33306,3553,s,0,o):e.framebufferTexture2D(36160,33306,3553,s,0)}}(r.__webglFramebuffer,t)}else if(s){r.__webglDepthbuffer=[];for(let i=0;i\u003C6;i++)n.bindFramebuffer(36160,r.__webglFramebuffer[i]),r.__webglDepthbuffer[i]=e.createRenderbuffer(),O(r.__webglDepthbuffer[i],t,!1)}else n.bindFramebuffer(36160,r.__webglFramebuffer),r.__webglDepthbuffer=e.createRenderbuffer(),O(r.__webglDepthbuffer,t,!1);n.bindFramebuffer(36160,null)}function U(e){return Math.min(u,e.samples)}function N(e){const n=i.get(e);return a&&e.samples>0&&!0===t.has(\"WEBGL_multisampled_render_to_texture\")&&!1!==n.__useRenderToTexture}function G(e,n){const i=e.encoding,r=e.format,s=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||e.format===fn||i!==Dt&&(i===Rt?!1===a?!0===t.has(\"EXT_sRGB\")&&r===Fe?(e.format=fn,e.minFilter=ve,e.generateMipmaps=!1):n=Jn.sRGBToLinear(n):r===Fe&&s===we||console.warn(\"THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.\"):console.error(\"THREE.WebGLTextures: Unsupported texture encoding:\",i)),n}this.allocateTextureUnit=function(){const e=S;return e>=l&&console.warn(\"THREE.WebGLTextures: Trying to use \"+e+\" texture units while this GPU supports only \"+l),S+=1,e},this.resetTextureUnits=function(){S=0},this.setTexture2D=T,this.setTexture2DArray=function(e,t){const r=i.get(e);e.version>0&&r.__version!==e.version?k(r,e,t):n.bindTexture(35866,r.__webglTexture,33984+t)},this.setTexture3D=function(e,t){const r=i.get(e);e.version>0&&r.__version!==e.version?k(r,e,t):n.bindTexture(32879,r.__webglTexture,33984+t)},this.setTextureCube=function(t,r){const o=i.get(t);t.version>0&&o.__version!==t.version?function(t,r,o){if(6!==r.image.length)return;const l=P(t,r),h=r.source;n.bindTexture(34067,t.__webglTexture,33984+o);const u=i.get(h);if(h.version!==u.__version||!0===l){n.activeTexture(33984+o),e.pixelStorei(37440,r.flipY),e.pixelStorei(37441,r.premultiplyAlpha),e.pixelStorei(3317,r.unpackAlignment),e.pixelStorei(37443,0);const t=r.isCompressedTexture||r.image[0].isCompressedTexture,i=r.image[0]&&r.image[0].isDataTexture,d=[];for(let e=0;e\u003C6;e++)d[e]=t||i?i?r.image[e].image:r.image[e]:y(r.image[e],!1,!0,c),d[e]=G(r,d[e]);const p=d[0],A=E(p)||a,f=s.convert(r.format,r.encoding),m=s.convert(r.type),g=w(r.internalFormat,f,m,r.encoding),v=a&&!0!==r.isVideoTexture,M=void 0===u.__version||!0===l;let _,I=C(r,p,A);if(R(34067,r,A),t){v&&M&&n.texStorage2D(34067,I,g,p.width,p.height);for(let e=0;e\u003C6;e++){_=d[e].mipmaps;for(let t=0;t\u003C_.length;t++){const i=_[t];r.format!==Fe?null!==f?v?n.compressedTexSubImage2D(34069+e,t,0,0,i.width,i.height,f,i.data):n.compressedTexImage2D(34069+e,t,g,i.width,i.height,0,i.data):console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\"):v?n.texSubImage2D(34069+e,t,0,0,i.width,i.height,f,m,i.data):n.texImage2D(34069+e,t,g,i.width,i.height,0,f,m,i.data)}}}else{_=r.mipmaps,v&&M&&(_.length>0&&I++,n.texStorage2D(34067,I,g,d[0].width,d[0].height));for(let e=0;e\u003C6;e++)if(i){v?n.texSubImage2D(34069+e,0,0,0,d[e].width,d[e].height,f,m,d[e].data):n.texImage2D(34069+e,0,g,d[e].width,d[e].height,0,f,m,d[e].data);for(let t=0;t\u003C_.length;t++){const i=_[t].image[e].image;v?n.texSubImage2D(34069+e,t+1,0,0,i.width,i.height,f,m,i.data):n.texImage2D(34069+e,t+1,g,i.width,i.height,0,f,m,i.data)}}else{v?n.texSubImage2D(34069+e,0,0,0,f,m,d[e]):n.texImage2D(34069+e,0,g,f,m,d[e]);for(let t=0;t\u003C_.length;t++){const i=_[t];v?n.texSubImage2D(34069+e,t+1,0,0,f,m,i.image[e]):n.texImage2D(34069+e,t+1,g,f,m,i.image[e])}}}b(r,A)&&x(34067),u.__version=h.version,r.onUpdate&&r.onUpdate(r)}t.__version=r.version}(o,t,r):n.bindTexture(34067,o.__webglTexture,33984+r)},this.rebindTextures=function(e,t,n){const r=i.get(e);void 0!==t&&F(r.__webglFramebuffer,e,e.texture,36064,3553),void 0!==n&&Q(e)},this.setupRenderTarget=function(t){const l=t.texture,c=i.get(t),h=i.get(l);t.addEventListener(\"dispose\",I),!0!==t.isWebGLMultipleRenderTargets&&(void 0===h.__webglTexture&&(h.__webglTexture=e.createTexture()),h.__version=l.version,o.memory.textures++);const u=!0===t.isWebGLCubeRenderTarget,d=!0===t.isWebGLMultipleRenderTargets,p=E(t)||a;if(u){c.__webglFramebuffer=[];for(let t=0;t\u003C6;t++)c.__webglFramebuffer[t]=e.createFramebuffer()}else{if(c.__webglFramebuffer=e.createFramebuffer(),d)if(r.drawBuffers){const n=t.texture;for(let t=0,r=n.length;t\u003Cr;t++){const r=i.get(n[t]);void 0===r.__webglTexture&&(r.__webglTexture=e.createTexture(),o.memory.textures++)}}else console.warn(\"THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.\");if(a&&t.samples>0&&!1===N(t)){const i=d?l:[l];c.__webglMultisampledFramebuffer=e.createFramebuffer(),c.__webglColorRenderbuffer=[],n.bindFramebuffer(36160,c.__webglMultisampledFramebuffer);for(let n=0;n\u003Ci.length;n++){const r=i[n];c.__webglColorRenderbuffer[n]=e.createRenderbuffer(),e.bindRenderbuffer(36161,c.__webglColorRenderbuffer[n]);const o=s.convert(r.format,r.encoding),a=s.convert(r.type),l=w(r.internalFormat,o,a,r.encoding,!0===t.isXRRenderTarget),h=U(t);e.renderbufferStorageMultisample(36161,h,l,t.width,t.height),e.framebufferRenderbuffer(36160,36064+n,36161,c.__webglColorRenderbuffer[n])}e.bindRenderbuffer(36161,null),t.depthBuffer&&(c.__webglDepthRenderbuffer=e.createRenderbuffer(),O(c.__webglDepthRenderbuffer,t,!0)),n.bindFramebuffer(36160,null)}}if(u){n.bindTexture(34067,h.__webglTexture),R(34067,l,p);for(let e=0;e\u003C6;e++)F(c.__webglFramebuffer[e],t,l,36064,34069+e);b(l,p)&&x(34067),n.unbindTexture()}else if(d){const e=t.texture;for(let r=0,s=e.length;r\u003Cs;r++){const s=e[r],o=i.get(s);n.bindTexture(3553,o.__webglTexture),R(3553,s,p),F(c.__webglFramebuffer,t,s,36064+r,3553),b(s,p)&&x(3553)}n.unbindTexture()}else{let e=3553;(t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(a?e=t.isWebGL3DRenderTarget?32879:35866:console.error(\"THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.\")),n.bindTexture(e,h.__webglTexture),R(e,l,p),F(c.__webglFramebuffer,t,l,36064,e),b(l,p)&&x(e),n.unbindTexture()}t.depthBuffer&&Q(t)},this.updateRenderTargetMipmap=function(e){const t=E(e)||a,r=!0===e.isWebGLMultipleRenderTargets?e.texture:[e.texture];for(let s=0,o=r.length;s\u003Co;s++){const o=r[s];if(b(o,t)){const t=e.isWebGLCubeRenderTarget?34067:3553,r=i.get(o).__webglTexture;n.bindTexture(t,r),x(t),n.unbindTexture()}}},this.updateMultisampleRenderTarget=function(t){if(a&&t.samples>0&&!1===N(t)){const r=t.isWebGLMultipleRenderTargets?t.texture:[t.texture],s=t.width,o=t.height;let a=16384;const l=[],c=t.stencilBuffer?33306:36096,h=i.get(t),u=!0===t.isWebGLMultipleRenderTargets;if(u)for(let t=0;t\u003Cr.length;t++)n.bindFramebuffer(36160,h.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+t,36161,null),n.bindFramebuffer(36160,h.__webglFramebuffer),e.framebufferTexture2D(36009,36064+t,3553,null,0);n.bindFramebuffer(36008,h.__webglMultisampledFramebuffer),n.bindFramebuffer(36009,h.__webglFramebuffer);for(let n=0;n\u003Cr.length;n++){l.push(36064+n),t.depthBuffer&&l.push(c);const d=void 0!==h.__ignoreDepthValues&&h.__ignoreDepthValues;if(!1===d&&(t.depthBuffer&&(a|=256),t.stencilBuffer&&(a|=1024)),u&&e.framebufferRenderbuffer(36008,36064,36161,h.__webglColorRenderbuffer[n]),!0===d&&(e.invalidateFramebuffer(36008,[c]),e.invalidateFramebuffer(36009,[c])),u){const t=i.get(r[n]).__webglTexture;e.framebufferTexture2D(36009,36064,3553,t,0)}e.blitFramebuffer(0,0,s,o,0,0,s,o,a,9728),p&&e.invalidateFramebuffer(36008,l)}if(n.bindFramebuffer(36008,null),n.bindFramebuffer(36009,null),u)for(let t=0;t\u003Cr.length;t++){n.bindFramebuffer(36160,h.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+t,36161,h.__webglColorRenderbuffer[t]);const s=i.get(r[t]).__webglTexture;n.bindFramebuffer(36160,h.__webglFramebuffer),e.framebufferTexture2D(36009,36064+t,3553,s,0)}n.bindFramebuffer(36009,h.__webglMultisampledFramebuffer)}},this.setupDepthRenderbuffer=Q,this.setupFrameBufferTexture=F,this.useMultisampledRTT=N}function Za(e,t,n){const i=n.isWebGL2;return{convert:function(n,r=null){let s;if(n===we)return 5121;if(n===Le)return 32819;if(n===De)return 32820;if(n===Ce)return 5120;if(n===Me)return 5122;if(n===_e)return 5123;if(n===Ie)return 5124;if(n===Be)return 5125;if(n===Se)return 5126;if(n===Te)return i?5131:(s=t.get(\"OES_texture_half_float\"),null!==s?s.HALF_FLOAT_OES:null);if(n===Pe)return 6406;if(n===Fe)return 6408;if(n===Oe)return 6409;if(n===Qe)return 6410;if(n===Ue)return 6402;if(n===Ne)return 34041;if(n===ke)return console.warn(\"THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228\"),6408;if(n===fn)return s=t.get(\"EXT_sRGB\"),null!==s?s.SRGB_ALPHA_EXT:null;if(n===Ge)return 6403;if(n===ze)return 36244;if(n===He)return 33319;if(n===Ve)return 33320;if(n===We)return 36249;if(n===je||n===qe||n===Ye||n===Xe)if(r===Rt){if(s=t.get(\"WEBGL_compressed_texture_s3tc_srgb\"),null===s)return null;if(n===je)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===qe)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Ye)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Xe)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else{if(s=t.get(\"WEBGL_compressed_texture_s3tc\"),null===s)return null;if(n===je)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===qe)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Ye)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Xe)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(n===Je||n===Ke||n===Ze||n===$e){if(s=t.get(\"WEBGL_compressed_texture_pvrtc\"),null===s)return null;if(n===Je)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===Ke)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Ze)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===$e)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(n===et)return s=t.get(\"WEBGL_compressed_texture_etc1\"),null!==s?s.COMPRESSED_RGB_ETC1_WEBGL:null;if(n===tt||n===nt){if(s=t.get(\"WEBGL_compressed_texture_etc\"),null===s)return null;if(n===tt)return r===Rt?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(n===nt)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}if(n===it||n===rt||n===st||n===ot||n===at||n===lt||n===ct||n===ht||n===ut||n===dt||n===pt||n===At||n===ft||n===mt){if(s=t.get(\"WEBGL_compressed_texture_astc\"),null===s)return null;if(n===it)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===rt)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===st)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===ot)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===at)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===lt)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===ct)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===ht)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===ut)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===dt)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===pt)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===At)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===ft)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===mt)return r===Rt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}if(n===gt){if(s=t.get(\"EXT_texture_compression_bptc\"),null===s)return null;if(n===gt)return r===Rt?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT}return n===Re?i?34042:(s=t.get(\"WEBGL_depth_texture\"),null!==s?s.UNSIGNED_INT_24_8_WEBGL:null):void 0!==e[n]?e[n]:null}}}class $a extends hr{constructor(){super(),this.isGroup=!0,this.type=\"Group\"}}class el extends vs{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}var tl=new ci,nl=new ci;function il(e){var t,n,i=this,r=null,s=null,o=null,a=[],l=new Ui,c=new Ui,h=1,u=\"local-floor\";\"undefined\"!=typeof window&&\"VRFrameData\"in window&&(s=new window.VRFrameData,window.addEventListener(\"vrdisplaypresentchange\",E,!1));var d=new Ui,p=new li,A=new ci,f=new vs;f.viewport=new ti,f.layers.enable(1);var m=new vs;m.viewport=new ti,m.layers.enable(2);var g=new el([f,m]);g.layers.enable(1),g.layers.enable(2);var v,y=new Ln;function E(){if(i.isPresenting=null!==r&&!0===r.isPresenting){var s=r.getEyeParameters(\"left\");t=2*s.renderWidth*h,n=s.renderHeight*h,v=e.getPixelRatio(),e.getSize(y),e.setDrawingBufferSize(t,n,1),f.viewport.set(0,0,t/2,n),m.viewport.set(t/2,0,t/2,n),M.start(),i.dispatchEvent({type:\"sessionstart\"})}else i.enabled&&e.setDrawingBufferSize(y.width,y.height,v),M.stop(),i.dispatchEvent({type:\"sessionend\"})}var b=[],x=[];function w(e){for(var t=navigator.getGamepads&&navigator.getGamepads(),n=0,i=t.length;n\u003Ci;n++){var r=t[n];if(r&&(\"Daydream Controller\"===r.id||\"Gear VR Controller\"===r.id||\"Oculus Go Controller\"===r.id||\"OpenVR Gamepad\"===r.id||r.id.startsWith(\"Oculus Touch\")||r.id.startsWith(\"HTC Vive Focus\")||r.id.startsWith(\"Spatial Controller\"))){var s=r.hand;if(0===e&&(\"\"===s||\"right\"===s))return r;if(1===e&&\"left\"===s)return r}}}function C(e,i){null!==i&&4===i.length&&e.set(i[0]*t,i[1]*n,i[2]*t,i[3]*n)}this.enabled=!1,this.getController=function(e){var t=a[e];return void 0===t&&((t=new $a).matrixAutoUpdate=!1,t.visible=!1,a[e]=t),t},this.getDevice=function(){return r},this.setDevice=function(e){void 0!==e&&(r=e),M.setContext(e)},this.setFramebufferScaleFactor=function(e){h=e},this.setReferenceSpaceType=function(e){u=e},this.setPoseTarget=function(e){void 0!==e&&(o=e)},this.cameraAutoUpdate=!0,this.updateCamera=function(e){var t=\"local-floor\"===u?1.6:0;if(r.depthNear=e.near,r.depthFar=e.far,r.getFrameData(s),\"local-floor\"===u){var n=r.stageParameters;n?l.fromArray(n.sittingToStandingTransform):l.makeTranslation(0,t,0)}var i=s.pose,h=null!==o?o:e;h.matrix.copy(l),h.matrix.decompose(h.position,h.quaternion,h.scale),null!==i.orientation&&(p.fromArray(i.orientation),h.quaternion.multiply(p)),null!==i.position&&(p.setFromRotationMatrix(l),A.fromArray(i.position),A.applyQuaternion(p),h.position.add(A)),h.updateMatrixWorld();for(var v=h.children,y=0,E=v.length;y\u003CE;y++)v[y].updateMatrixWorld(!0);f.near=e.near,m.near=e.near,f.far=e.far,m.far=e.far,f.matrixWorldInverse.fromArray(s.leftViewMatrix),m.matrixWorldInverse.fromArray(s.rightViewMatrix),c.copy(l).invert(),\"local-floor\"===u&&(f.matrixWorldInverse.multiply(c),m.matrixWorldInverse.multiply(c));var M=h.parent;null!==M&&(d.copy(M.matrixWorld).invert(),f.matrixWorldInverse.multiply(d),m.matrixWorldInverse.multiply(d)),f.matrixWorld.copy(f.matrixWorldInverse).invert(),m.matrixWorld.copy(m.matrixWorldInverse).invert(),f.projectionMatrix.fromArray(s.leftProjectionMatrix),m.projectionMatrix.fromArray(s.rightProjectionMatrix),function(e,t,n){tl.setFromMatrixPosition(t.matrixWorld),nl.setFromMatrixPosition(n.matrixWorld);var i=tl.distanceTo(nl),r=t.projectionMatrix.elements,s=n.projectionMatrix.elements,o=r[14]/(r[10]-1),a=r[14]/(r[10]+1),l=(r[9]+1)/r[5],c=(r[9]-1)/r[5],h=(r[8]-1)/r[0],u=(s[8]+1)/s[0],d=o*h,p=o*u,A=i/(-h+u),f=A*-h;t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(f),e.translateZ(A),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert();var m=o+A,g=a+A,v=d-f,y=p+(i-f),E=l*a/g*m,b=c*a/g*m;e.projectionMatrix.makePerspective(v,y,E,b,m,g)}(g,f,m);var _=r.getLayers();if(_.length){var I=_[0];C(f.viewport,I.leftBounds),C(m.viewport,I.rightBounds)}return function(){for(var e=0;e\u003Ca.length;e++){var t=a[e],n=w(e);if(void 0!==n&&void 0!==n.pose){if(null===n.pose)return;var i=n.pose;!1===i.hasPosition&&t.position.set(.2,-.6,-.05),null!==i.position&&t.position.fromArray(i.position),null!==i.orientation&&t.quaternion.fromArray(i.orientation),t.matrix.compose(t.position,t.quaternion,t.scale),t.matrix.premultiply(l),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixWorldNeedsUpdate=!0,t.visible=!0;var r=\"Daydream Controller\"===n.id?0:1;void 0===b[e]&&(b[e]=!1),b[e]!==n.buttons[r].pressed&&(b[e]=n.buttons[r].pressed,!0===b[e]?t.dispatchEvent({type:\"selectstart\"}):(t.dispatchEvent({type:\"selectend\"}),t.dispatchEvent({type:\"select\"}))),r=2,void 0===x[e]&&(x[e]=!1),void 0!==n.buttons[r]&&x[e]!==n.buttons[r].pressed&&(x[e]=n.buttons[r].pressed,!0===x[e]?t.dispatchEvent({type:\"squeezestart\"}):(t.dispatchEvent({type:\"squeezeend\"}),t.dispatchEvent({type:\"squeeze\"})))}else t.visible=!1}}(),g},this.getCamera=function(){return g},this.getFoveation=function(){return 1},this.setFoveation=function(e){1!==e&&console.warn(\"THREE.WebVRManager: setFoveation() not used in WebVR.\")},this.getStandingMatrix=function(){return l},this.isPresenting=!1;var M=new Ts;this.setAnimationLoop=function(e){M.setAnimationLoop(e),this.isPresenting&&M.start()},this.submitFrame=function(){this.isPresenting&&r.submitFrame()},this.dispose=function(){\"undefined\"!=typeof window&&window.removeEventListener(\"vrdisplaypresentchange\",E)},this.setFrameOfReferenceType=function(){console.warn(\"THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.\")}}Object.assign(il.prototype,{addEventListener:mn.prototype.addEventListener,hasEventListener:mn.prototype.hasEventListener,removeEventListener:mn.prototype.removeEventListener,dispatchEvent:mn.prototype.dispatchEvent});const rl={type:\"move\"};class sl{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return null===this._hand&&(this._hand=new $a,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return null===this._targetRay&&(this._targetRay=new $a,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new ci,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new ci),this._targetRay}getGripSpace(){return null===this._grip&&(this._grip=new $a,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new ci,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new ci),this._grip}dispatchEvent(e){return null!==this._targetRay&&this._targetRay.dispatchEvent(e),null!==this._grip&&this._grip.dispatchEvent(e),null!==this._hand&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:\"connected\",data:e}),this}disconnect(e){return this.dispatchEvent({type:\"disconnected\",data:e}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this}update(e,t,n){let i=null,r=null,s=null;const o=this._targetRay,a=this._grip,l=this._hand;if(e&&\"visible-blurred\"!==t.session.visibilityState){if(l&&e.hand){s=!0;for(const i of e.hand.values()){const e=t.getJointPose(i,n),r=this._getHandJoint(l,i);null!==e&&(r.matrix.fromArray(e.transform.matrix),r.matrix.decompose(r.position,r.rotation,r.scale),r.jointRadius=e.radius),r.visible=null!==e}const i=l.joints[\"index-finger-tip\"],r=l.joints[\"thumb-tip\"],o=i.position.distanceTo(r.position),a=.02,c=.005;l.inputState.pinching&&o>a+c?(l.inputState.pinching=!1,this.dispatchEvent({type:\"pinchend\",handedness:e.handedness,target:this})):!l.inputState.pinching&&o\u003C=a-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:\"pinchstart\",handedness:e.handedness,target:this}))}else null!==a&&e.gripSpace&&(r=t.getPose(e.gripSpace,n),null!==r&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1));null!==o&&(i=t.getPose(e.targetRaySpace,n),null===i&&null!==r&&(i=r),null!==i&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(rl)))}return null!==o&&(o.visible=null!==i),null!==a&&(a.visible=null!==r),null!==l&&(l.visible=null!==s),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){const n=new $a;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class ol extends ei{constructor(e,t,n,i,r,s,o,a,l,c){if((c=void 0!==c?c:Ue)!==Ue&&c!==Ne)throw new Error(\"DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat\");void 0===n&&c===Ue&&(n=Be),void 0===n&&c===Ne&&(n=Re),super(null,i,r,s,o,a,c,n,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==o?o:pe,this.minFilter=void 0!==a?a:pe,this.flipY=!1,this.generateMipmaps=!1}}class al extends mn{constructor(e,t){super();const n=this;let i=null,r=1;var s=null;let o=null,a=\"local-floor\",l=null,c=null;var h=[];let u=null,d=null,p=null,A=null;const f=t.getContextAttributes();let m=null,g=null;const v=[],y=[],E=new Set,b=new Map,x=new vs;x.layers.enable(1),x.viewport=new ti;const w=new vs;w.layers.enable(2),w.viewport=new ti;const C=[x,w],M=new el;M.layers.enable(1),M.layers.enable(2);let _=null,I=null;function B(e){const t=y.indexOf(e.inputSource);if(-1===t)return;const n=v[t];void 0!==n&&n.dispatchEvent({type:e.type,data:e.inputSource})}function S(){i.removeEventListener(\"select\",B),i.removeEventListener(\"selectstart\",B),i.removeEventListener(\"selectend\",B),i.removeEventListener(\"squeeze\",B),i.removeEventListener(\"squeezestart\",B),i.removeEventListener(\"squeezeend\",B),i.removeEventListener(\"end\",S),i.removeEventListener(\"inputsourceschange\",T);for(let e=0;e\u003Cv.length;e++){const t=y[e];null!==t&&(y[e]=null,v[e].disconnect(t))}_=null,I=null,e.setRenderTarget(m),p=null,d=null,u=null,i=null,g=null,k.stop(),n.isPresenting=!1,n.dispatchEvent({type:\"sessionend\"})}function T(e){for(let t=0;t\u003Ce.removed.length;t++){const n=e.removed[t],i=y.indexOf(n);i>=0&&(y[i]=null,v[i].disconnect(n))}for(let t=0;t\u003Ce.added.length;t++){const n=e.added[t];let i=y.indexOf(n);if(-1===i){for(let e=0;e\u003Cv.length;e++){if(e>=y.length){y.push(n),i=e;break}if(null===y[e]){y[e]=n,i=e;break}}if(-1===i)break}const r=v[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.layersEnabled=!1,this.enabled=!1,this.isPresenting=!1,this.getCameraPose=function(){return c},this.getController=function(e){let t=v[e];return void 0===t&&(t=new sl,v[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=v[e];return void 0===t&&(t=new sl,v[e]=t),t.getGripSpace()},this.getHand=function(e){let t=v[e];return void 0===t&&(t=new sl,v[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){r=e,!0===n.isPresenting&&console.warn(\"THREE.WebXRManager: Cannot change framebuffer scale while presenting.\")},this.setReferenceSpaceType=function(e){a=e,!0===n.isPresenting&&console.warn(\"THREE.WebXRManager: Cannot change reference space type while presenting.\")},this.getReferenceSpace=function(){return l||o},this.setReferenceSpace=function(e){l=e},this.getBaseLayer=function(){return null!==d?d:p},this.getBinding=function(){return u},this.getFrame=function(){return A},this.getSession=function(){return i},this.setSession=async function(s){if(i=s,null!==i){if(m=e.getRenderTarget(),i.addEventListener(\"select\",B),i.addEventListener(\"selectstart\",B),i.addEventListener(\"selectend\",B),i.addEventListener(\"squeeze\",B),i.addEventListener(\"squeezestart\",B),i.addEventListener(\"squeezeend\",B),i.addEventListener(\"end\",S),i.addEventListener(\"inputsourceschange\",T),!0!==f.xrCompatible&&await t.makeXRCompatible(),void 0===i.renderState.layers||!1===e.capabilities.isWebGL2){const n={antialias:void 0!==i.renderState.layers||f.antialias,alpha:f.alpha,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:r};p=new XRWebGLLayer(i,t,n),i.updateRenderState({baseLayer:p}),g=new ni(p.framebufferWidth,p.framebufferHeight,{format:Fe,type:we,encoding:e.outputEncoding,stencilBuffer:f.stencil})}else{let n=null,s=null,o=null;f.depth&&(o=f.stencil?35056:33190,n=f.stencil?Ne:Ue,s=f.stencil?Re:Be);const a={colorFormat:32856,depthFormat:o,scaleFactor:r};u=new XRWebGLBinding(i,t),d=u.createProjectionLayer(a),i.updateRenderState({layers:[d]}),g=new ni(d.textureWidth,d.textureHeight,{format:Fe,type:we,depthTexture:new ol(d.textureWidth,d.textureHeight,s,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:f.stencil,encoding:e.outputEncoding,samples:f.antialias?4:0}),e.properties.get(g).__ignoreDepthValues=d.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(1),l=null,o=await i.requestReferenceSpace(a),k.setContext(i),k.start(),n.isPresenting=!0,n.dispatchEvent({type:\"sessionstart\"})}},this.addLayer=function(e){window.XRWebGLBinding&&this.layersEnabled&&i&&(h.push(e),this.updateLayers())},this.removeLayer=function(e){window.XRWebGLBinding&&this.layersEnabled&&i&&(h.splice(h.indexOf(e),1),this.updateLayers())},this.updateLayers=function(){var e=h.map((function(e){return e}));e.unshift(i.renderState.layers[0]),i.updateRenderState({layers:e})};const L=new ci,D=new ci;function R(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.setPoseTarget=function(e){void 0!==e&&(s=e)},this.updateCamera=function(e){if(null===i)return;M.near=w.near=x.near=e.near,M.far=w.far=x.far=e.far,_===M.near&&I===M.far||(i.updateRenderState({depthNear:M.near,depthFar:M.far}),_=M.near,I=M.far);const t=M.cameras;var n=s||e;const r=n.parent;R(M,r);for(let e=0;e\u003Ct.length;e++)R(t[e],r);M.matrixWorld.decompose(M.position,M.quaternion,M.scale),n.matrixWorld.copy(M.matrixWorld),n.matrix.copy(M.matrix),n.matrix.decompose(n.position,n.quaternion,n.scale);const o=n.children;for(let e=0,t=o.length;e\u003Ct;e++)o[e].updateMatrixWorld(!0);2===t.length?function(e,t,n){L.setFromMatrixPosition(t.matrixWorld),D.setFromMatrixPosition(n.matrixWorld);const i=L.distanceTo(D),r=t.projectionMatrix.elements,s=n.projectionMatrix.elements,o=r[14]/(r[10]-1),a=r[14]/(r[10]+1),l=(r[9]+1)/r[5],c=(r[9]-1)/r[5],h=(r[8]-1)/r[0],u=(s[8]+1)/s[0],d=o*h,p=o*u,A=i/(-h+u),f=A*-h;t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(f),e.translateZ(A),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert();const m=o+A,g=a+A,v=d-f,y=p+(i-f),E=l*a/g*m,b=c*a/g*m;e.projectionMatrix.makePerspective(v,y,E,b,m,g)}(M,x,w):M.projectionMatrix.copy(x.projectionMatrix)},this.getCamera=function(){return M},this.getFoveation=function(){return null!==d?d.fixedFoveation:null!==p?p.fixedFoveation:void 0},this.setFoveation=function(e){null!==d&&(d.fixedFoveation=e),null!==p&&void 0!==p.fixedFoveation&&(p.fixedFoveation=e)},this.getPlanes=function(){return E};let P=null;const k=new Ts;k.setAnimationLoop((function(t,i){if(c=i.getViewerPose(l||o),A=i,null!==c){const t=c.views;null!==p&&(e.setRenderTargetFramebuffer(g,p.framebuffer),e.setRenderTarget(g));let n=!1;t.length!==M.cameras.length&&(M.cameras.length=0,n=!0);for(let i=0;i\u003Ct.length;i++){const r=t[i];let s=null;if(null!==p)s=p.getViewport(r);else{const t=u.getViewSubImage(d,r);s=t.viewport,0===i&&(e.setRenderTargetTextures(g,t.colorTexture,d.ignoreDepthValues?void 0:t.depthStencilTexture),e.setRenderTarget(g))}let o=C[i];void 0===o&&(o=new vs,o.layers.enable(i),o.viewport=new ti,C[i]=o),o.matrix.fromArray(r.transform.matrix),o.projectionMatrix.fromArray(r.projectionMatrix),o.viewport.set(s.x,s.y,s.width,s.height),0===i&&M.matrix.copy(o.matrix),!0===n&&M.cameras.push(o)}}for(let e=0;e\u003Cv.length;e++){const t=y[e],n=v[e];null!==t&&void 0!==n&&n.update(t,i,l||o)}if(P&&P(t,i),i.detectedPlanes){n.dispatchEvent({type:\"planesdetected\",data:i.detectedPlanes});let e=null;for(const t of E)i.detectedPlanes.has(t)||(null===e&&(e=[]),e.push(t));if(null!==e)for(const t of e)E.delete(t),b.delete(t),n.dispatchEvent({type:\"planeremoved\",data:t});for(const e of i.detectedPlanes)if(E.has(e)){const t=b.get(e);e.lastChangedTime>t&&(b.set(e,e.lastChangedTime),n.dispatchEvent({type:\"planechanged\",data:e}))}else E.add(e),b.set(e,i.lastChangedTime),n.dispatchEvent({type:\"planeadded\",data:e})}A=null})),this.setAnimationLoop=function(e){P=e},this.dispose=function(){}}}function ll(e,t){function n(n,i){n.opacity.value=i.opacity,i.color&&n.diffuse.value.copy(i.color),i.emissive&&n.emissive.value.copy(i.emissive).multiplyScalar(i.emissiveIntensity),i.map&&(n.map.value=i.map),i.alphaMap&&(n.alphaMap.value=i.alphaMap),i.bumpMap&&(n.bumpMap.value=i.bumpMap,n.bumpScale.value=i.bumpScale,i.side===g&&(n.bumpScale.value*=-1)),i.displacementMap&&(n.displacementMap.value=i.displacementMap,n.displacementScale.value=i.displacementScale,n.displacementBias.value=i.displacementBias),i.emissiveMap&&(n.emissiveMap.value=i.emissiveMap),i.normalMap&&(n.normalMap.value=i.normalMap,n.normalScale.value.copy(i.normalScale),i.side===g&&n.normalScale.value.negate()),i.specularMap&&(n.specularMap.value=i.specularMap),i.alphaTest>0&&(n.alphaTest.value=i.alphaTest);const r=t.get(i).envMap;if(r&&(n.envMap.value=r,n.flipEnvMap.value=r.isCubeTexture&&!1===r.isRenderTargetTexture?-1:1,n.reflectivity.value=i.reflectivity,n.ior.value=i.ior,n.refractionRatio.value=i.refractionRatio),i.lightMap){n.lightMap.value=i.lightMap;const t=!0!==e.physicallyCorrectLights?Math.PI:1;n.lightMapIntensity.value=i.lightMapIntensity*t}let s,o;i.aoMap&&(n.aoMap.value=i.aoMap,n.aoMapIntensity.value=i.aoMapIntensity),i.map?s=i.map:i.specularMap?s=i.specularMap:i.displacementMap?s=i.displacementMap:i.normalMap?s=i.normalMap:i.bumpMap?s=i.bumpMap:i.roughnessMap?s=i.roughnessMap:i.metalnessMap?s=i.metalnessMap:i.alphaMap?s=i.alphaMap:i.emissiveMap?s=i.emissiveMap:i.clearcoatMap?s=i.clearcoatMap:i.clearcoatNormalMap?s=i.clearcoatNormalMap:i.clearcoatRoughnessMap?s=i.clearcoatRoughnessMap:i.iridescenceMap?s=i.iridescenceMap:i.iridescenceThicknessMap?s=i.iridescenceThicknessMap:i.specularIntensityMap?s=i.specularIntensityMap:i.specularColorMap?s=i.specularColorMap:i.transmissionMap?s=i.transmissionMap:i.thicknessMap?s=i.thicknessMap:i.sheenColorMap?s=i.sheenColorMap:i.sheenRoughnessMap&&(s=i.sheenRoughnessMap),void 0!==s&&(s.isWebGLRenderTarget&&(s=s.texture),!0===s.matrixAutoUpdate&&s.updateMatrix(),n.uvTransform.value.copy(s.matrix)),i.aoMap?o=i.aoMap:i.lightMap&&(o=i.lightMap),void 0!==o&&(o.isWebGLRenderTarget&&(o=o.texture),!0===o.matrixAutoUpdate&&o.updateMatrix(),n.uv2Transform.value.copy(o.matrix))}return{refreshFogUniforms:function(t,n){n.color.getRGB(t.fogColor.value,As(e)),n.isFog?(t.fogNear.value=n.near,t.fogFar.value=n.far):n.isFogExp2&&(t.fogDensity.value=n.density)},refreshMaterialUniforms:function(e,i,r,s,o){i.isMeshBasicMaterial||i.isMeshLambertMaterial?n(e,i):i.isMeshToonMaterial?(n(e,i),function(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}(e,i)):i.isMeshPhongMaterial?(n(e,i),function(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}(e,i)):i.isMeshStandardMaterial?(n(e,i),function(e,n){e.roughness.value=n.roughness,e.metalness.value=n.metalness,n.roughnessMap&&(e.roughnessMap.value=n.roughnessMap),n.metalnessMap&&(e.metalnessMap.value=n.metalnessMap);t.get(n).envMap&&(e.envMapIntensity.value=n.envMapIntensity)}(e,i),i.isMeshPhysicalMaterial&&function(e,t,n){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap)),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap),t.clearcoatNormalMap&&(e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),e.clearcoatNormalMap.value=t.clearcoatNormalMap,t.side===g&&e.clearcoatNormalScale.value.negate())),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap)),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=n.texture,e.transmissionSamplerSize.value.set(n.width,n.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap)}(e,i,o)):i.isMeshMatcapMaterial?(n(e,i),function(e,t){t.matcap&&(e.matcap.value=t.matcap)}(e,i)):i.isMeshDepthMaterial?n(e,i):i.isMeshDistanceMaterial?(n(e,i),function(e,t){e.referencePosition.value.copy(t.referencePosition),e.nearDistance.value=t.nearDistance,e.farDistance.value=t.farDistance}(e,i)):i.isMeshNormalMaterial?n(e,i):i.isLineBasicMaterial?(function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity}(e,i),i.isLineDashedMaterial&&function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(e,i)):i.isPointsMaterial?function(e,t,n,i){let r;e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*n,e.scale.value=.5*i,t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest),t.map?r=t.map:t.alphaMap&&(r=t.alphaMap),void 0!==r&&(!0===r.matrixAutoUpdate&&r.updateMatrix(),e.uvTransform.value.copy(r.matrix))}(e,i,r,s):i.isSpriteMaterial?function(e,t){let n;e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest),t.map?n=t.map:t.alphaMap&&(n=t.alphaMap),void 0!==n&&(!0===n.matrixAutoUpdate&&n.updateMatrix(),e.uvTransform.value.copy(n.matrix))}(e,i):i.isShadowMaterial?(e.color.value.copy(i.color),e.opacity.value=i.opacity):i.isShaderMaterial&&(i.uniformsNeedUpdate=!1)}}}function cl(e,t,n,i){let r={},s={},o=[];const a=n.isWebGL2?e.getParameter(35375):0;function l(e,t,n){const i=e.value;if(void 0===n[t])return n[t]=\"number\"==typeof i?i:i.clone(),!0;if(\"number\"==typeof i){if(n[t]!==i)return n[t]=i,!0}else{const e=n[t];if(!1===e.equals(i))return e.copy(i),!0}return!1}function c(e){const t=e.value,n={boundary:0,storage:0};return\"number\"==typeof t?(n.boundary=4,n.storage=4):t.isVector2?(n.boundary=8,n.storage=8):t.isVector3||t.isColor?(n.boundary=16,n.storage=12):t.isVector4?(n.boundary=16,n.storage=16):t.isMatrix3?(n.boundary=48,n.storage=48):t.isMatrix4?(n.boundary=64,n.storage=64):t.isTexture?console.warn(\"THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.\"):console.warn(\"THREE.WebGLRenderer: Unsupported uniform value type.\",t),n}function h(t){const n=t.target;n.removeEventListener(\"dispose\",h);const i=o.indexOf(n.__bindingPointIndex);o.splice(i,1),e.deleteBuffer(r[n.id]),delete r[n.id],delete s[n.id]}return{bind:function(e,t){const n=t.program;i.uniformBlockBinding(e,n)},update:function(n,u){let d=r[n.id];void 0===d&&(function(e){const t=e.uniforms;let n=0;let i=0;for(let e=0,r=t.length;e\u003Cr;e++){const r=t[e],s=c(r);r.__data=new Float32Array(s.storage/Float32Array.BYTES_PER_ELEMENT),r.__offset=n,e>0&&(i=n%16,0!==i&&16-i-s.boundary\u003C0&&(n+=16-i,r.__offset=n)),n+=s.storage}i=n%16,i>0&&(n+=16-i),e.__size=n,e.__cache={}}(n),d=function(t){const n=function(){for(let e=0;e\u003Ca;e++)if(-1===o.indexOf(e))return o.push(e),e;return console.error(\"THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.\"),0}();t.__bindingPointIndex=n;const i=e.createBuffer(),r=t.__size,s=t.usage;return e.bindBuffer(35345,i),e.bufferData(35345,r,s),e.bindBuffer(35345,null),e.bindBufferBase(35345,n,i),i}(n),r[n.id]=d,n.addEventListener(\"dispose\",h));const p=u.program;i.updateUBOMapping(n,p);const A=t.render.frame;s[n.id]!==A&&(function(t){const n=r[t.id],i=t.uniforms,s=t.__cache;e.bindBuffer(35345,n);for(let t=0,n=i.length;t\u003Cn;t++){const n=i[t];if(!0===l(n,t,s)){const t=n.value,i=n.__offset;\"number\"==typeof t?(n.__data[0]=t,e.bufferSubData(35345,i,n.__data)):(n.value.isMatrix3?(n.__data[0]=n.value.elements[0],n.__data[1]=n.value.elements[1],n.__data[2]=n.value.elements[2],n.__data[3]=n.value.elements[0],n.__data[4]=n.value.elements[3],n.__data[5]=n.value.elements[4],n.__data[6]=n.value.elements[5],n.__data[7]=n.value.elements[0],n.__data[8]=n.value.elements[6],n.__data[9]=n.value.elements[7],n.__data[10]=n.value.elements[8],n.__data[11]=n.value.elements[0]):t.toArray(n.__data),e.bufferSubData(35345,i,n.__data))}}e.bindBuffer(35345,null)}(n),s[n.id]=A)},dispose:function(){for(const t in r)e.deleteBuffer(r[t]);o=[],r={},s={}}}}function hl(e={}){this.isWebGLRenderer=!0;const t=void 0!==e.canvas?e.canvas:function(){const e=On(\"canvas\");return e.style.display=\"block\",e}(),n=void 0!==e.context?e.context:null,i=void 0===e.depth||e.depth,r=void 0===e.stencil||e.stencil,o=void 0!==e.antialias&&e.antialias,a=void 0===e.premultipliedAlpha||e.premultipliedAlpha,l=void 0!==e.preserveDrawingBuffer&&e.preserveDrawingBuffer,c=void 0!==e.powerPreference?e.powerPreference:\"default\",h=void 0!==e.failIfMajorPerformanceCaveat&&e.failIfMajorPerformanceCaveat;let u;u=null!==n?n.getContextAttributes().alpha:void 0!==e.alpha&&e.alpha;let d=null,p=null;const A=[],f=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=Dt,this.physicallyCorrectLights=!1,this.toneMapping=Z,this.toneMappingExposure=1;const y=this;let E=!1,b=0,x=0,w=null,C=-1,M=null;const _=new ti,I=new ti;let B=null,S=t.width,T=t.height,L=1,D=null,R=null;const P=new ti(0,0,S,T),k=new ti(0,0,S,T);let F=!1;const O=new Ss;let Q=!1,U=!1,N=null;const G=new Ui,z=new Ln,H=new ci,V={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function W(){return null===w?L:1}let j,q,Y,X,J,K,$,ee,te,ne,ie,re,se,oe,ae,le,ce,he,ue,de,pe,Ae,fe,me,ge=n;function ve(e,n){for(let i=0;i\u003Ce.length;i++){const r=e[i],s=t.getContext(r,n);if(null!==s)return s}return null}try{const e={alpha:!0,depth:i,stencil:r,antialias:o,premultipliedAlpha:a,preserveDrawingBuffer:l,powerPreference:c,failIfMajorPerformanceCaveat:h};if(\"setAttribute\"in t&&t.setAttribute(\"data-engine\",`three.js r${s}`),t.addEventListener(\"webglcontextlost\",xe,!1),t.addEventListener(\"webglcontextrestored\",Ce,!1),t.addEventListener(\"webglcontextcreationerror\",Me,!1),null===ge){const t=[\"webgl2\",\"webgl\",\"experimental-webgl\"];if(!0===y.isWebGL1Renderer&&t.shift(),ge=ve(t,e),null===ge)throw ve(t)?new Error(\"Error creating WebGL context with your selected attributes.\"):new Error(\"Error creating WebGL context.\")}void 0===ge.getShaderPrecisionFormat&&(ge.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(e){throw console.error(\"THREE.WebGLRenderer: \"+e.message),e}function ye(){j=new io(ge),q=new Ns(ge,j,e),j.init(q),Ae=new Za(ge,j,q),Y=new Ja(ge,j,q),X=new oo(ge),J=new Fa,K=new Ka(ge,j,Y,J,q,Ae,X),$=new zs(y),ee=new no(y),te=new Ls(ge,q),fe=new Qs(ge,j,te,q),ne=new ro(ge,te,X,fe),ie=new ho(ge,ne,te,X),ue=new co(ge,q,K),le=new Gs(J),re=new ka(y,$,ee,j,q,fe,le),se=new ll(y,J),oe=new Na,ae=new ja(j,q),he=new Os(y,$,ee,Y,ie,u,a),ce=new Xa(y,ie,q),me=new cl(ge,X,q,Y),de=new Us(ge,j,X,q),pe=new so(ge,j,X,q),X.programs=re.programs,y.capabilities=q,y.extensions=j,y.properties=J,y.renderLists=oe,y.shadowMap=ce,y.state=Y,y.info=X}ye();const Ee=\"undefined\"!=typeof navigator&&\"xr\"in navigator?new al(y,ge):new il(y);function xe(e){e.preventDefault(),console.log(\"THREE.WebGLRenderer: Context Lost.\"),E=!0}function Ce(){console.log(\"THREE.WebGLRenderer: Context Restored.\"),E=!1;const e=X.autoReset,t=ce.enabled,n=ce.autoUpdate,i=ce.needsUpdate,r=ce.type;ye(),X.autoReset=e,ce.enabled=t,ce.autoUpdate=n,ce.needsUpdate=i,ce.type=r}function Me(e){console.error(\"THREE.WebGLRenderer: A WebGL context could not be created. Reason: \",e.statusMessage)}function _e(e){const t=e.target;t.removeEventListener(\"dispose\",_e),function(e){(function(e){const t=J.get(e).programs;void 0!==t&&(t.forEach((function(e){re.releaseProgram(e)})),e.isShaderMaterial&&re.releaseShaderCache(e))})(e),J.remove(e)}(t)}this.xr=Ee,this.getContext=function(){return ge},this.getContextAttributes=function(){return ge.getContextAttributes()},this.forceContextLoss=function(){const e=j.get(\"WEBGL_lose_context\");e&&e.loseContext()},this.forceContextRestore=function(){const e=j.get(\"WEBGL_lose_context\");e&&e.restoreContext()},this.getPixelRatio=function(){return L},this.setPixelRatio=function(e){void 0!==e&&(L=e,this.setSize(S,T,!1))},this.getSize=function(e){return e.set(S,T)},this.setSize=function(e,n,i){Ee.isPresenting?console.warn(\"THREE.WebGLRenderer: Can't change size while VR device is presenting.\"):(S=e,T=n,t.width=Math.floor(e*L),t.height=Math.floor(n*L),!1!==i&&(t.style.width=e+\"px\",t.style.height=n+\"px\"),this.setViewport(0,0,e,n))},this.getDrawingBufferSize=function(e){return e.set(S*L,T*L).floor()},this.setDrawingBufferSize=function(e,n,i){S=e,T=n,L=i,t.width=Math.floor(e*i),t.height=Math.floor(n*i),this.setViewport(0,0,e,n)},this.getCurrentViewport=function(e){return e.copy(_)},this.getViewport=function(e){return e.copy(P)},this.setViewport=function(e,t,n,i){e.isVector4?P.set(e.x,e.y,e.z,e.w):P.set(e,t,n,i),Y.viewport(_.copy(P).multiplyScalar(L).floor())},this.getScissor=function(e){return e.copy(k)},this.setScissor=function(e,t,n,i){e.isVector4?k.set(e.x,e.y,e.z,e.w):k.set(e,t,n,i),Y.scissor(I.copy(k).multiplyScalar(L).floor())},this.getScissorTest=function(){return F},this.setScissorTest=function(e){Y.setScissorTest(F=e)},this.setOpaqueSort=function(e){D=e},this.setTransparentSort=function(e){R=e},this.getClearColor=function(e){return e.copy(he.getClearColor())},this.setClearColor=function(){he.setClearColor.apply(he,arguments)},this.getClearAlpha=function(){return he.getClearAlpha()},this.setClearAlpha=function(){he.setClearAlpha.apply(he,arguments)},this.clear=function(e=!0,t=!0,n=!0){let i=0;e&&(i|=16384),t&&(i|=256),n&&(i|=1024),ge.clear(i)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener(\"webglcontextlost\",xe,!1),t.removeEventListener(\"webglcontextrestored\",Ce,!1),t.removeEventListener(\"webglcontextcreationerror\",Me,!1),oe.dispose(),ae.dispose(),J.dispose(),$.dispose(),ee.dispose(),ie.dispose(),fe.dispose(),me.dispose(),re.dispose(),Ee.dispose(),Ee.removeEventListener(\"sessionstart\",Be),Ee.removeEventListener(\"sessionend\",Le),N&&(N.dispose(),N=null),De.stop()},this.renderBufferDirect=function(e,t,n,i,r,s){null===t&&(t=V);const o=r.isMesh&&r.matrixWorld.determinant()\u003C0,a=function(e,t,n,i,r){!0!==t.isScene&&(t=V),K.resetTextureUnits();const s=t.fog,o=i.isMeshStandardMaterial?t.environment:null,a=null===w?y.outputEncoding:!0===w.isXRRenderTarget?w.texture.encoding:Dt,l=(i.isMeshStandardMaterial?ee:$).get(i.envMap||o),c=!0===i.vertexColors&&!!n.attributes.color&&4===n.attributes.color.itemSize,h=!!i.normalMap&&!!n.attributes.tangent,u=!!n.morphAttributes.position,d=!!n.morphAttributes.normal,A=!!n.morphAttributes.color,f=i.toneMapped?y.toneMapping:Z,m=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,g=void 0!==m?m.length:0,v=J.get(i),E=p.state.lights;if(!0===Q&&(!0===U||e!==M)){const t=e===M&&i.id===C;le.setState(i,e,t)}let b=!1;i.version===v.__version?v.needsLights&&v.lightsStateVersion!==E.state.version||v.outputEncoding!==a||r.isInstancedMesh&&!1===v.instancing?b=!0:r.isInstancedMesh||!0!==v.instancing?r.isSkinnedMesh&&!1===v.skinning?b=!0:r.isSkinnedMesh||!0!==v.skinning?v.envMap!==l||!0===i.fog&&v.fog!==s?b=!0:void 0===v.numClippingPlanes||v.numClippingPlanes===le.numPlanes&&v.numIntersection===le.numIntersection?(v.vertexAlphas!==c||v.vertexTangents!==h||v.morphTargets!==u||v.morphNormals!==d||v.morphColors!==A||v.toneMapping!==f||!0===q.isWebGL2&&v.morphTargetsCount!==g)&&(b=!0):b=!0:b=!0:b=!0:(b=!0,v.__version=i.version);let x=v.currentProgram;!0===b&&(x=Qe(i,t,r));let _=!1,I=!1,B=!1;const S=x.getUniforms(),D=v.uniforms;if(Y.useProgram(x.program)&&(_=!0,I=!0,B=!0),i.id!==C&&(C=i.id,I=!0),_||M!==e){if(S.setValue(ge,\"projectionMatrix\",e.projectionMatrix),q.logarithmicDepthBuffer&&S.setValue(ge,\"logDepthBufFC\",2/(Math.log(e.far+1)/Math.LN2)),M!==e&&(M=e,I=!0,B=!0),i.isShaderMaterial||i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshStandardMaterial||i.envMap){const t=S.map.cameraPosition;void 0!==t&&t.setValue(ge,H.setFromMatrixPosition(e.matrixWorld))}(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&S.setValue(ge,\"isOrthographic\",!0===e.isOrthographicCamera),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial||i.isShadowMaterial||r.isSkinnedMesh)&&S.setValue(ge,\"viewMatrix\",e.matrixWorldInverse)}if(r.isSkinnedMesh){S.setOptional(ge,r,\"bindMatrix\"),S.setOptional(ge,r,\"bindMatrixInverse\");const e=r.skeleton;e&&(q.floatVertexTextures?(null===e.boneTexture&&e.computeBoneTexture(),S.setValue(ge,\"boneTexture\",e.boneTexture,K),S.setValue(ge,\"boneTextureSize\",e.boneTextureSize)):console.warn(\"THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.\"))}const R=n.morphAttributes;var P,k;if((void 0!==R.position||void 0!==R.normal||void 0!==R.color&&!0===q.isWebGL2)&&ue.update(r,n,i,x),(I||v.receiveShadow!==r.receiveShadow)&&(v.receiveShadow=r.receiveShadow,S.setValue(ge,\"receiveShadow\",r.receiveShadow)),i.isMeshGouraudMaterial&&null!==i.envMap&&(D.envMap.value=l,D.flipEnvMap.value=l.isCubeTexture&&!1===l.isRenderTargetTexture?-1:1),I&&(S.setValue(ge,\"toneMappingExposure\",y.toneMappingExposure),v.needsLights&&(k=B,(P=D).ambientLightColor.needsUpdate=k,P.lightProbe.needsUpdate=k,P.directionalLights.needsUpdate=k,P.directionalLightShadows.needsUpdate=k,P.pointLights.needsUpdate=k,P.pointLightShadows.needsUpdate=k,P.spotLights.needsUpdate=k,P.spotLightShadows.needsUpdate=k,P.rectAreaLights.needsUpdate=k,P.hemisphereLights.needsUpdate=k),s&&!0===i.fog&&se.refreshFogUniforms(D,s),se.refreshMaterialUniforms(D,i,L,T,N),fa.upload(ge,v.uniformsList,D,K)),i.isShaderMaterial&&!0===i.uniformsNeedUpdate&&(fa.upload(ge,v.uniformsList,D,K),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&S.setValue(ge,\"center\",r.center),S.setValue(ge,\"modelViewMatrix\",r.modelViewMatrix),S.setValue(ge,\"normalMatrix\",r.normalMatrix),S.setValue(ge,\"modelMatrix\",r.matrixWorld),i.isShaderMaterial||i.isRawShaderMaterial){const e=i.uniformsGroups;for(let t=0,n=e.length;t\u003Cn;t++)if(q.isWebGL2){const n=e[t];me.update(n,x),me.bind(n,x)}else console.warn(\"THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.\")}return x}(e,t,n,i,r);Y.setMaterial(i,o);let l=n.index,c=1;!0===i.wireframe&&(l=ne.getWireframeAttribute(n),c=2);const h=n.drawRange,u=n.attributes.position;let d=h.start*c,A=(h.start+h.count)*c;null!==s&&(d=Math.max(d,s.start*c),A=Math.min(A,(s.start+s.count)*c)),null!==l?(d=Math.max(d,0),A=Math.min(A,l.count)):null!=u&&(d=Math.max(d,0),A=Math.min(A,u.count));const f=A-d;if(f\u003C0||f===1/0)return;let m;fe.setup(r,i,a,n,l);let g=de;if(null!==l&&(m=te.get(l),g=pe,g.setIndex(m)),r.isMesh)!0===i.wireframe?(Y.setLineWidth(i.wireframeLinewidth*W()),g.setMode(1)):g.setMode(4);else if(r.isLine){let e=i.linewidth;void 0===e&&(e=1),Y.setLineWidth(e*W()),r.isLineSegments?g.setMode(1):r.isLineLoop?g.setMode(2):g.setMode(3)}else r.isPoints?g.setMode(0):r.isSprite&&g.setMode(4);if(r.isInstancedMesh)g.renderInstances(d,f,r.count);else if(n.isInstancedBufferGeometry){const e=void 0!==n._maxInstanceCount?n._maxInstanceCount:1/0,t=Math.min(n.instanceCount,e);g.renderInstances(d,f,t)}else g.render(d,f)},this.compile=function(e,t){function n(e,t,n){!0===e.transparent&&e.side===v?(e.side=g,e.needsUpdate=!0,Qe(e,t,n),e.side=m,e.needsUpdate=!0,Qe(e,t,n),e.side=v):Qe(e,t,n)}p=ae.get(e),p.init(),f.push(p),e.traverseVisible((function(e){e.isLight&&e.layers.test(t.layers)&&(p.pushLight(e),e.castShadow&&p.pushShadow(e))})),p.setupLights(y.physicallyCorrectLights),e.traverse((function(t){const i=t.material;if(i)if(Array.isArray(i))for(let r=0;r\u003Ci.length;r++)n(i[r],e,t);else n(i,e,t)})),f.pop(),p=null};let Ie=null;function Be(){De.stop()}function Le(){De.start()}const De=new Ts;function Re(e,t,n,i){if(!1===e.visible)return;if(e.layers.test(t.layers))if(e.isGroup)n=e.renderOrder;else if(e.isLOD)!0===e.autoUpdate&&e.update(t);else if(e.isLight)p.pushLight(e),e.castShadow&&p.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||O.intersectsSprite(e)){i&&H.setFromMatrixPosition(e.matrixWorld).applyMatrix4(G);const t=ie.update(e),r=e.material;r.visible&&d.push(e,t,r,n,H.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(e.isSkinnedMesh&&e.skeleton.frame!==X.render.frame&&(e.skeleton.update(),e.skeleton.frame=X.render.frame),!e.frustumCulled||O.intersectsObject(e))){i&&H.setFromMatrixPosition(e.matrixWorld).applyMatrix4(G);const t=ie.update(e),r=e.material;if(Array.isArray(r)){const i=t.groups;for(let s=0,o=i.length;s\u003Co;s++){const o=i[s],a=r[o.materialIndex];a&&a.visible&&d.push(e,t,a,n,H.z,o)}}else r.visible&&d.push(e,t,r,n,H.z,null)}const r=e.children;for(let e=0,s=r.length;e\u003Cs;e++)Re(r[e],t,n,i)}function Pe(e,t,n,i){const r=e.opaque,s=e.transmissive,a=e.transparent;p.setupLightsView(n),s.length>0&&function(e,t,n){const i=q.isWebGL2;null===N&&(N=new ni(1,1,{generateMipmaps:!0,type:j.has(\"EXT_color_buffer_half_float\")?Te:we,minFilter:be,samples:i&&!0===o?4:0})),y.getDrawingBufferSize(z),i?N.setSize(z.x,z.y):N.setSize(In(z.x),In(z.y));const r=y.getRenderTarget();y.setRenderTarget(N),y.clear();const s=y.toneMapping;y.toneMapping=Z,ke(e,t,n),y.toneMapping=s,K.updateMultisampleRenderTarget(N),K.updateRenderTargetMipmap(N),y.setRenderTarget(r)}(r,t,n),i&&Y.viewport(_.copy(i)),r.length>0&&ke(r,t,n),s.length>0&&ke(s,t,n),a.length>0&&ke(a,t,n),Y.buffers.depth.setTest(!0),Y.buffers.depth.setMask(!0),Y.buffers.color.setMask(!0),Y.setPolygonOffset(!1)}function ke(e,t,n){const i=!0===t.isScene?t.overrideMaterial:null;for(let r=0,s=e.length;r\u003Cs;r++){const s=e[r],o=s.object,a=s.geometry,l=null===i?s.material:i,c=s.group;o.layers.test(n.layers)&&Oe(o,t,n,a,l,c)}}function Oe(e,t,n,i,r,s){e.onBeforeRender(y,t,n,i,r,s),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),r.onBeforeRender(y,t,n,i,e,s),!0===r.transparent&&r.side===v?(r.side=g,r.needsUpdate=!0,y.renderBufferDirect(n,t,i,r,e,s),r.side=m,r.needsUpdate=!0,y.renderBufferDirect(n,t,i,r,e,s),r.side=v):y.renderBufferDirect(n,t,i,r,e,s),e.onAfterRender(y,t,n,i,r,s)}function Qe(e,t,n){!0!==t.isScene&&(t=V);const i=J.get(e),r=p.state.lights,s=p.state.shadowsArray,o=r.state.version,a=re.getParameters(e,r.state,s,t,n),l=re.getProgramCacheKey(a);let c=i.programs;i.environment=e.isMeshStandardMaterial?t.environment:null,i.fog=t.fog,i.envMap=(e.isMeshStandardMaterial?ee:$).get(e.envMap||i.environment),void 0===c&&(e.addEventListener(\"dispose\",_e),c=new Map,i.programs=c);let h=c.get(l);if(void 0!==h){if(i.currentProgram===h&&i.lightsStateVersion===o)return Ue(e,a),h}else a.uniforms=re.getUniforms(e),e.onBuild(n,a,y),e.onBeforeCompile(a,y),h=re.acquireProgram(a,l),c.set(l,h),i.uniforms=a.uniforms;const u=i.uniforms;(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(u.clippingPlanes=le.uniform),Ue(e,a),i.needsLights=function(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&!0===e.lights}(e),i.lightsStateVersion=o,i.needsLights&&(u.ambientLightColor.value=r.state.ambient,u.lightProbe.value=r.state.probe,u.directionalLights.value=r.state.directional,u.directionalLightShadows.value=r.state.directionalShadow,u.spotLights.value=r.state.spot,u.spotLightShadows.value=r.state.spotShadow,u.rectAreaLights.value=r.state.rectArea,u.ltc_1.value=r.state.rectAreaLTC1,u.ltc_2.value=r.state.rectAreaLTC2,u.pointLights.value=r.state.point,u.pointLightShadows.value=r.state.pointShadow,u.hemisphereLights.value=r.state.hemi,u.directionalShadowMap.value=r.state.directionalShadowMap,u.directionalShadowMatrix.value=r.state.directionalShadowMatrix,u.spotShadowMap.value=r.state.spotShadowMap,u.spotLightMatrix.value=r.state.spotLightMatrix,u.spotLightMap.value=r.state.spotLightMap,u.pointShadowMap.value=r.state.pointShadowMap,u.pointShadowMatrix.value=r.state.pointShadowMatrix);const d=h.getUniforms(),A=fa.seqWithValue(d.seq,u);return i.currentProgram=h,i.uniformsList=A,h}function Ue(e,t){const n=J.get(e);n.outputEncoding=t.outputEncoding,n.instancing=t.instancing,n.skinning=t.skinning,n.morphTargets=t.morphTargets,n.morphNormals=t.morphNormals,n.morphColors=t.morphColors,n.morphTargetsCount=t.morphTargetsCount,n.numClippingPlanes=t.numClippingPlanes,n.numIntersection=t.numClipIntersection,n.vertexAlphas=t.vertexAlphas,n.vertexTangents=t.vertexTangents,n.toneMapping=t.toneMapping}var Ne;De.setAnimationLoop((function(e){Ie&&Ie(e)})),\"undefined\"!=typeof self&&De.setContext(self),this.setAnimationLoop=function(e){Ie=e,Ee.setAnimationLoop(e),null===e?De.stop():De.start()},Ee.addEventListener(\"sessionstart\",Be),Ee.addEventListener(\"sessionend\",Le),this.render=function(e,t){if(void 0!==t&&!0!==t.isCamera)return void console.error(\"THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.\");if(!0===E)return;!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===t.parent&&!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),!0===Ee.enabled&&!0===Ee.isPresenting&&(!0===Ee.cameraAutoUpdate&&Ee.updateCamera(t),t=Ee.getCamera()),!0===e.isScene&&e.onBeforeRender(y,e,t,w),p=ae.get(e,f.length),p.init(),f.push(p),G.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),O.setFromProjectionMatrix(G),U=this.localClippingEnabled,Q=le.init(this.clippingPlanes,U,t),d=oe.get(e,A.length),d.init(),A.push(d),Re(e,t,0,y.sortObjects),d.finish(),!0===y.sortObjects&&d.sort(D,R),!0===Q&&le.beginShadows();const n=p.state.shadowsArray;if(ce.render(n,e,t),!0===Q&&le.endShadows(),!0===this.info.autoReset&&this.info.reset(),he.render(d,e),p.setupLights(y.physicallyCorrectLights),t.isArrayCamera){const n=t.cameras;for(let t=0,i=n.length;t\u003Ci;t++){const i=n[t];Pe(d,e,i,i.viewport)}}else Pe(d,e,t);null!==w&&(K.updateMultisampleRenderTarget(w),K.updateRenderTargetMipmap(w)),!0===e.isScene&&e.onAfterRender(y,e,t),Ee.enabled&&Ee.submitFrame&&Ee.submitFrame(),fe.resetDefaultState(),C=-1,M=null,f.pop(),p=f.length>0?f[f.length-1]:null,A.pop(),d=A.length>0?A[A.length-1]:null},this.setTexture2D=(Ne=!1,function(e,t){e&&e.isWebGLRenderTarget&&(Ne||(console.warn(\"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\"),Ne=!0),e=e.texture),K.setTexture2D(e,t)}),this.getActiveCubeFace=function(){return b},this.getActiveMipmapLevel=function(){return x},this.getRenderTarget=function(){return w},this.setRenderTargetTextures=function(e,t,n){J.get(e.texture).__webglTexture=t,J.get(e.depthTexture).__webglTexture=n;const i=J.get(e);i.__hasExternalTextures=!0,i.__hasExternalTextures&&(i.__autoAllocateDepthBuffer=void 0===n,i.__autoAllocateDepthBuffer||!0===j.has(\"WEBGL_multisampled_render_to_texture\")&&(console.warn(\"THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided\"),i.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(e,t){const n=J.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,n=0){w=e,b=t,x=n;let i=!0,r=null,s=!1,o=!1;if(e){const n=J.get(e);void 0!==n.__useDefaultFramebuffer?(Y.bindFramebuffer(36160,null),i=!1):void 0===n.__webglFramebuffer?K.setupRenderTarget(e):n.__hasExternalTextures&&K.rebindTextures(e,J.get(e.texture).__webglTexture,J.get(e.depthTexture).__webglTexture);const a=e.texture;(a.isData3DTexture||a.isDataArrayTexture||a.isCompressedArrayTexture)&&(o=!0);const l=J.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=l[t],s=!0):r=q.isWebGL2&&e.samples>0&&!1===K.useMultisampledRTT(e)?J.get(e).__webglMultisampledFramebuffer:l,_.copy(e.viewport),I.copy(e.scissor),B=e.scissorTest}else _.copy(P).multiplyScalar(L).floor(),I.copy(k).multiplyScalar(L).floor(),B=F;if(Y.bindFramebuffer(36160,r)&&q.drawBuffers&&i&&Y.drawBuffers(e,r),Y.viewport(_),Y.scissor(I),Y.setScissorTest(B),s){const i=J.get(e.texture);ge.framebufferTexture2D(36160,36064,34069+t,i.__webglTexture,n)}else if(o){const i=J.get(e.texture),r=t||0;ge.framebufferTextureLayer(36160,36064,i.__webglTexture,n||0,r)}C=-1},this.readRenderTargetPixels=function(e,t,n,i,r,s,o){if(!e||!e.isWebGLRenderTarget)return void console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.\");let a=J.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==o&&(a=a[o]),a){Y.bindFramebuffer(36160,a);try{const o=e.texture,a=o.format,l=o.type;if(a!==Fe&&Ae.convert(a)!==ge.getParameter(35739))return void console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.\");const c=l===Te&&(j.has(\"EXT_color_buffer_half_float\")||q.isWebGL2&&j.has(\"EXT_color_buffer_float\"));if(!(l===we||Ae.convert(l)===ge.getParameter(35738)||l===Se&&(q.isWebGL2||j.has(\"OES_texture_float\")||j.has(\"WEBGL_color_buffer_float\"))||c))return void console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.\");t>=0&&t\u003C=e.width-i&&n>=0&&n\u003C=e.height-r&&ge.readPixels(t,n,i,r,Ae.convert(a),Ae.convert(l),s)}finally{const e=null!==w?J.get(w).__webglFramebuffer:null;Y.bindFramebuffer(36160,e)}}},this.copyFramebufferToTexture=function(e,t,n=0){const i=Math.pow(2,-n),r=Math.floor(t.image.width*i),s=Math.floor(t.image.height*i);K.setTexture2D(t,0),ge.copyTexSubImage2D(3553,n,0,0,e.x,e.y,r,s),Y.unbindTexture()},this.copyTextureToTexture=function(e,t,n,i=0){const r=t.image.width,s=t.image.height,o=Ae.convert(n.format),a=Ae.convert(n.type);K.setTexture2D(n,0),ge.pixelStorei(37440,n.flipY),ge.pixelStorei(37441,n.premultiplyAlpha),ge.pixelStorei(3317,n.unpackAlignment),t.isDataTexture?ge.texSubImage2D(3553,i,e.x,e.y,r,s,o,a,t.image.data):t.isCompressedTexture?ge.compressedTexSubImage2D(3553,i,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,o,t.mipmaps[0].data):ge.texSubImage2D(3553,i,e.x,e.y,o,a,t.image),0===i&&n.generateMipmaps&&ge.generateMipmap(3553),Y.unbindTexture()},this.copyTextureToTexture3D=function(e,t,n,i,r=0){if(y.isWebGL1Renderer)return void console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.\");const s=e.max.x-e.min.x+1,o=e.max.y-e.min.y+1,a=e.max.z-e.min.z+1,l=Ae.convert(i.format),c=Ae.convert(i.type);let h;if(i.isData3DTexture)K.setTexture3D(i,0),h=32879;else{if(!i.isDataArrayTexture)return void console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.\");K.setTexture2DArray(i,0),h=35866}ge.pixelStorei(37440,i.flipY),ge.pixelStorei(37441,i.premultiplyAlpha),ge.pixelStorei(3317,i.unpackAlignment);const u=ge.getParameter(3314),d=ge.getParameter(32878),p=ge.getParameter(3316),A=ge.getParameter(3315),f=ge.getParameter(32877),m=n.isCompressedTexture?n.mipmaps[0]:n.image;ge.pixelStorei(3314,m.width),ge.pixelStorei(32878,m.height),ge.pixelStorei(3316,e.min.x),ge.pixelStorei(3315,e.min.y),ge.pixelStorei(32877,e.min.z),n.isDataTexture||n.isData3DTexture?ge.texSubImage3D(h,r,t.x,t.y,t.z,s,o,a,l,c,m.data):n.isCompressedArrayTexture?(console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.\"),ge.compressedTexSubImage3D(h,r,t.x,t.y,t.z,s,o,a,l,m.data)):ge.texSubImage3D(h,r,t.x,t.y,t.z,s,o,a,l,c,m),ge.pixelStorei(3314,u),ge.pixelStorei(32878,d),ge.pixelStorei(3316,p),ge.pixelStorei(3315,A),ge.pixelStorei(32877,f),0===r&&i.generateMipmaps&&ge.generateMipmap(h),Y.unbindTexture()},this.initTexture=function(e){e.isCubeTexture?K.setTextureCube(e,0):e.isData3DTexture?K.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?K.setTexture2DArray(e,0):K.setTexture2D(e,0),Y.unbindTexture()},this.resetState=function(){b=0,x=0,w=null,Y.reset(),fe.reset()},\"undefined\"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\",{detail:this}))}class ul extends hl{}ul.prototype.isWebGL1Renderer=!0;class dl{constructor(e,t=25e-5){this.isFogExp2=!0,this.name=\"\",this.color=new Yn(e),this.density=t}clone(){return new dl(this.color,this.density)}toJSON(){return{type:\"FogExp2\",color:this.color.getHex(),density:this.density}}}class pl{constructor(e,t=1,n=1e3){this.isFog=!0,this.name=\"\",this.color=new Yn(e),this.near=t,this.far=n}clone(){return new pl(this.color,this.near,this.far)}toJSON(){return{type:\"Fog\",color:this.color.getHex(),near:this.near,far:this.far}}}class Al extends hr{constructor(){super(),this.isScene=!0,this.type=\"Scene\",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,\"undefined\"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.backgroundIntensity=this.backgroundIntensity),t}get autoUpdate(){return console.warn(\"THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.\"),this.matrixWorldAutoUpdate}set autoUpdate(e){console.warn(\"THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.\"),this.matrixWorldAutoUpdate=e}}class fl{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=rn,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=bn()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;i\u003Cr;i++)this.array[e+i]=t.array[n+i];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=bn()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=bn()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const ml=new ci;class gl{constructor(e,t,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name=\"\",this.data=e,this.itemSize=t,this.offset=n,this.normalized=!0===i}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t\u003Cn;t++)ml.fromBufferAttribute(this,t),ml.applyMatrix4(e),this.setXYZ(t,ml.x,ml.y,ml.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t\u003Cn;t++)ml.fromBufferAttribute(this,t),ml.applyNormalMatrix(e),this.setXYZ(t,ml.x,ml.y,ml.z);return this}transformDirection(e){for(let t=0,n=this.count;t\u003Cn;t++)ml.fromBufferAttribute(this,t),ml.transformDirection(e),this.setXYZ(t,ml.x,ml.y,ml.z);return this}setX(e,t){return this.normalized&&(t=Sn(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=Sn(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=Sn(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=Sn(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=Bn(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=Bn(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=Bn(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=Bn(t,this.array)),t}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=Sn(t,this.array),n=Sn(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,i){return e=e*this.data.stride+this.offset,this.normalized&&(t=Sn(t,this.array),n=Sn(n,this.array),i=Sn(i,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=Sn(t,this.array),n=Sn(n,this.array),i=Sn(i,this.array),r=Sn(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this.data.array[e+3]=r,this}clone(e){if(void 0===e){console.log(\"THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.\");const e=[];for(let t=0;t\u003Cthis.count;t++){const n=t*this.data.stride+this.offset;for(let t=0;t\u003Cthis.itemSize;t++)e.push(this.data.array[n+t])}return new Ir(new this.array.constructor(e),this.itemSize,this.normalized)}return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new gl(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(void 0===e){console.log(\"THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.\");const e=[];for(let t=0;t\u003Cthis.count;t++){const n=t*this.data.stride+this.offset;for(let t=0;t\u003Cthis.itemSize;t++)e.push(this.data.array[n+t])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}class vl extends wr{constructor(e){super(),this.isSpriteMaterial=!0,this.type=\"SpriteMaterial\",this.color=new Yn(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}let yl;const El=new ci,bl=new ci,xl=new ci,wl=new Ln,Cl=new Ln,Ml=new Ui,_l=new ci,Il=new ci,Bl=new ci,Sl=new Ln,Tl=new Ln,Ll=new Ln;class Dl extends hr{constructor(e){if(super(),this.isSprite=!0,this.type=\"Sprite\",void 0===yl){yl=new Wr;const e=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),t=new fl(e,5);yl.setIndex([0,1,2,0,2,3]),yl.setAttribute(\"position\",new gl(t,3,0,!1)),yl.setAttribute(\"uv\",new gl(t,2,3,!1))}this.geometry=yl,this.material=void 0!==e?e:new vl,this.center=new Ln(.5,.5)}raycast(e,t){null===e.camera&&console.error('THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.'),bl.setFromMatrixScale(this.matrixWorld),Ml.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),xl.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&bl.multiplyScalar(-xl.z);const n=this.material.rotation;let i,r;0!==n&&(r=Math.cos(n),i=Math.sin(n));const s=this.center;Rl(_l.set(-.5,-.5,0),xl,s,bl,i,r),Rl(Il.set(.5,-.5,0),xl,s,bl,i,r),Rl(Bl.set(.5,.5,0),xl,s,bl,i,r),Sl.set(0,0),Tl.set(1,0),Ll.set(1,1);let o=e.ray.intersectTriangle(_l,Il,Bl,!1,El);if(null===o&&(Rl(Il.set(-.5,.5,0),xl,s,bl,i,r),Tl.set(0,1),o=e.ray.intersectTriangle(_l,Bl,Il,!1,El),null===o))return;const a=e.ray.origin.distanceTo(El);a\u003Ce.near||a>e.far||t.push({distance:a,point:El.clone(),uv:br.getUV(El,_l,Il,Bl,Sl,Tl,Ll,new Ln),face:null,object:this})}copy(e,t){return super.copy(e,t),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}}function Rl(e,t,n,i,r,s){wl.subVectors(e,n).addScalar(.5).multiply(i),void 0!==r?(Cl.x=s*wl.x-r*wl.y,Cl.y=r*wl.x+s*wl.y):Cl.copy(wl),e.copy(t),e.x+=Cl.x,e.y+=Cl.y,e.applyMatrix4(Ml)}const Pl=new ci,kl=new ci;class Fl extends hr{constructor(){super(),this._currentLevel=0,this.type=\"LOD\",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let e=0,n=t.length;e\u003Cn;e++){const n=t[e];this.addLevel(n.object.clone(),n.distance,n.hysteresis)}return this.autoUpdate=e.autoUpdate,this}addLevel(e,t=0,n=0){t=Math.abs(t);const i=this.levels;let r;for(r=0;r\u003Ci.length&&!(t\u003Ci[r].distance);r++);return i.splice(r,0,{distance:t,hysteresis:n,object:e}),this.add(e),this}getCurrentLevel(){return this._currentLevel}getObjectForDistance(e){const t=this.levels;if(t.length>0){let n,i;for(n=1,i=t.length;n\u003Ci;n++){let i=t[n].distance;if(t[n].object.visible&&(i-=i*t[n].hysteresis),e\u003Ci)break}return t[n-1].object}return null}raycast(e,t){if(this.levels.length>0){Pl.setFromMatrixPosition(this.matrixWorld);const n=e.ray.origin.distanceTo(Pl);this.getObjectForDistance(n).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){Pl.setFromMatrixPosition(e.matrixWorld),kl.setFromMatrixPosition(this.matrixWorld);const n=Pl.distanceTo(kl)/e.zoom;let i,r;for(t[0].object.visible=!0,i=1,r=t.length;i\u003Cr;i++){let e=t[i].distance;if(t[i].object.visible&&(e-=e*t[i].hysteresis),!(n>=e))break;t[i-1].object.visible=!1,t[i].object.visible=!0}for(this._currentLevel=i-1;i\u003Cr;i++)t[i].object.visible=!1}}toJSON(e){const t=super.toJSON(e);!1===this.autoUpdate&&(t.object.autoUpdate=!1),t.object.levels=[];const n=this.levels;for(let e=0,i=n.length;e\u003Ci;e++){const i=n[e];t.object.levels.push({object:i.object.uuid,distance:i.distance,hysteresis:i.hysteresis})}return t}}const Ol=new ci,Ql=new ti,Ul=new ti,Nl=new ci,Gl=new Ui;class zl extends cs{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type=\"SkinnedMesh\",this.bindMode=\"attached\",this.bindMatrix=new Ui,this.bindMatrixInverse=new Ui}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,this}bind(e,t){this.skeleton=e,void 0===t&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new ti,t=this.geometry.attributes.skinWeight;for(let n=0,i=t.count;n\u003Ci;n++){e.fromBufferAttribute(t,n);const i=1/e.manhattanLength();i!==1/0?e.multiplyScalar(i):e.set(1,0,0,0),t.setXYZW(n,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),\"attached\"===this.bindMode?this.bindMatrixInverse.copy(this.matrixWorld).invert():\"detached\"===this.bindMode?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn(\"THREE.SkinnedMesh: Unrecognized bindMode: \"+this.bindMode)}boneTransform(e,t){const n=this.skeleton,i=this.geometry;Ql.fromBufferAttribute(i.attributes.skinIndex,e),Ul.fromBufferAttribute(i.attributes.skinWeight,e),Ol.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let e=0;e\u003C4;e++){const i=Ul.getComponent(e);if(0!==i){const r=Ql.getComponent(e);Gl.multiplyMatrices(n.bones[r].matrixWorld,n.boneInverses[r]),t.addScaledVector(Nl.copy(Ol).applyMatrix4(Gl),i)}}return t.applyMatrix4(this.bindMatrixInverse)}}class Hl extends hr{constructor(){super(),this.isBone=!0,this.type=\"Bone\"}}class Vl extends ei{constructor(e=null,t=1,n=1,i,r,s,o,a,l=pe,c=pe,h,u){super(null,s,o,a,l,c,i,r,h,u),this.isDataTexture=!0,this.image={data:e,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const Wl=new Ui,jl=new Ui;class ql{constructor(e=[],t=[]){this.uuid=bn(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.boneTextureSize=0,this.frame=-1,this.init()}init(){const e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(16*e.length),0===t.length)this.calculateInverses();else if(e.length!==t.length){console.warn(\"THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.\"),this.boneInverses=[];for(let e=0,t=this.bones.length;e\u003Ct;e++)this.boneInverses.push(new Ui)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e\u003Ct;e++){const t=new Ui;this.bones[e]&&t.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(t)}}pose(){for(let e=0,t=this.bones.length;e\u003Ct;e++){const t=this.bones[e];t&&t.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e\u003Ct;e++){const t=this.bones[e];t&&(t.parent&&t.parent.isBone?(t.matrix.copy(t.parent.matrixWorld).invert(),t.matrix.multiply(t.matrixWorld)):t.matrix.copy(t.matrixWorld),t.matrix.decompose(t.position,t.quaternion,t.scale))}}update(){const e=this.bones,t=this.boneInverses,n=this.boneMatrices,i=this.boneTexture;for(let i=0,r=e.length;i\u003Cr;i++){const r=e[i]?e[i].matrixWorld:jl;Wl.multiplyMatrices(r,t[i]),Wl.toArray(n,16*i)}null!==i&&(i.needsUpdate=!0)}clone(){return new ql(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(4*this.bones.length);e=_n(e),e=Math.max(e,4);const t=new Float32Array(e*e*4);t.set(this.boneMatrices);const n=new Vl(t,e,e,Fe,Se);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this.boneTextureSize=e,this}getBoneByName(e){for(let t=0,n=this.bones.length;t\u003Cn;t++){const n=this.bones[t];if(n.name===e)return n}}dispose(){null!==this.boneTexture&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let n=0,i=e.bones.length;n\u003Ci;n++){const i=e.bones[n];let r=t[i];void 0===r&&(console.warn(\"THREE.Skeleton: No bone found with UUID:\",i),r=new Hl),this.bones.push(r),this.boneInverses.push((new Ui).fromArray(e.boneInverses[n]))}return this.init(),this}toJSON(){const e={metadata:{version:4.5,type:\"Skeleton\",generator:\"Skeleton.toJSON\"},bones:[],boneInverses:[]};e.uuid=this.uuid;const t=this.bones,n=this.boneInverses;for(let i=0,r=t.length;i\u003Cr;i++){const r=t[i];e.bones.push(r.uuid);const s=n[i];e.boneInverses.push(s.toArray())}return e}}class Yl extends Ir{constructor(e,t,n,i=1){super(e,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=i}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){const e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}}const Xl=new Ui,Jl=new Ui,Kl=[],Zl=new Ui,$l=new cs;class ec extends cs{constructor(e,t,n){super(e,t),this.isInstancedMesh=!0,this.instanceMatrix=new Yl(new Float32Array(16*n),16),this.instanceColor=null,this.count=n,this.frustumCulled=!1;for(let e=0;e\u003Cn;e++)this.setMatrixAt(e,Zl)}copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMatrix),null!==e.instanceColor&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,this}getColorAt(e,t){t.fromArray(this.instanceColor.array,3*e)}getMatrixAt(e,t){t.fromArray(this.instanceMatrix.array,16*e)}raycast(e,t){const n=this.matrixWorld,i=this.count;if($l.geometry=this.geometry,$l.material=this.material,void 0!==$l.material)for(let r=0;r\u003Ci;r++){this.getMatrixAt(r,Xl),Jl.multiplyMatrices(n,Xl),$l.matrixWorld=Jl,$l.raycast(e,Kl);for(let e=0,n=Kl.length;e\u003Cn;e++){const n=Kl[e];n.instanceId=r,n.object=this,t.push(n)}Kl.length=0}}setColorAt(e,t){null===this.instanceColor&&(this.instanceColor=new Yl(new Float32Array(3*this.instanceMatrix.count),3)),t.toArray(this.instanceColor.array,3*e)}setMatrixAt(e,t){t.toArray(this.instanceMatrix.array,16*e)}updateMorphTargets(){}dispose(){this.dispatchEvent({type:\"dispose\"})}}class tc extends wr{constructor(e){super(),this.isLineBasicMaterial=!0,this.type=\"LineBasicMaterial\",this.color=new Yn(16777215),this.linewidth=1,this.linecap=\"round\",this.linejoin=\"round\",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const nc=new ci,ic=new ci,rc=new Ui,sc=new Qi,oc=new Ti;class ac extends hr{constructor(e=new Wr,t=new tc){super(),this.isLine=!0,this.type=\"Line\",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(null===e.index){const t=e.attributes.position,n=[0];for(let e=1,i=t.count;e\u003Ci;e++)nc.fromBufferAttribute(t,e-1),ic.fromBufferAttribute(t,e),n[e]=n[e-1],n[e]+=nc.distanceTo(ic);e.setAttribute(\"lineDistance\",new Fr(n,1))}else console.warn(\"THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");return this}raycast(e,t){const n=this.geometry,i=this.matrixWorld,r=e.params.Line.threshold,s=n.drawRange;if(null===n.boundingSphere&&n.computeBoundingSphere(),oc.copy(n.boundingSphere),oc.applyMatrix4(i),oc.radius+=r,!1===e.ray.intersectsSphere(oc))return;rc.copy(i).invert(),sc.copy(e.ray).applyMatrix4(rc);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=o*o,l=new ci,c=new ci,h=new ci,u=new ci,d=this.isLineSegments?2:1,p=n.index,A=n.attributes.position;if(null!==p)for(let n=Math.max(0,s.start),i=Math.min(p.count,s.start+s.count)-1;n\u003Ci;n+=d){const i=p.getX(n),r=p.getX(n+1);if(l.fromBufferAttribute(A,i),c.fromBufferAttribute(A,r),sc.distanceSqToSegment(l,c,u,h)>a)continue;u.applyMatrix4(this.matrixWorld);const s=e.ray.origin.distanceTo(u);s\u003Ce.near||s>e.far||t.push({distance:s,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}else for(let n=Math.max(0,s.start),i=Math.min(A.count,s.start+s.count)-1;n\u003Ci;n+=d){if(l.fromBufferAttribute(A,n),c.fromBufferAttribute(A,n+1),sc.distanceSqToSegment(l,c,u,h)>a)continue;u.applyMatrix4(this.matrixWorld);const i=e.ray.origin.distanceTo(u);i\u003Ce.near||i>e.far||t.push({distance:i,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e\u003Ct;e++){const t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}}const lc=new ci,cc=new ci;class hc extends ac{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type=\"LineSegments\"}computeLineDistances(){const e=this.geometry;if(null===e.index){const t=e.attributes.position,n=[];for(let e=0,i=t.count;e\u003Ci;e+=2)lc.fromBufferAttribute(t,e),cc.fromBufferAttribute(t,e+1),n[e]=0===e?0:n[e-1],n[e+1]=n[e]+lc.distanceTo(cc);e.setAttribute(\"lineDistance\",new Fr(n,1))}else console.warn(\"THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");return this}}class uc extends ac{constructor(e,t){super(e,t),this.isLineLoop=!0,this.type=\"LineLoop\"}}class dc extends wr{constructor(e){super(),this.isPointsMaterial=!0,this.type=\"PointsMaterial\",this.color=new Yn(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}const pc=new Ui,Ac=new Qi,fc=new Ti,mc=new ci;class gc extends hr{constructor(e=new Wr,t=new dc){super(),this.isPoints=!0,this.type=\"Points\",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=e.material,this.geometry=e.geometry,this}raycast(e,t){const n=this.geometry,i=this.matrixWorld,r=e.params.Points.threshold,s=n.drawRange;if(null===n.boundingSphere&&n.computeBoundingSphere(),fc.copy(n.boundingSphere),fc.applyMatrix4(i),fc.radius+=r,!1===e.ray.intersectsSphere(fc))return;pc.copy(i).invert(),Ac.copy(e.ray).applyMatrix4(pc);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=o*o,l=n.index,c=n.attributes.position;if(null!==l)for(let n=Math.max(0,s.start),r=Math.min(l.count,s.start+s.count);n\u003Cr;n++){const r=l.getX(n);mc.fromBufferAttribute(c,r),vc(mc,r,a,i,e,t,this)}else for(let n=Math.max(0,s.start),r=Math.min(c.count,s.start+s.count);n\u003Cr;n++)mc.fromBufferAttribute(c,n),vc(mc,n,a,i,e,t,this)}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e\u003Ct;e++){const t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}}function vc(e,t,n,i,r,s,o){const a=Ac.distanceSqToPoint(e);if(a\u003Cn){const n=new ci;Ac.closestPointToPoint(e,n),n.applyMatrix4(i);const l=r.ray.origin.distanceTo(n);if(l\u003Cr.near||l>r.far)return;s.push({distance:l,distanceToRay:Math.sqrt(a),point:n,index:t,face:null,object:o})}}class yc extends ei{constructor(e,t,n,i,r,s,o,a,l){super(e,t,n,i,r,s,o,a,l),this.isVideoTexture=!0,this.minFilter=void 0!==s?s:ve,this.magFilter=void 0!==r?r:ve,this.generateMipmaps=!1;const c=this;\"requestVideoFrameCallback\"in e&&e.requestVideoFrameCallback((function t(){c.needsUpdate=!0,e.requestVideoFrameCallback(t)}))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;!1==\"requestVideoFrameCallback\"in e&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class Ec extends ei{constructor(e,t,n){super({width:e,height:t}),this.isFramebufferTexture=!0,this.format=n,this.magFilter=pe,this.minFilter=pe,this.generateMipmaps=!1,this.needsUpdate=!0}}class bc extends ei{constructor(e,t,n,i,r,s,o,a,l,c,h,u){super(null,s,o,a,l,c,i,r,h,u),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class xc extends bc{constructor(e,t,n,i,r,s){super(e,t,n,r,s),this.isCompressedArrayTexture=!0,this.image.depth=i,this.wrapR=ue}}class wc extends ei{constructor(e,t,n,i,r,s,o,a,l){super(e,t,n,i,r,s,o,a,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}class Cc{constructor(){this.type=\"Curve\",this.arcLengthDivisions=200}getPoint(){return console.warn(\"THREE.Curve: .getPoint() not implemented.\"),null}getPointAt(e,t){const n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){const t=[];for(let n=0;n\u003C=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){const t=[];for(let n=0;n\u003C=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let n,i=this.getPoint(0),r=0;t.push(0);for(let s=1;s\u003C=e;s++)n=this.getPoint(s/e),r+=n.distanceTo(i),t.push(r),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const n=this.getLengths();let i=0;const r=n.length;let s;s=t||e*n[r-1];let o,a=0,l=r-1;for(;a\u003C=l;)if(i=Math.floor(a+(l-a)/2),o=n[i]-s,o\u003C0)a=i+1;else{if(!(o>0)){l=i;break}l=i-1}if(i=l,n[i]===s)return i/(r-1);const c=n[i];return(i+(s-c)/(n[i+1]-c))/(r-1)}getTangent(e,t){const n=1e-4;let i=e-n,r=e+n;i\u003C0&&(i=0),r>1&&(r=1);const s=this.getPoint(i),o=this.getPoint(r),a=t||(s.isVector2?new Ln:new ci);return a.copy(o).sub(s).normalize(),a}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){const n=new ci,i=[],r=[],s=[],o=new ci,a=new Ui;for(let t=0;t\u003C=e;t++){const n=t/e;i[t]=this.getTangentAt(n,new ci)}r[0]=new ci,s[0]=new ci;let l=Number.MAX_VALUE;const c=Math.abs(i[0].x),h=Math.abs(i[0].y),u=Math.abs(i[0].z);c\u003C=l&&(l=c,n.set(1,0,0)),h\u003C=l&&(l=h,n.set(0,1,0)),u\u003C=l&&n.set(0,0,1),o.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],o),s[0].crossVectors(i[0],r[0]);for(let t=1;t\u003C=e;t++){if(r[t]=r[t-1].clone(),s[t]=s[t-1].clone(),o.crossVectors(i[t-1],i[t]),o.length()>Number.EPSILON){o.normalize();const e=Math.acos(xn(i[t-1].dot(i[t]),-1,1));r[t].applyMatrix4(a.makeRotationAxis(o,e))}s[t].crossVectors(i[t],r[t])}if(!0===t){let t=Math.acos(xn(r[0].dot(r[e]),-1,1));t/=e,i[0].dot(o.crossVectors(r[0],r[e]))>0&&(t=-t);for(let n=1;n\u003C=e;n++)r[n].applyMatrix4(a.makeRotationAxis(i[n],t*n)),s[n].crossVectors(i[n],r[n])}return{tangents:i,normals:r,binormals:s}}clone(){return(new this.constructor).copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.5,type:\"Curve\",generator:\"Curve.toJSON\"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class Mc extends Cc{constructor(e=0,t=0,n=1,i=1,r=0,s=2*Math.PI,o=!1,a=0){super(),this.isEllipseCurve=!0,this.type=\"EllipseCurve\",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=s,this.aClockwise=o,this.aRotation=a}getPoint(e,t){const n=t||new Ln,i=2*Math.PI;let r=this.aEndAngle-this.aStartAngle;const s=Math.abs(r)\u003CNumber.EPSILON;for(;r\u003C0;)r+=i;for(;r>i;)r-=i;r\u003CNumber.EPSILON&&(r=s?0:i),!0!==this.aClockwise||s||(r===i?r=-i:r-=i);const o=this.aStartAngle+e*r;let a=this.aX+this.xRadius*Math.cos(o),l=this.aY+this.yRadius*Math.sin(o);if(0!==this.aRotation){const e=Math.cos(this.aRotation),t=Math.sin(this.aRotation),n=a-this.aX,i=l-this.aY;a=n*e-i*t+this.aX,l=n*t+i*e+this.aY}return n.set(a,l)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){const e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}}class _c extends Mc{constructor(e,t,n,i,r,s){super(e,t,n,n,i,r,s),this.isArcCurve=!0,this.type=\"ArcCurve\"}}function Ic(){let e=0,t=0,n=0,i=0;function r(r,s,o,a){e=r,t=o,n=-3*r+3*s-2*o-a,i=2*r-2*s+o+a}return{initCatmullRom:function(e,t,n,i,s){r(t,n,s*(n-e),s*(i-t))},initNonuniformCatmullRom:function(e,t,n,i,s,o,a){let l=(t-e)/s-(n-e)/(s+o)+(n-t)/o,c=(n-t)/o-(i-t)/(o+a)+(i-n)/a;l*=o,c*=o,r(t,n,l,c)},calc:function(r){const s=r*r;return e+t*r+n*s+i*(s*r)}}}const Bc=new ci,Sc=new Ic,Tc=new Ic,Lc=new Ic;class Dc extends Cc{constructor(e=[],t=!1,n=\"centripetal\",i=.5){super(),this.isCatmullRomCurve3=!0,this.type=\"CatmullRomCurve3\",this.points=e,this.closed=t,this.curveType=n,this.tension=i}getPoint(e,t=new ci){const n=t,i=this.points,r=i.length,s=(r-(this.closed?0:1))*e;let o,a,l=Math.floor(s),c=s-l;this.closed?l+=l>0?0:(Math.floor(Math.abs(l)/r)+1)*r:0===c&&l===r-1&&(l=r-2,c=1),this.closed||l>0?o=i[(l-1)%r]:(Bc.subVectors(i[0],i[1]).add(i[0]),o=Bc);const h=i[l%r],u=i[(l+1)%r];if(this.closed||l+2\u003Cr?a=i[(l+2)%r]:(Bc.subVectors(i[r-1],i[r-2]).add(i[r-1]),a=Bc),\"centripetal\"===this.curveType||\"chordal\"===this.curveType){const e=\"chordal\"===this.curveType?.5:.25;let t=Math.pow(o.distanceToSquared(h),e),n=Math.pow(h.distanceToSquared(u),e),i=Math.pow(u.distanceToSquared(a),e);n\u003C1e-4&&(n=1),t\u003C1e-4&&(t=n),i\u003C1e-4&&(i=n),Sc.initNonuniformCatmullRom(o.x,h.x,u.x,a.x,t,n,i),Tc.initNonuniformCatmullRom(o.y,h.y,u.y,a.y,t,n,i),Lc.initNonuniformCatmullRom(o.z,h.z,u.z,a.z,t,n,i)}else\"catmullrom\"===this.curveType&&(Sc.initCatmullRom(o.x,h.x,u.x,a.x,this.tension),Tc.initCatmullRom(o.y,h.y,u.y,a.y,this.tension),Lc.initCatmullRom(o.z,h.z,u.z,a.z,this.tension));return n.set(Sc.calc(c),Tc.calc(c),Lc.calc(c)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t\u003Cn;t++){const n=e.points[t];this.points.push(n.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t\u003Cn;t++){const n=this.points[t];e.points.push(n.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t\u003Cn;t++){const n=e.points[t];this.points.push((new ci).fromArray(n))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}}function Rc(e,t,n,i,r){const s=.5*(i-t),o=.5*(r-n),a=e*e;return(2*n-2*i+s+o)*(e*a)+(-3*n+3*i-2*s-o)*a+s*e+n}function Pc(e,t,n,i){return function(e,t){const n=1-e;return n*n*t}(e,t)+function(e,t){return 2*(1-e)*e*t}(e,n)+function(e,t){return e*e*t}(e,i)}function kc(e,t,n,i,r){return function(e,t){const n=1-e;return n*n*n*t}(e,t)+function(e,t){const n=1-e;return 3*n*n*e*t}(e,n)+function(e,t){return 3*(1-e)*e*e*t}(e,i)+function(e,t){return e*e*e*t}(e,r)}class Fc extends Cc{constructor(e=new Ln,t=new Ln,n=new Ln,i=new Ln){super(),this.isCubicBezierCurve=!0,this.type=\"CubicBezierCurve\",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new Ln){const n=t,i=this.v0,r=this.v1,s=this.v2,o=this.v3;return n.set(kc(e,i.x,r.x,s.x,o.x),kc(e,i.y,r.y,s.y,o.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class Oc extends Cc{constructor(e=new ci,t=new ci,n=new ci,i=new ci){super(),this.isCubicBezierCurve3=!0,this.type=\"CubicBezierCurve3\",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new ci){const n=t,i=this.v0,r=this.v1,s=this.v2,o=this.v3;return n.set(kc(e,i.x,r.x,s.x,o.x),kc(e,i.y,r.y,s.y,o.y),kc(e,i.z,r.z,s.z,o.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class Qc extends Cc{constructor(e=new Ln,t=new Ln){super(),this.isLineCurve=!0,this.type=\"LineCurve\",this.v1=e,this.v2=t}getPoint(e,t=new Ln){const n=t;return 1===e?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t){const n=t||new Ln;return n.copy(this.v2).sub(this.v1).normalize(),n}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class Uc extends Cc{constructor(e=new ci,t=new ci){super(),this.isLineCurve3=!0,this.type=\"LineCurve3\",this.v1=e,this.v2=t}getPoint(e,t=new ci){const n=t;return 1===e?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class Nc extends Cc{constructor(e=new Ln,t=new Ln,n=new Ln){super(),this.isQuadraticBezierCurve=!0,this.type=\"QuadraticBezierCurve\",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new Ln){const n=t,i=this.v0,r=this.v1,s=this.v2;return n.set(Pc(e,i.x,r.x,s.x),Pc(e,i.y,r.y,s.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class Gc extends Cc{constructor(e=new ci,t=new ci,n=new ci){super(),this.isQuadraticBezierCurve3=!0,this.type=\"QuadraticBezierCurve3\",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new ci){const n=t,i=this.v0,r=this.v1,s=this.v2;return n.set(Pc(e,i.x,r.x,s.x),Pc(e,i.y,r.y,s.y),Pc(e,i.z,r.z,s.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class zc extends Cc{constructor(e=[]){super(),this.isSplineCurve=!0,this.type=\"SplineCurve\",this.points=e}getPoint(e,t=new Ln){const n=t,i=this.points,r=(i.length-1)*e,s=Math.floor(r),o=r-s,a=i[0===s?s:s-1],l=i[s],c=i[s>i.length-2?i.length-1:s+1],h=i[s>i.length-3?i.length-1:s+2];return n.set(Rc(o,a.x,l.x,c.x,h.x),Rc(o,a.y,l.y,c.y,h.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t\u003Cn;t++){const n=e.points[t];this.points.push(n.clone())}return this}toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t\u003Cn;t++){const n=this.points[t];e.points.push(n.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t\u003Cn;t++){const n=e.points[t];this.points.push((new Ln).fromArray(n))}return this}}var Hc=Object.freeze({__proto__:null,ArcCurve:_c,CatmullRomCurve3:Dc,CubicBezierCurve:Fc,CubicBezierCurve3:Oc,EllipseCurve:Mc,LineCurve:Qc,LineCurve3:Uc,QuadraticBezierCurve:Nc,QuadraticBezierCurve3:Gc,SplineCurve:zc});class Vc extends Cc{constructor(){super(),this.type=\"CurvePath\",this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){const e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new Qc(t,e))}getPoint(e,t){const n=e*this.getLength(),i=this.getCurveLengths();let r=0;for(;r\u003Ci.length;){if(i[r]>=n){const e=i[r]-n,s=this.curves[r],o=s.getLength(),a=0===o?0:1-e/o;return s.getPointAt(a,t)}r++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let n=0,i=this.curves.length;n\u003Ci;n++)t+=this.curves[n].getLength(),e.push(t);return this.cacheLengths=e,e}getSpacedPoints(e=40){const t=[];for(let n=0;n\u003C=e;n++)t.push(this.getPoint(n/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){const t=[];let n;for(let i=0,r=this.curves;i\u003Cr.length;i++){const s=r[i],o=s.isEllipseCurve?2*e:s.isLineCurve||s.isLineCurve3?1:s.isSplineCurve?e*s.points.length:e,a=s.getPoints(o);for(let e=0;e\u003Ca.length;e++){const i=a[e];n&&n.equals(i)||(t.push(i),n=i)}}return this.autoClose&&t.length>1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t\u003Cn;t++){const n=e.curves[t];this.curves.push(n.clone())}return this.autoClose=e.autoClose,this}toJSON(){const e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,n=this.curves.length;t\u003Cn;t++){const n=this.curves[t];e.curves.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,n=e.curves.length;t\u003Cn;t++){const n=e.curves[t];this.curves.push((new Hc[n.type]).fromJSON(n))}return this}}class Wc extends Vc{constructor(e){super(),this.type=\"Path\",this.currentPoint=new Ln,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,n=e.length;t\u003Cn;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){const n=new Qc(this.currentPoint.clone(),new Ln(e,t));return this.curves.push(n),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,n,i){const r=new Nc(this.currentPoint.clone(),new Ln(e,t),new Ln(n,i));return this.curves.push(r),this.currentPoint.set(n,i),this}bezierCurveTo(e,t,n,i,r,s){const o=new Fc(this.currentPoint.clone(),new Ln(e,t),new Ln(n,i),new Ln(r,s));return this.curves.push(o),this.currentPoint.set(r,s),this}splineThru(e){const t=[this.currentPoint.clone()].concat(e),n=new zc(t);return this.curves.push(n),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,n,i,r,s){const o=this.currentPoint.x,a=this.currentPoint.y;return this.absarc(e+o,t+a,n,i,r,s),this}absarc(e,t,n,i,r,s){return this.absellipse(e,t,n,n,i,r,s),this}ellipse(e,t,n,i,r,s,o,a){const l=this.currentPoint.x,c=this.currentPoint.y;return this.absellipse(e+l,t+c,n,i,r,s,o,a),this}absellipse(e,t,n,i,r,s,o,a){const l=new Mc(e,t,n,i,r,s,o,a);if(this.curves.length>0){const e=l.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(l);const c=l.getPoint(1);return this.currentPoint.copy(c),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class jc extends Wr{constructor(e=[new Ln(0,-.5),new Ln(.5,0),new Ln(0,.5)],t=12,n=0,i=2*Math.PI){super(),this.type=\"LatheGeometry\",this.parameters={points:e,segments:t,phiStart:n,phiLength:i},t=Math.floor(t),i=xn(i,0,2*Math.PI);const r=[],s=[],o=[],a=[],l=[],c=1/t,h=new ci,u=new Ln,d=new ci,p=new ci,A=new ci;let f=0,m=0;for(let t=0;t\u003C=e.length-1;t++)switch(t){case 0:f=e[t+1].x-e[t].x,m=e[t+1].y-e[t].y,d.x=1*m,d.y=-f,d.z=0*m,A.copy(d),d.normalize(),a.push(d.x,d.y,d.z);break;case e.length-1:a.push(A.x,A.y,A.z);break;default:f=e[t+1].x-e[t].x,m=e[t+1].y-e[t].y,d.x=1*m,d.y=-f,d.z=0*m,p.copy(d),d.x+=A.x,d.y+=A.y,d.z+=A.z,d.normalize(),a.push(d.x,d.y,d.z),A.copy(p)}for(let r=0;r\u003C=t;r++){const d=n+r*c*i,p=Math.sin(d),A=Math.cos(d);for(let n=0;n\u003C=e.length-1;n++){h.x=e[n].x*p,h.y=e[n].y,h.z=e[n].x*A,s.push(h.x,h.y,h.z),u.x=r/t,u.y=n/(e.length-1),o.push(u.x,u.y);const i=a[3*n+0]*p,c=a[3*n+1],d=a[3*n+0]*A;l.push(i,c,d)}}for(let n=0;n\u003Ct;n++)for(let t=0;t\u003Ce.length-1;t++){const i=t+n*e.length,s=i,o=i+e.length,a=i+e.length+1,l=i+1;r.push(s,o,l),r.push(a,l,o)}this.setIndex(r),this.setAttribute(\"position\",new Fr(s,3)),this.setAttribute(\"uv\",new Fr(o,2)),this.setAttribute(\"normal\",new Fr(l,3))}static fromJSON(e){return new jc(e.points,e.segments,e.phiStart,e.phiLength)}}class qc extends jc{constructor(e=1,t=1,n=4,i=8){const r=new Wc;r.absarc(0,-t/2,e,1.5*Math.PI,0),r.absarc(0,t/2,e,0,.5*Math.PI),super(r.getPoints(n),i),this.type=\"CapsuleGeometry\",this.parameters={radius:e,height:t,capSegments:n,radialSegments:i}}static fromJSON(e){return new qc(e.radius,e.length,e.capSegments,e.radialSegments)}}class Yc extends Wr{constructor(e=1,t=8,n=0,i=2*Math.PI){super(),this.type=\"CircleGeometry\",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},t=Math.max(3,t);const r=[],s=[],o=[],a=[],l=new ci,c=new Ln;s.push(0,0,0),o.push(0,0,1),a.push(.5,.5);for(let r=0,h=3;r\u003C=t;r++,h+=3){const u=n+r/t*i;l.x=e*Math.cos(u),l.y=e*Math.sin(u),s.push(l.x,l.y,l.z),o.push(0,0,1),c.x=(s[h]/e+1)/2,c.y=(s[h+1]/e+1)/2,a.push(c.x,c.y)}for(let e=1;e\u003C=t;e++)r.push(e,e+1,0);this.setIndex(r),this.setAttribute(\"position\",new Fr(s,3)),this.setAttribute(\"normal\",new Fr(o,3)),this.setAttribute(\"uv\",new Fr(a,2))}static fromJSON(e){return new Yc(e.radius,e.segments,e.thetaStart,e.thetaLength)}}class Xc extends Wr{constructor(e=1,t=1,n=1,i=8,r=1,s=!1,o=0,a=2*Math.PI){super(),this.type=\"CylinderGeometry\",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:r,openEnded:s,thetaStart:o,thetaLength:a};const l=this;i=Math.floor(i),r=Math.floor(r);const c=[],h=[],u=[],d=[];let p=0;const A=[],f=n/2;let m=0;function g(n){const r=p,s=new Ln,A=new ci;let g=0;const v=!0===n?e:t,y=!0===n?1:-1;for(let e=1;e\u003C=i;e++)h.push(0,f*y,0),u.push(0,y,0),d.push(.5,.5),p++;const E=p;for(let e=0;e\u003C=i;e++){const t=e/i*a+o,n=Math.cos(t),r=Math.sin(t);A.x=v*r,A.y=f*y,A.z=v*n,h.push(A.x,A.y,A.z),u.push(0,y,0),s.x=.5*n+.5,s.y=.5*r*y+.5,d.push(s.x,s.y),p++}for(let e=0;e\u003Ci;e++){const t=r+e,i=E+e;!0===n?c.push(i,i+1,t):c.push(i+1,i,t),g+=3}l.addGroup(m,g,!0===n?1:2),m+=g}!function(){const s=new ci,g=new ci;let v=0;const y=(t-e)/n;for(let l=0;l\u003C=r;l++){const c=[],m=l/r,v=m*(t-e)+e;for(let e=0;e\u003C=i;e++){const t=e/i,r=t*a+o,l=Math.sin(r),A=Math.cos(r);g.x=v*l,g.y=-m*n+f,g.z=v*A,h.push(g.x,g.y,g.z),s.set(l,y,A).normalize(),u.push(s.x,s.y,s.z),d.push(t,1-m),c.push(p++)}A.push(c)}for(let e=0;e\u003Ci;e++)for(let t=0;t\u003Cr;t++){const n=A[t][e],i=A[t+1][e],r=A[t+1][e+1],s=A[t][e+1];c.push(n,i,s),c.push(i,r,s),v+=6}l.addGroup(m,v,0),m+=v}(),!1===s&&(e>0&&g(!0),t>0&&g(!1)),this.setIndex(c),this.setAttribute(\"position\",new Fr(h,3)),this.setAttribute(\"normal\",new Fr(u,3)),this.setAttribute(\"uv\",new Fr(d,2))}static fromJSON(e){return new Xc(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class Jc extends Xc{constructor(e=1,t=1,n=8,i=1,r=!1,s=0,o=2*Math.PI){super(0,e,t,n,i,r,s,o),this.type=\"ConeGeometry\",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:s,thetaLength:o}}static fromJSON(e){return new Jc(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class Kc extends Wr{constructor(e=[],t=[],n=1,i=0){super(),this.type=\"PolyhedronGeometry\",this.parameters={vertices:e,indices:t,radius:n,detail:i};const r=[],s=[];function o(e,t,n,i){const r=i+1,s=[];for(let i=0;i\u003C=r;i++){s[i]=[];const o=e.clone().lerp(n,i/r),a=t.clone().lerp(n,i/r),l=r-i;for(let e=0;e\u003C=l;e++)s[i][e]=0===e&&i===r?o:o.clone().lerp(a,e/l)}for(let e=0;e\u003Cr;e++)for(let t=0;t\u003C2*(r-e)-1;t++){const n=Math.floor(t/2);t%2==0?(a(s[e][n+1]),a(s[e+1][n]),a(s[e][n])):(a(s[e][n+1]),a(s[e+1][n+1]),a(s[e+1][n]))}}function a(e){r.push(e.x,e.y,e.z)}function l(t,n){const i=3*t;n.x=e[i+0],n.y=e[i+1],n.z=e[i+2]}function c(e,t,n,i){i\u003C0&&1===e.x&&(s[t]=e.x-1),0===n.x&&0===n.z&&(s[t]=i/2/Math.PI+.5)}function h(e){return Math.atan2(e.z,-e.x)}!function(e){const n=new ci,i=new ci,r=new ci;for(let s=0;s\u003Ct.length;s+=3)l(t[s+0],n),l(t[s+1],i),l(t[s+2],r),o(n,i,r,e)}(i),function(e){const t=new ci;for(let n=0;n\u003Cr.length;n+=3)t.x=r[n+0],t.y=r[n+1],t.z=r[n+2],t.normalize().multiplyScalar(e),r[n+0]=t.x,r[n+1]=t.y,r[n+2]=t.z}(n),function(){const e=new ci;for(let n=0;n\u003Cr.length;n+=3){e.x=r[n+0],e.y=r[n+1],e.z=r[n+2];const i=h(e)/2/Math.PI+.5,o=(t=e,Math.atan2(-t.y,Math.sqrt(t.x*t.x+t.z*t.z))/Math.PI+.5);s.push(i,1-o)}var t;(function(){const e=new ci,t=new ci,n=new ci,i=new ci,o=new Ln,a=new Ln,l=new Ln;for(let u=0,d=0;u\u003Cr.length;u+=9,d+=6){e.set(r[u+0],r[u+1],r[u+2]),t.set(r[u+3],r[u+4],r[u+5]),n.set(r[u+6],r[u+7],r[u+8]),o.set(s[d+0],s[d+1]),a.set(s[d+2],s[d+3]),l.set(s[d+4],s[d+5]),i.copy(e).add(t).add(n).divideScalar(3);const p=h(i);c(o,d+0,e,p),c(a,d+2,t,p),c(l,d+4,n,p)}})(),function(){for(let e=0;e\u003Cs.length;e+=6){const t=s[e+0],n=s[e+2],i=s[e+4],r=Math.max(t,n,i),o=Math.min(t,n,i);r>.9&&o\u003C.1&&(t\u003C.2&&(s[e+0]+=1),n\u003C.2&&(s[e+2]+=1),i\u003C.2&&(s[e+4]+=1))}}()}(),this.setAttribute(\"position\",new Fr(r,3)),this.setAttribute(\"normal\",new Fr(r.slice(),3)),this.setAttribute(\"uv\",new Fr(s,2)),0===i?this.computeVertexNormals():this.normalizeNormals()}static fromJSON(e){return new Kc(e.vertices,e.indices,e.radius,e.details)}}class Zc extends Kc{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2,i=1/n;super([-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type=\"DodecahedronGeometry\",this.parameters={radius:e,detail:t}}static fromJSON(e){return new Zc(e.radius,e.detail)}}const $c=new ci,eh=new ci,th=new ci,nh=new br;class ih extends Wr{constructor(e=null,t=1){if(super(),this.type=\"EdgesGeometry\",this.parameters={geometry:e,thresholdAngle:t},null!==e){const n=4,i=Math.pow(10,n),r=Math.cos(yn*t),s=e.getIndex(),o=e.getAttribute(\"position\"),a=s?s.count:o.count,l=[0,0,0],c=[\"a\",\"b\",\"c\"],h=new Array(3),u={},d=[];for(let e=0;e\u003Ca;e+=3){s?(l[0]=s.getX(e),l[1]=s.getX(e+1),l[2]=s.getX(e+2)):(l[0]=e,l[1]=e+1,l[2]=e+2);const{a:t,b:n,c:a}=nh;if(t.fromBufferAttribute(o,l[0]),n.fromBufferAttribute(o,l[1]),a.fromBufferAttribute(o,l[2]),nh.getNormal(th),h[0]=`${Math.round(t.x*i)},${Math.round(t.y*i)},${Math.round(t.z*i)}`,h[1]=`${Math.round(n.x*i)},${Math.round(n.y*i)},${Math.round(n.z*i)}`,h[2]=`${Math.round(a.x*i)},${Math.round(a.y*i)},${Math.round(a.z*i)}`,h[0]!==h[1]&&h[1]!==h[2]&&h[2]!==h[0])for(let e=0;e\u003C3;e++){const t=(e+1)%3,n=h[e],i=h[t],s=nh[c[e]],o=nh[c[t]],a=`${n}_${i}`,p=`${i}_${n}`;p in u&&u[p]?(th.dot(u[p].normal)\u003C=r&&(d.push(s.x,s.y,s.z),d.push(o.x,o.y,o.z)),u[p]=null):a in u||(u[a]={index0:l[e],index1:l[t],normal:th.clone()})}}for(const e in u)if(u[e]){const{index0:t,index1:n}=u[e];$c.fromBufferAttribute(o,t),eh.fromBufferAttribute(o,n),d.push($c.x,$c.y,$c.z),d.push(eh.x,eh.y,eh.z)}this.setAttribute(\"position\",new Fr(d,3))}}}class rh extends Wc{constructor(e){super(e),this.uuid=bn(),this.type=\"Shape\",this.holes=[]}getPointsHoles(e){const t=[];for(let n=0,i=this.holes.length;n\u003Ci;n++)t[n]=this.holes[n].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,n=e.holes.length;t\u003Cn;t++){const n=e.holes[t];this.holes.push(n.clone())}return this}toJSON(){const e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,n=this.holes.length;t\u003Cn;t++){const n=this.holes[t];e.holes.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,n=e.holes.length;t\u003Cn;t++){const n=e.holes[t];this.holes.push((new Wc).fromJSON(n))}return this}}function sh(e,t,n,i,r){let s,o;if(r===function(e,t,n,i){let r=0;for(let s=t,o=n-i;s\u003Cn;s+=i)r+=(e[o]-e[s])*(e[s+1]+e[o+1]),o=s;return r}(e,t,n,i)>0)for(s=t;s\u003Cn;s+=i)o=_h(s,e[s],e[s+1],o);else for(s=n-i;s>=t;s-=i)o=_h(s,e[s],e[s+1],o);return o&&Eh(o,o.next)&&(Ih(o),o=o.next),o}function oh(e,t){if(!e)return e;t||(t=e);let n,i=e;do{if(n=!1,i.steiner||!Eh(i,i.next)&&0!==yh(i.prev,i,i.next))i=i.next;else{if(Ih(i),i=t=i.prev,i===i.next)break;n=!0}}while(n||i!==t);return t}function ah(e,t,n,i,r,s,o){if(!e)return;!o&&s&&function(e,t,n,i){let r=e;do{0===r.z&&(r.z=fh(r.x,r.y,t,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){let t,n,i,r,s,o,a,l,c=1;do{for(n=e,e=null,s=null,o=0;n;){for(o++,i=n,a=0,t=0;t\u003Cc&&(a++,i=i.nextZ,i);t++);for(l=c;a>0||l>0&&i;)0!==a&&(0===l||!i||n.z\u003C=i.z)?(r=n,n=n.nextZ,a--):(r=i,i=i.nextZ,l--),s?s.nextZ=r:e=r,r.prevZ=s,s=r;n=i}s.nextZ=null,c*=2}while(o>1)}(r)}(e,i,r,s);let a,l,c=e;for(;e.prev!==e.next;)if(a=e.prev,l=e.next,s?ch(e,i,r,s):lh(e))t.push(a.i/n|0),t.push(e.i/n|0),t.push(l.i/n|0),Ih(e),e=l.next,c=l.next;else if((e=l)===c){o?1===o?ah(e=hh(oh(e),t,n),t,n,i,r,s,2):2===o&&uh(e,t,n,i,r,s):ah(oh(e),t,n,i,r,s,1);break}}function lh(e){const t=e.prev,n=e,i=e.next;if(yh(t,n,i)>=0)return!1;const r=t.x,s=n.x,o=i.x,a=t.y,l=n.y,c=i.y,h=r\u003Cs?r\u003Co?r:o:s\u003Co?s:o,u=a\u003Cl?a\u003Cc?a:c:l\u003Cc?l:c,d=r>s?r>o?r:o:s>o?s:o,p=a>l?a>c?a:c:l>c?l:c;let A=i.next;for(;A!==t;){if(A.x>=h&&A.x\u003C=d&&A.y>=u&&A.y\u003C=p&&gh(r,a,s,l,o,c,A.x,A.y)&&yh(A.prev,A,A.next)>=0)return!1;A=A.next}return!0}function ch(e,t,n,i){const r=e.prev,s=e,o=e.next;if(yh(r,s,o)>=0)return!1;const a=r.x,l=s.x,c=o.x,h=r.y,u=s.y,d=o.y,p=a\u003Cl?a\u003Cc?a:c:l\u003Cc?l:c,A=h\u003Cu?h\u003Cd?h:d:u\u003Cd?u:d,f=a>l?a>c?a:c:l>c?l:c,m=h>u?h>d?h:d:u>d?u:d,g=fh(p,A,t,n,i),v=fh(f,m,t,n,i);let y=e.prevZ,E=e.nextZ;for(;y&&y.z>=g&&E&&E.z\u003C=v;){if(y.x>=p&&y.x\u003C=f&&y.y>=A&&y.y\u003C=m&&y!==r&&y!==o&&gh(a,h,l,u,c,d,y.x,y.y)&&yh(y.prev,y,y.next)>=0)return!1;if(y=y.prevZ,E.x>=p&&E.x\u003C=f&&E.y>=A&&E.y\u003C=m&&E!==r&&E!==o&&gh(a,h,l,u,c,d,E.x,E.y)&&yh(E.prev,E,E.next)>=0)return!1;E=E.nextZ}for(;y&&y.z>=g;){if(y.x>=p&&y.x\u003C=f&&y.y>=A&&y.y\u003C=m&&y!==r&&y!==o&&gh(a,h,l,u,c,d,y.x,y.y)&&yh(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;E&&E.z\u003C=v;){if(E.x>=p&&E.x\u003C=f&&E.y>=A&&E.y\u003C=m&&E!==r&&E!==o&&gh(a,h,l,u,c,d,E.x,E.y)&&yh(E.prev,E,E.next)>=0)return!1;E=E.nextZ}return!0}function hh(e,t,n){let i=e;do{const r=i.prev,s=i.next.next;!Eh(r,s)&&bh(r,i,i.next,s)&&Ch(r,s)&&Ch(s,r)&&(t.push(r.i/n|0),t.push(i.i/n|0),t.push(s.i/n|0),Ih(i),Ih(i.next),i=e=s),i=i.next}while(i!==e);return oh(i)}function uh(e,t,n,i,r,s){let o=e;do{let e=o.next.next;for(;e!==o.prev;){if(o.i!==e.i&&vh(o,e)){let a=Mh(o,e);return o=oh(o,o.next),a=oh(a,a.next),ah(o,t,n,i,r,s,0),void ah(a,t,n,i,r,s,0)}e=e.next}o=o.next}while(o!==e)}function dh(e,t){return e.x-t.x}function ph(e,t){const n=function(e,t){let n,i=t,r=-1/0;const s=e.x,o=e.y;do{if(o\u003C=i.y&&o>=i.next.y&&i.next.y!==i.y){const e=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(e\u003C=s&&e>r&&(r=e,n=i.x\u003Ci.next.x?i:i.next,e===s))return n}i=i.next}while(i!==t);if(!n)return null;const a=n,l=n.x,c=n.y;let h,u=1/0;i=n;do{s>=i.x&&i.x>=l&&s!==i.x&&gh(o\u003Cc?s:r,o,l,c,o\u003Cc?r:s,o,i.x,i.y)&&(h=Math.abs(o-i.y)/(s-i.x),Ch(i,e)&&(h\u003Cu||h===u&&(i.x>n.x||i.x===n.x&&Ah(n,i)))&&(n=i,u=h)),i=i.next}while(i!==a);return n}(e,t);if(!n)return t;const i=Mh(n,e);return oh(i,i.next),oh(n,n.next)}function Ah(e,t){return yh(e.prev,e,t.prev)\u003C0&&yh(t.next,e,e.next)\u003C0}function fh(e,t,n,i,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*r|0)|e\u003C\u003C8))|e\u003C\u003C4))|e\u003C\u003C2))|e\u003C\u003C1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-i)*r|0)|t\u003C\u003C8))|t\u003C\u003C4))|t\u003C\u003C2))|t\u003C\u003C1))\u003C\u003C1}function mh(e){let t=e,n=e;do{(t.x\u003Cn.x||t.x===n.x&&t.y\u003Cn.y)&&(n=t),t=t.next}while(t!==e);return n}function gh(e,t,n,i,r,s,o,a){return(r-o)*(t-a)>=(e-o)*(s-a)&&(e-o)*(i-a)>=(n-o)*(t-a)&&(n-o)*(s-a)>=(r-o)*(i-a)}function vh(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&bh(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&(Ch(e,t)&&Ch(t,e)&&function(e,t){let n=e,i=!1;const r=(e.x+t.x)/2,s=(e.y+t.y)/2;do{n.y>s!=n.next.y>s&&n.next.y!==n.y&&r\u003C(n.next.x-n.x)*(s-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next}while(n!==e);return i}(e,t)&&(yh(e.prev,e,t.prev)||yh(e,t.prev,t))||Eh(e,t)&&yh(e.prev,e,e.next)>0&&yh(t.prev,t,t.next)>0)}function yh(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function Eh(e,t){return e.x===t.x&&e.y===t.y}function bh(e,t,n,i){const r=wh(yh(e,t,n)),s=wh(yh(e,t,i)),o=wh(yh(n,i,e)),a=wh(yh(n,i,t));return r!==s&&o!==a||!(0!==r||!xh(e,n,t))||!(0!==s||!xh(e,i,t))||!(0!==o||!xh(n,e,i))||!(0!==a||!xh(n,t,i))}function xh(e,t,n){return t.x\u003C=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y\u003C=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function wh(e){return e>0?1:e\u003C0?-1:0}function Ch(e,t){return yh(e.prev,e,e.next)\u003C0?yh(e,t,e.next)>=0&&yh(e,e.prev,t)>=0:yh(e,t,e.prev)\u003C0||yh(e,e.next,t)\u003C0}function Mh(e,t){const n=new Bh(e.i,e.x,e.y),i=new Bh(t.i,t.x,t.y),r=e.next,s=t.prev;return e.next=t,t.prev=e,n.next=r,r.prev=n,i.next=n,n.prev=i,s.next=i,i.prev=s,i}function _h(e,t,n,i){const r=new Bh(e,t,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function Ih(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Bh(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}class Sh{static area(e){const t=e.length;let n=0;for(let i=t-1,r=0;r\u003Ct;i=r++)n+=e[i].x*e[r].y-e[r].x*e[i].y;return.5*n}static isClockWise(e){return Sh.area(e)\u003C0}static triangulateShape(e,t){const n=[],i=[],r=[];Th(e),Lh(n,e);let s=e.length;t.forEach(Th);for(let e=0;e\u003Ct.length;e++)i.push(s),s+=t[e].length,Lh(n,t[e]);const o=function(e,t,n=2){const i=t&&t.length,r=i?t[0]*n:e.length;let s=sh(e,0,r,n,!0);const o=[];if(!s||s.next===s.prev)return o;let a,l,c,h,u,d,p;if(i&&(s=function(e,t,n,i){const r=[];let s,o,a,l,c;for(s=0,o=t.length;s\u003Co;s++)a=t[s]*i,l=s\u003Co-1?t[s+1]*i:e.length,c=sh(e,a,l,i,!1),c===c.next&&(c.steiner=!0),r.push(mh(c));for(r.sort(dh),s=0;s\u003Cr.length;s++)n=ph(r[s],n);return n}(e,t,s,n)),e.length>80*n){a=c=e[0],l=h=e[1];for(let t=n;t\u003Cr;t+=n)u=e[t],d=e[t+1],u\u003Ca&&(a=u),d\u003Cl&&(l=d),u>c&&(c=u),d>h&&(h=d);p=Math.max(c-a,h-l),p=0!==p?32767/p:0}return ah(s,o,n,a,l,p,0),o}(n,i);for(let e=0;e\u003Co.length;e+=3)r.push(o.slice(e,e+3));return r}}function Th(e){const t=e.length;t>2&&e[t-1].equals(e[0])&&e.pop()}function Lh(e,t){for(let n=0;n\u003Ct.length;n++)e.push(t[n].x),e.push(t[n].y)}class Dh extends Wr{constructor(e=new rh([new Ln(.5,.5),new Ln(-.5,.5),new Ln(-.5,-.5),new Ln(.5,-.5)]),t={}){super(),this.type=\"ExtrudeGeometry\",this.parameters={shapes:e,options:t},e=Array.isArray(e)?e:[e];const n=this,i=[],r=[];for(let t=0,n=e.length;t\u003Cn;t++)s(e[t]);function s(e){const s=[],o=void 0!==t.curveSegments?t.curveSegments:12,a=void 0!==t.steps?t.steps:1,l=void 0!==t.depth?t.depth:1;let c=void 0===t.bevelEnabled||t.bevelEnabled,h=void 0!==t.bevelThickness?t.bevelThickness:.2,u=void 0!==t.bevelSize?t.bevelSize:h-.1,d=void 0!==t.bevelOffset?t.bevelOffset:0,p=void 0!==t.bevelSegments?t.bevelSegments:3;const A=t.extrudePath,f=void 0!==t.UVGenerator?t.UVGenerator:Rh;let m,g,v,y,E,b=!1;A&&(m=A.getSpacedPoints(a),b=!0,c=!1,g=A.computeFrenetFrames(a,!1),v=new ci,y=new ci,E=new ci),c||(p=0,h=0,u=0,d=0);const x=e.extractPoints(o);let w=x.shape;const C=x.holes;if(!Sh.isClockWise(w)){w=w.reverse();for(let e=0,t=C.length;e\u003Ct;e++){const t=C[e];Sh.isClockWise(t)&&(C[e]=t.reverse())}}const M=Sh.triangulateShape(w,C),_=w;for(let e=0,t=C.length;e\u003Ct;e++){const t=C[e];w=w.concat(t)}function I(e,t,n){return t||console.error(\"THREE.ExtrudeGeometry: vec does not exist\"),t.clone().multiplyScalar(n).add(e)}const B=w.length,S=M.length;function T(e,t,n){let i,r,s;const o=e.x-t.x,a=e.y-t.y,l=n.x-e.x,c=n.y-e.y,h=o*o+a*a,u=o*c-a*l;if(Math.abs(u)>Number.EPSILON){const u=Math.sqrt(h),d=Math.sqrt(l*l+c*c),p=t.x-a/u,A=t.y+o/u,f=((n.x-c/d-p)*c-(n.y+l/d-A)*l)/(o*c-a*l);i=p+o*f-e.x,r=A+a*f-e.y;const m=i*i+r*r;if(m\u003C=2)return new Ln(i,r);s=Math.sqrt(m/2)}else{let e=!1;o>Number.EPSILON?l>Number.EPSILON&&(e=!0):o\u003C-Number.EPSILON?l\u003C-Number.EPSILON&&(e=!0):Math.sign(a)===Math.sign(c)&&(e=!0),e?(i=-a,r=o,s=Math.sqrt(h)):(i=o,r=a,s=Math.sqrt(h/2))}return new Ln(i/s,r/s)}const L=[];for(let e=0,t=_.length,n=t-1,i=e+1;e\u003Ct;e++,n++,i++)n===t&&(n=0),i===t&&(i=0),L[e]=T(_[e],_[n],_[i]);const D=[];let R,P=L.concat();for(let e=0,t=C.length;e\u003Ct;e++){const t=C[e];R=[];for(let e=0,n=t.length,i=n-1,r=e+1;e\u003Cn;e++,i++,r++)i===n&&(i=0),r===n&&(r=0),R[e]=T(t[e],t[i],t[r]);D.push(R),P=P.concat(R)}for(let e=0;e\u003Cp;e++){const t=e/p,n=h*Math.cos(t*Math.PI/2),i=u*Math.sin(t*Math.PI/2)+d;for(let e=0,t=_.length;e\u003Ct;e++){const t=I(_[e],L[e],i);O(t.x,t.y,-n)}for(let e=0,t=C.length;e\u003Ct;e++){const t=C[e];R=D[e];for(let e=0,r=t.length;e\u003Cr;e++){const r=I(t[e],R[e],i);O(r.x,r.y,-n)}}}const k=u+d;for(let e=0;e\u003CB;e++){const t=c?I(w[e],P[e],k):w[e];b?(y.copy(g.normals[0]).multiplyScalar(t.x),v.copy(g.binormals[0]).multiplyScalar(t.y),E.copy(m[0]).add(y).add(v),O(E.x,E.y,E.z)):O(t.x,t.y,0)}for(let e=1;e\u003C=a;e++)for(let t=0;t\u003CB;t++){const n=c?I(w[t],P[t],k):w[t];b?(y.copy(g.normals[e]).multiplyScalar(n.x),v.copy(g.binormals[e]).multiplyScalar(n.y),E.copy(m[e]).add(y).add(v),O(E.x,E.y,E.z)):O(n.x,n.y,l/a*e)}for(let e=p-1;e>=0;e--){const t=e/p,n=h*Math.cos(t*Math.PI/2),i=u*Math.sin(t*Math.PI/2)+d;for(let e=0,t=_.length;e\u003Ct;e++){const t=I(_[e],L[e],i);O(t.x,t.y,l+n)}for(let e=0,t=C.length;e\u003Ct;e++){const t=C[e];R=D[e];for(let e=0,r=t.length;e\u003Cr;e++){const r=I(t[e],R[e],i);b?O(r.x,r.y+m[a-1].y,m[a-1].x+n):O(r.x,r.y,l+n)}}}function F(e,t){let n=e.length;for(;--n>=0;){const i=n;let r=n-1;r\u003C0&&(r=e.length-1);for(let e=0,n=a+2*p;e\u003Cn;e++){const n=B*e,s=B*(e+1);U(t+i+n,t+r+n,t+r+s,t+i+s)}}}function O(e,t,n){s.push(e),s.push(t),s.push(n)}function Q(e,t,r){N(e),N(t),N(r);const s=i.length/3,o=f.generateTopUV(n,i,s-3,s-2,s-1);G(o[0]),G(o[1]),G(o[2])}function U(e,t,r,s){N(e),N(t),N(s),N(t),N(r),N(s);const o=i.length/3,a=f.generateSideWallUV(n,i,o-6,o-3,o-2,o-1);G(a[0]),G(a[1]),G(a[3]),G(a[1]),G(a[2]),G(a[3])}function N(e){i.push(s[3*e+0]),i.push(s[3*e+1]),i.push(s[3*e+2])}function G(e){r.push(e.x),r.push(e.y)}!function(){const e=i.length/3;if(c){let e=0,t=B*e;for(let e=0;e\u003CS;e++){const n=M[e];Q(n[2]+t,n[1]+t,n[0]+t)}e=a+2*p,t=B*e;for(let e=0;e\u003CS;e++){const n=M[e];Q(n[0]+t,n[1]+t,n[2]+t)}}else{for(let e=0;e\u003CS;e++){const t=M[e];Q(t[2],t[1],t[0])}for(let e=0;e\u003CS;e++){const t=M[e];Q(t[0]+B*a,t[1]+B*a,t[2]+B*a)}}n.addGroup(e,i.length/3-e,0)}(),function(){const e=i.length/3;let t=0;F(_,t),t+=_.length;for(let e=0,n=C.length;e\u003Cn;e++){const n=C[e];F(n,t),t+=n.length}n.addGroup(e,i.length/3-e,1)}()}this.setAttribute(\"position\",new Fr(i,3)),this.setAttribute(\"uv\",new Fr(r,2)),this.computeVertexNormals()}toJSON(){const e=super.toJSON();return function(e,t,n){if(n.shapes=[],Array.isArray(e))for(let t=0,i=e.length;t\u003Ci;t++){const i=e[t];n.shapes.push(i.uuid)}else n.shapes.push(e.uuid);return n.options=Object.assign({},t),void 0!==t.extrudePath&&(n.options.extrudePath=t.extrudePath.toJSON()),n}(this.parameters.shapes,this.parameters.options,e)}static fromJSON(e,t){const n=[];for(let i=0,r=e.shapes.length;i\u003Cr;i++){const r=t[e.shapes[i]];n.push(r)}const i=e.options.extrudePath;return void 0!==i&&(e.options.extrudePath=(new Hc[i.type]).fromJSON(i)),new Dh(n,e.options)}}const Rh={generateTopUV:function(e,t,n,i,r){const s=t[3*n],o=t[3*n+1],a=t[3*i],l=t[3*i+1],c=t[3*r],h=t[3*r+1];return[new Ln(s,o),new Ln(a,l),new Ln(c,h)]},generateSideWallUV:function(e,t,n,i,r,s){const o=t[3*n],a=t[3*n+1],l=t[3*n+2],c=t[3*i],h=t[3*i+1],u=t[3*i+2],d=t[3*r],p=t[3*r+1],A=t[3*r+2],f=t[3*s],m=t[3*s+1],g=t[3*s+2];return Math.abs(a-h)\u003CMath.abs(o-c)?[new Ln(o,1-l),new Ln(c,1-u),new Ln(d,1-A),new Ln(f,1-g)]:[new Ln(a,1-l),new Ln(h,1-u),new Ln(p,1-A),new Ln(m,1-g)]}};class Ph extends Kc{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2;super([-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type=\"IcosahedronGeometry\",this.parameters={radius:e,detail:t}}static fromJSON(e){return new Ph(e.radius,e.detail)}}class kh extends Kc{constructor(e=1,t=0){super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type=\"OctahedronGeometry\",this.parameters={radius:e,detail:t}}static fromJSON(e){return new kh(e.radius,e.detail)}}class Fh extends Wr{constructor(e=.5,t=1,n=8,i=1,r=0,s=2*Math.PI){super(),this.type=\"RingGeometry\",this.parameters={innerRadius:e,outerRadius:t,thetaSegments:n,phiSegments:i,thetaStart:r,thetaLength:s},n=Math.max(3,n);const o=[],a=[],l=[],c=[];let h=e;const u=(t-e)/(i=Math.max(1,i)),d=new ci,p=new Ln;for(let e=0;e\u003C=i;e++){for(let e=0;e\u003C=n;e++){const i=r+e/n*s;d.x=h*Math.cos(i),d.y=h*Math.sin(i),a.push(d.x,d.y,d.z),l.push(0,0,1),p.x=(d.x/t+1)/2,p.y=(d.y/t+1)/2,c.push(p.x,p.y)}h+=u}for(let e=0;e\u003Ci;e++){const t=e*(n+1);for(let e=0;e\u003Cn;e++){const i=e+t,r=i,s=i+n+1,a=i+n+2,l=i+1;o.push(r,s,l),o.push(s,a,l)}}this.setIndex(o),this.setAttribute(\"position\",new Fr(a,3)),this.setAttribute(\"normal\",new Fr(l,3)),this.setAttribute(\"uv\",new Fr(c,2))}static fromJSON(e){return new Fh(e.innerRadius,e.outerRadius,e.thetaSegments,e.phiSegments,e.thetaStart,e.thetaLength)}}class Oh extends Wr{constructor(e=new rh([new Ln(0,.5),new Ln(-.5,-.5),new Ln(.5,-.5)]),t=12){super(),this.type=\"ShapeGeometry\",this.parameters={shapes:e,curveSegments:t};const n=[],i=[],r=[],s=[];let o=0,a=0;if(!1===Array.isArray(e))l(e);else for(let t=0;t\u003Ce.length;t++)l(e[t]),this.addGroup(o,a,t),o+=a,a=0;function l(e){const o=i.length/3,l=e.extractPoints(t);let c=l.shape;const h=l.holes;!1===Sh.isClockWise(c)&&(c=c.reverse());for(let e=0,t=h.length;e\u003Ct;e++){const t=h[e];!0===Sh.isClockWise(t)&&(h[e]=t.reverse())}const u=Sh.triangulateShape(c,h);for(let e=0,t=h.length;e\u003Ct;e++){const t=h[e];c=c.concat(t)}for(let e=0,t=c.length;e\u003Ct;e++){const t=c[e];i.push(t.x,t.y,0),r.push(0,0,1),s.push(t.x,t.y)}for(let e=0,t=u.length;e\u003Ct;e++){const t=u[e],i=t[0]+o,r=t[1]+o,s=t[2]+o;n.push(i,r,s),a+=3}}this.setIndex(n),this.setAttribute(\"position\",new Fr(i,3)),this.setAttribute(\"normal\",new Fr(r,3)),this.setAttribute(\"uv\",new Fr(s,2))}toJSON(){const e=super.toJSON();return function(e,t){if(t.shapes=[],Array.isArray(e))for(let n=0,i=e.length;n\u003Ci;n++){const i=e[n];t.shapes.push(i.uuid)}else t.shapes.push(e.uuid);return t}(this.parameters.shapes,e)}static fromJSON(e,t){const n=[];for(let i=0,r=e.shapes.length;i\u003Cr;i++){const r=t[e.shapes[i]];n.push(r)}return new Oh(n,e.curveSegments)}}class Qh extends Wr{constructor(e=1,t=32,n=16,i=0,r=2*Math.PI,s=0,o=Math.PI){super(),this.type=\"SphereGeometry\",this.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:i,phiLength:r,thetaStart:s,thetaLength:o},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));const a=Math.min(s+o,Math.PI);let l=0;const c=[],h=new ci,u=new ci,d=[],p=[],A=[],f=[];for(let d=0;d\u003C=n;d++){const m=[],g=d/n;let v=0;0==d&&0==s?v=.5/t:d==n&&a==Math.PI&&(v=-.5/t);for(let n=0;n\u003C=t;n++){const a=n/t;h.x=-e*Math.cos(i+a*r)*Math.sin(s+g*o),h.y=e*Math.cos(s+g*o),h.z=e*Math.sin(i+a*r)*Math.sin(s+g*o),p.push(h.x,h.y,h.z),u.copy(h).normalize(),A.push(u.x,u.y,u.z),f.push(a+v,1-g),m.push(l++)}c.push(m)}for(let e=0;e\u003Cn;e++)for(let i=0;i\u003Ct;i++){const t=c[e][i+1],r=c[e][i],o=c[e+1][i],l=c[e+1][i+1];(0!==e||s>0)&&d.push(t,r,l),(e!==n-1||a\u003CMath.PI)&&d.push(r,o,l)}this.setIndex(d),this.setAttribute(\"position\",new Fr(p,3)),this.setAttribute(\"normal\",new Fr(A,3)),this.setAttribute(\"uv\",new Fr(f,2))}static fromJSON(e){return new Qh(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}}class Uh extends Kc{constructor(e=1,t=0){super([1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type=\"TetrahedronGeometry\",this.parameters={radius:e,detail:t}}static fromJSON(e){return new Uh(e.radius,e.detail)}}class Nh extends Wr{constructor(e=1,t=.4,n=8,i=6,r=2*Math.PI){super(),this.type=\"TorusGeometry\",this.parameters={radius:e,tube:t,radialSegments:n,tubularSegments:i,arc:r},n=Math.floor(n),i=Math.floor(i);const s=[],o=[],a=[],l=[],c=new ci,h=new ci,u=new ci;for(let s=0;s\u003C=n;s++)for(let d=0;d\u003C=i;d++){const p=d/i*r,A=s/n*Math.PI*2;h.x=(e+t*Math.cos(A))*Math.cos(p),h.y=(e+t*Math.cos(A))*Math.sin(p),h.z=t*Math.sin(A),o.push(h.x,h.y,h.z),c.x=e*Math.cos(p),c.y=e*Math.sin(p),u.subVectors(h,c).normalize(),a.push(u.x,u.y,u.z),l.push(d/i),l.push(s/n)}for(let e=1;e\u003C=n;e++)for(let t=1;t\u003C=i;t++){const n=(i+1)*e+t-1,r=(i+1)*(e-1)+t-1,o=(i+1)*(e-1)+t,a=(i+1)*e+t;s.push(n,r,a),s.push(r,o,a)}this.setIndex(s),this.setAttribute(\"position\",new Fr(o,3)),this.setAttribute(\"normal\",new Fr(a,3)),this.setAttribute(\"uv\",new Fr(l,2))}static fromJSON(e){return new Nh(e.radius,e.tube,e.radialSegments,e.tubularSegments,e.arc)}}class Gh extends Wr{constructor(e=1,t=.4,n=64,i=8,r=2,s=3){super(),this.type=\"TorusKnotGeometry\",this.parameters={radius:e,tube:t,tubularSegments:n,radialSegments:i,p:r,q:s},n=Math.floor(n),i=Math.floor(i);const o=[],a=[],l=[],c=[],h=new ci,u=new ci,d=new ci,p=new ci,A=new ci,f=new ci,m=new ci;for(let o=0;o\u003C=n;++o){const v=o/n*r*Math.PI*2;g(v,r,s,e,d),g(v+.01,r,s,e,p),f.subVectors(p,d),m.addVectors(p,d),A.crossVectors(f,m),m.crossVectors(A,f),A.normalize(),m.normalize();for(let e=0;e\u003C=i;++e){const r=e/i*Math.PI*2,s=-t*Math.cos(r),p=t*Math.sin(r);h.x=d.x+(s*m.x+p*A.x),h.y=d.y+(s*m.y+p*A.y),h.z=d.z+(s*m.z+p*A.z),a.push(h.x,h.y,h.z),u.subVectors(h,d).normalize(),l.push(u.x,u.y,u.z),c.push(o/n),c.push(e/i)}}for(let e=1;e\u003C=n;e++)for(let t=1;t\u003C=i;t++){const n=(i+1)*(e-1)+(t-1),r=(i+1)*e+(t-1),s=(i+1)*e+t,a=(i+1)*(e-1)+t;o.push(n,r,a),o.push(r,s,a)}function g(e,t,n,i,r){const s=Math.cos(e),o=Math.sin(e),a=n/t*e,l=Math.cos(a);r.x=i*(2+l)*.5*s,r.y=i*(2+l)*o*.5,r.z=i*Math.sin(a)*.5}this.setIndex(o),this.setAttribute(\"position\",new Fr(a,3)),this.setAttribute(\"normal\",new Fr(l,3)),this.setAttribute(\"uv\",new Fr(c,2))}static fromJSON(e){return new Gh(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}}class zh extends Wr{constructor(e=new Gc(new ci(-1,-1,0),new ci(-1,1,0),new ci(1,1,0)),t=64,n=1,i=8,r=!1){super(),this.type=\"TubeGeometry\",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r};const s=e.computeFrenetFrames(t,r);this.tangents=s.tangents,this.normals=s.normals,this.binormals=s.binormals;const o=new ci,a=new ci,l=new Ln;let c=new ci;const h=[],u=[],d=[],p=[];function A(r){c=e.getPointAt(r/t,c);const l=s.normals[r],d=s.binormals[r];for(let e=0;e\u003C=i;e++){const t=e/i*Math.PI*2,r=Math.sin(t),s=-Math.cos(t);a.x=s*l.x+r*d.x,a.y=s*l.y+r*d.y,a.z=s*l.z+r*d.z,a.normalize(),u.push(a.x,a.y,a.z),o.x=c.x+n*a.x,o.y=c.y+n*a.y,o.z=c.z+n*a.z,h.push(o.x,o.y,o.z)}}!function(){for(let e=0;e\u003Ct;e++)A(e);A(!1===r?t:0),function(){for(let e=0;e\u003C=t;e++)for(let n=0;n\u003C=i;n++)l.x=e/t,l.y=n/i,d.push(l.x,l.y)}(),function(){for(let e=1;e\u003C=t;e++)for(let t=1;t\u003C=i;t++){const n=(i+1)*(e-1)+(t-1),r=(i+1)*e+(t-1),s=(i+1)*e+t,o=(i+1)*(e-1)+t;p.push(n,r,o),p.push(r,s,o)}}()}(),this.setIndex(p),this.setAttribute(\"position\",new Fr(h,3)),this.setAttribute(\"normal\",new Fr(u,3)),this.setAttribute(\"uv\",new Fr(d,2))}toJSON(){const e=super.toJSON();return e.path=this.parameters.path.toJSON(),e}static fromJSON(e){return new zh((new Hc[e.path.type]).fromJSON(e.path),e.tubularSegments,e.radius,e.radialSegments,e.closed)}}class Hh extends Wr{constructor(e=null){if(super(),this.type=\"WireframeGeometry\",this.parameters={geometry:e},null!==e){const t=[],n=new Set,i=new ci,r=new ci;if(null!==e.index){const s=e.attributes.position,o=e.index;let a=e.groups;0===a.length&&(a=[{start:0,count:o.count,materialIndex:0}]);for(let e=0,l=a.length;e\u003Cl;++e){const l=a[e],c=l.start;for(let e=c,a=c+l.count;e\u003Ca;e+=3)for(let a=0;a\u003C3;a++){const l=o.getX(e+a),c=o.getX(e+(a+1)%3);i.fromBufferAttribute(s,l),r.fromBufferAttribute(s,c),!0===Vh(i,r,n)&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}}else{const s=e.attributes.position;for(let e=0,o=s.count/3;e\u003Co;e++)for(let o=0;o\u003C3;o++){const a=3*e+o,l=3*e+(o+1)%3;i.fromBufferAttribute(s,a),r.fromBufferAttribute(s,l),!0===Vh(i,r,n)&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}this.setAttribute(\"position\",new Fr(t,3))}}}function Vh(e,t,n){const i=`${e.x},${e.y},${e.z}-${t.x},${t.y},${t.z}`,r=`${t.x},${t.y},${t.z}-${e.x},${e.y},${e.z}`;return!0!==n.has(i)&&!0!==n.has(r)&&(n.add(i),n.add(r),!0)}var Wh=Object.freeze({__proto__:null,BoxGeometry:us,CapsuleGeometry:qc,CircleGeometry:Yc,ConeGeometry:Jc,CylinderGeometry:Xc,DodecahedronGeometry:Zc,EdgesGeometry:ih,ExtrudeGeometry:Dh,IcosahedronGeometry:Ph,LatheGeometry:jc,OctahedronGeometry:kh,PlaneGeometry:Ds,PolyhedronGeometry:Kc,RingGeometry:Fh,ShapeGeometry:Oh,SphereGeometry:Qh,TetrahedronGeometry:Uh,TorusGeometry:Nh,TorusKnotGeometry:Gh,TubeGeometry:zh,WireframeGeometry:Hh});class jh extends wr{constructor(e){super(),this.isShadowMaterial=!0,this.type=\"ShadowMaterial\",this.color=new Yn(0),this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,this}}class qh extends ms{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type=\"RawShaderMaterial\"}}class Yh extends wr{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:\"\"},this.type=\"MeshStandardMaterial\",this.color=new Yn(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Yn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ft,this.normalScale=new Ln(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=\"round\",this.wireframeLinejoin=\"round\",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:\"\"},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Xh extends Yh{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:\"\",PHYSICAL:\"\"},this.type=\"MeshPhysicalMaterial\",this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Ln(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,\"reflectivity\",{get:function(){return xn(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new Yn(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new Yn(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new Yn(1,1,1),this.specularColorMap=null,this._sheen=0,this._clearcoat=0,this._iridescence=0,this._transmission=0,this.setValues(e)}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:\"\",PHYSICAL:\"\"},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class Jh extends wr{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type=\"MeshPhongMaterial\",this.color=new Yn(16777215),this.specular=new Yn(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Yn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ft,this.normalScale=new Ln(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=X,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=\"round\",this.wireframeLinejoin=\"round\",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Kh extends wr{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:\"\"},this.type=\"MeshToonMaterial\",this.color=new Yn(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Yn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ft,this.normalScale=new Ln(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=\"round\",this.wireframeLinejoin=\"round\",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class Zh extends wr{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type=\"MeshNormalMaterial\",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ft,this.normalScale=new Ln(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class $h extends wr{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type=\"MeshLambertMaterial\",this.color=new Yn(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Yn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ft,this.normalScale=new Ln(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=X,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=\"round\",this.wireframeLinejoin=\"round\",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class eu extends wr{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:\"\"},this.type=\"MeshMatcapMaterial\",this.color=new Yn(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ft,this.normalScale=new Ln(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:\"\"},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}class tu extends tc{constructor(e){super(),this.isLineDashedMaterial=!0,this.type=\"LineDashedMaterial\",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function nu(e,t,n){return ru(e)?new e.constructor(e.subarray(t,void 0!==n?n:e.length)):e.slice(t,n)}function iu(e,t,n){return!e||!n&&e.constructor===t?e:\"number\"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)}function ru(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function su(e){const t=e.length,n=new Array(t);for(let e=0;e!==t;++e)n[e]=e;return n.sort((function(t,n){return e[t]-e[n]})),n}function ou(e,t,n){const i=e.length,r=new e.constructor(i);for(let s=0,o=0;o!==i;++s){const i=n[s]*t;for(let n=0;n!==t;++n)r[o++]=e[i+n]}return r}function au(e,t,n,i){let r=1,s=e[0];for(;void 0!==s&&void 0===s[i];)s=e[r++];if(void 0===s)return;let o=s[i];if(void 0!==o)if(Array.isArray(o))do{o=s[i],void 0!==o&&(t.push(s.time),n.push.apply(n,o)),s=e[r++]}while(void 0!==s);else if(void 0!==o.toArray)do{o=s[i],void 0!==o&&(t.push(s.time),o.toArray(n,n.length)),s=e[r++]}while(void 0!==s);else do{o=s[i],void 0!==o&&(t.push(s.time),n.push(o)),s=e[r++]}while(void 0!==s)}var lu=Object.freeze({__proto__:null,arraySlice:nu,convertArray:iu,isTypedArray:ru,getKeyframeOrder:su,sortedArray:ou,flattenJSON:au,subclip:function(e,t,n,i,r=30){const s=e.clone();s.name=t;const o=[];for(let e=0;e\u003Cs.tracks.length;++e){const t=s.tracks[e],a=t.getValueSize(),l=[],c=[];for(let e=0;e\u003Ct.times.length;++e){const s=t.times[e]*r;if(!(s\u003Cn||s>=i)){l.push(t.times[e]);for(let n=0;n\u003Ca;++n)c.push(t.values[e*a+n])}}0!==l.length&&(t.times=iu(l,t.times.constructor),t.values=iu(c,t.values.constructor),o.push(t))}s.tracks=o;let a=1/0;for(let e=0;e\u003Cs.tracks.length;++e)a>s.tracks[e].times[0]&&(a=s.tracks[e].times[0]);for(let e=0;e\u003Cs.tracks.length;++e)s.tracks[e].shift(-1*a);return s.resetDuration(),s},makeClipAdditive:function(e,t=0,n=e,i=30){i\u003C=0&&(i=30);const r=n.tracks.length,s=t/i;for(let t=0;t\u003Cr;++t){const i=n.tracks[t],r=i.ValueTypeName;if(\"bool\"===r||\"string\"===r)continue;const o=e.tracks.find((function(e){return e.name===i.name&&e.ValueTypeName===r}));if(void 0===o)continue;let a=0;const l=i.getValueSize();i.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(a=l/3);let c=0;const h=o.getValueSize();o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(c=h/3);const u=i.times.length-1;let d;if(s\u003C=i.times[0]){const e=a,t=l-a;d=nu(i.values,e,t)}else if(s>=i.times[u]){const e=u*l+a,t=e+l-a;d=nu(i.values,e,t)}else{const e=i.createInterpolant(),t=a,n=l-a;e.evaluate(s),d=nu(e.resultBuffer,t,n)}\"quaternion\"===r&&(new li).fromArray(d).normalize().conjugate().toArray(d);const p=o.times.length;for(let e=0;e\u003Cp;++e){const t=e*h+c;if(\"quaternion\"===r)li.multiplyQuaternionsFlat(o.values,t,d,0,o.values,t);else{const e=h-2*c;for(let n=0;n\u003Ce;++n)o.values[t+n]-=d[n]}}}return e.blendMode=Bt,e}});class cu{constructor(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=void 0!==i?i:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let n=this._cachedIndex,i=t[n],r=t[n-1];e:{t:{let s;n:{i:if(!(e\u003Ci)){for(let s=n+2;;){if(void 0===i){if(e\u003Cr)break i;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===s)break;if(r=i,i=t[++n],e\u003Ci)break t}s=t.length;break n}if(e>=r)break e;{const o=t[1];e\u003Co&&(n=2,r=o);for(let s=n-2;;){if(void 0===r)return this._cachedIndex=0,this.copySampleValue_(0);if(n===s)break;if(i=r,r=t[--n-1],e>=r)break t}s=n,n=0}}for(;n\u003Cs;){const i=n+s>>>1;e\u003Ct[i]?s=i:n=i+1}if(i=t[n],r=t[n-1],void 0===r)return this._cachedIndex=0,this.copySampleValue_(0);if(void 0===i)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,r,i)}return this.interpolate_(n,r,e,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i;for(let e=0;e!==i;++e)t[e]=n[r+e];return t}interpolate_(){throw new Error(\"call to abstract method\")}intervalChanged_(){}}class hu extends cu{constructor(e,t,n,i){super(e,t,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:Ct,endingEnd:Ct}}intervalChanged_(e,t,n){const i=this.parameterPositions;let r=e-2,s=e+1,o=i[r],a=i[s];if(void 0===o)switch(this.getSettings_().endingStart){case Mt:r=e,o=2*t-n;break;case _t:r=i.length-2,o=t+i[r]-i[r+1];break;default:r=e,o=n}if(void 0===a)switch(this.getSettings_().endingEnd){case Mt:s=e,a=2*n-t;break;case _t:s=1,a=n+i[1]-i[0];break;default:s=e-1,a=t}const l=.5*(n-t),c=this.valueSize;this._weightPrev=l/(t-o),this._weightNext=l/(a-n),this._offsetPrev=r*c,this._offsetNext=s*c}interpolate_(e,t,n,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=e*o,l=a-o,c=this._offsetPrev,h=this._offsetNext,u=this._weightPrev,d=this._weightNext,p=(n-t)/(i-t),A=p*p,f=A*p,m=-u*f+2*u*A-u*p,g=(1+u)*f+(-1.5-2*u)*A+(-.5+u)*p+1,v=(-1-d)*f+(1.5+d)*A+.5*p,y=d*f-d*A;for(let e=0;e!==o;++e)r[e]=m*s[c+e]+g*s[l+e]+v*s[a+e]+y*s[h+e];return r}}class uu extends cu{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=e*o,l=a-o,c=(n-t)/(i-t),h=1-c;for(let e=0;e!==o;++e)r[e]=s[l+e]*h+s[a+e]*c;return r}}class du extends cu{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){return this.copySampleValue_(e-1)}}class pu{constructor(e,t,n,i){if(void 0===e)throw new Error(\"THREE.KeyframeTrack: track name is undefined\");if(void 0===t||0===t.length)throw new Error(\"THREE.KeyframeTrack: no keyframes in track named \"+e);this.name=e,this.times=iu(t,this.TimeBufferType),this.values=iu(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(e){const t=e.constructor;let n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:iu(e.times,Array),values:iu(e.values,Array)};const t=e.getInterpolation();t!==e.DefaultInterpolation&&(n.interpolation=t)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new du(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new uu(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new hu(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case bt:t=this.InterpolantFactoryMethodDiscrete;break;case xt:t=this.InterpolantFactoryMethodLinear;break;case wt:t=this.InterpolantFactoryMethodSmooth}if(void 0===t){const t=\"unsupported interpolation for \"+this.ValueTypeName+\" keyframe track named \"+this.name;if(void 0===this.createInterpolant){if(e===this.DefaultInterpolation)throw new Error(t);this.setInterpolation(this.DefaultInterpolation)}return console.warn(\"THREE.KeyframeTrack:\",t),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return bt;case this.InterpolantFactoryMethodLinear:return xt;case this.InterpolantFactoryMethodSmooth:return wt}}getValueSize(){return this.values.length/this.times.length}shift(e){if(0!==e){const t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]+=e}return this}scale(e){if(1!==e){const t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]*=e}return this}trim(e,t){const n=this.times,i=n.length;let r=0,s=i-1;for(;r!==i&&n[r]\u003Ce;)++r;for(;-1!==s&&n[s]>t;)--s;if(++s,0!==r||s!==i){r>=s&&(s=Math.max(s,1),r=s-1);const e=this.getValueSize();this.times=nu(n,r,s),this.values=nu(this.values,r*e,s*e)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!=0&&(console.error(\"THREE.KeyframeTrack: Invalid value size in track.\",this),e=!1);const n=this.times,i=this.values,r=n.length;0===r&&(console.error(\"THREE.KeyframeTrack: Track is empty.\",this),e=!1);let s=null;for(let t=0;t!==r;t++){const i=n[t];if(\"number\"==typeof i&&isNaN(i)){console.error(\"THREE.KeyframeTrack: Time is not a valid number.\",this,t,i),e=!1;break}if(null!==s&&s>i){console.error(\"THREE.KeyframeTrack: Out of order keys.\",this,t,i,s),e=!1;break}s=i}if(void 0!==i&&ru(i))for(let t=0,n=i.length;t!==n;++t){const n=i[t];if(isNaN(n)){console.error(\"THREE.KeyframeTrack: Value is not a valid number.\",this,t,n),e=!1;break}}return e}optimize(){const e=nu(this.times),t=nu(this.values),n=this.getValueSize(),i=this.getInterpolation()===wt,r=e.length-1;let s=1;for(let o=1;o\u003Cr;++o){let r=!1;const a=e[o];if(a!==e[o+1]&&(1!==o||a!==e[0]))if(i)r=!0;else{const e=o*n,i=e-n,s=e+n;for(let o=0;o!==n;++o){const n=t[e+o];if(n!==t[i+o]||n!==t[s+o]){r=!0;break}}}if(r){if(o!==s){e[s]=e[o];const i=o*n,r=s*n;for(let e=0;e!==n;++e)t[r+e]=t[i+e]}++s}}if(r>0){e[s]=e[r];for(let e=r*n,i=s*n,o=0;o!==n;++o)t[i+o]=t[e+o];++s}return s!==e.length?(this.times=nu(e,0,s),this.values=nu(t,0,s*n)):(this.times=e,this.values=t),this}clone(){const e=nu(this.times,0),t=nu(this.values,0),n=new(0,this.constructor)(this.name,e,t);return n.createInterpolant=this.createInterpolant,n}}pu.prototype.TimeBufferType=Float32Array,pu.prototype.ValueBufferType=Float32Array,pu.prototype.DefaultInterpolation=xt;class Au extends pu{}Au.prototype.ValueTypeName=\"bool\",Au.prototype.ValueBufferType=Array,Au.prototype.DefaultInterpolation=bt,Au.prototype.InterpolantFactoryMethodLinear=void 0,Au.prototype.InterpolantFactoryMethodSmooth=void 0;class fu extends pu{}fu.prototype.ValueTypeName=\"color\";class mu extends pu{}mu.prototype.ValueTypeName=\"number\";class gu extends cu{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=(n-t)/(i-t);let l=e*o;for(let e=l+o;l!==e;l+=4)li.slerpFlat(r,0,s,l-o,s,l,a);return r}}class vu extends pu{InterpolantFactoryMethodLinear(e){return new gu(this.times,this.values,this.getValueSize(),e)}}vu.prototype.ValueTypeName=\"quaternion\",vu.prototype.DefaultInterpolation=xt,vu.prototype.InterpolantFactoryMethodSmooth=void 0;class yu extends pu{}yu.prototype.ValueTypeName=\"string\",yu.prototype.ValueBufferType=Array,yu.prototype.DefaultInterpolation=bt,yu.prototype.InterpolantFactoryMethodLinear=void 0,yu.prototype.InterpolantFactoryMethodSmooth=void 0;class Eu extends pu{}Eu.prototype.ValueTypeName=\"vector\";class bu{constructor(e,t=-1,n,i=It){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=bn(),this.duration\u003C0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,i=1/(e.fps||1);for(let e=0,r=n.length;e!==r;++e)t.push(xu(n[e]).scale(i));const r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){const t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,i=n.length;e!==i;++e)t.push(pu.toJSON(n[e]));return i}static CreateFromMorphTargetSequence(e,t,n,i){const r=t.length,s=[];for(let e=0;e\u003Cr;e++){let o=[],a=[];o.push((e+r-1)%r,e,(e+1)%r),a.push(0,1,0);const l=su(o);o=ou(o,1,l),a=ou(a,1,l),i||0!==o[0]||(o.push(r),a.push(a[0])),s.push(new mu(\".morphTargetInfluences[\"+t[e].name+\"]\",o,a).scale(1/n))}return new this(e,-1,s)}static findByName(e,t){let n=e;if(!Array.isArray(e)){const t=e;n=t.geometry&&t.geometry.animations||t.animations}for(let e=0;e\u003Cn.length;e++)if(n[e].name===t)return n[e];return null}static CreateClipsFromMorphTargetSequences(e,t,n){const i={},r=/^([\\w-]*?)([\\d]+)$/;for(let t=0,n=e.length;t\u003Cn;t++){const n=e[t],s=n.name.match(r);if(s&&s.length>1){const e=s[1];let t=i[e];t||(i[e]=t=[]),t.push(n)}}const s=[];for(const e in i)s.push(this.CreateFromMorphTargetSequence(e,i[e],t,n));return s}static parseAnimation(e,t){if(!e)return console.error(\"THREE.AnimationClip: No animation in JSONLoader data.\"),null;const n=function(e,t,n,i,r){if(0!==n.length){const s=[],o=[];au(n,s,o,i),0!==s.length&&r.push(new e(t,s,o))}},i=[],r=e.name||\"default\",s=e.fps||30,o=e.blendMode;let a=e.length||-1;const l=e.hierarchy||[];for(let e=0;e\u003Cl.length;e++){const r=l[e].keys;if(r&&0!==r.length)if(r[0].morphTargets){const e={};let t;for(t=0;t\u003Cr.length;t++)if(r[t].morphTargets)for(let n=0;n\u003Cr[t].morphTargets.length;n++)e[r[t].morphTargets[n]]=-1;for(const n in e){const e=[],s=[];for(let i=0;i!==r[t].morphTargets.length;++i){const i=r[t];e.push(i.time),s.push(i.morphTarget===n?1:0)}i.push(new mu(\".morphTargetInfluence[\"+n+\"]\",e,s))}a=e.length*s}else{const s=\".bones[\"+t[e].name+\"]\";n(Eu,s+\".position\",r,\"pos\",i),n(vu,s+\".quaternion\",r,\"rot\",i),n(Eu,s+\".scale\",r,\"scl\",i)}}return 0===i.length?null:new this(r,a,i,o)}resetDuration(){let e=0;for(let t=0,n=this.tracks.length;t!==n;++t){const n=this.tracks[t];e=Math.max(e,n.times[n.times.length-1])}return this.duration=e,this}trim(){for(let e=0;e\u003Cthis.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let t=0;t\u003Cthis.tracks.length;t++)e=e&&this.tracks[t].validate();return e}optimize(){for(let e=0;e\u003Cthis.tracks.length;e++)this.tracks[e].optimize();return this}clone(){const e=[];for(let t=0;t\u003Cthis.tracks.length;t++)e.push(this.tracks[t].clone());return new this.constructor(this.name,this.duration,e,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function xu(e){if(void 0===e.type)throw new Error(\"THREE.KeyframeTrack: track type undefined, can not parse\");const t=function(e){switch(e.toLowerCase()){case\"scalar\":case\"double\":case\"float\":case\"number\":case\"integer\":return mu;case\"vector\":case\"vector2\":case\"vector3\":case\"vector4\":return Eu;case\"color\":return fu;case\"quaternion\":return vu;case\"bool\":case\"boolean\":return Au;case\"string\":return yu}throw new Error(\"THREE.KeyframeTrack: Unsupported typeName: \"+e)}(e.type);if(void 0===e.times){const t=[],n=[];au(e.keys,t,n,\"value\"),e.times=t,e.values=n}return void 0!==t.parse?t.parse(e):new t(e.name,e.times,e.values,e.interpolation)}const wu={enabled:!1,files:{},add:function(e,t){!1!==this.enabled&&(this.files[e]=t)},get:function(e){if(!1!==this.enabled)return this.files[e]},remove:function(e){delete this.files[e]},clear:function(){this.files={}}};class Cu{constructor(e,t,n){const i=this;let r,s=!1,o=0,a=0;const l=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(e){a++,!1===s&&void 0!==i.onStart&&i.onStart(e,o,a),s=!0},this.itemEnd=function(e){o++,void 0!==i.onProgress&&i.onProgress(e,o,a),o===a&&(s=!1,void 0!==i.onLoad&&i.onLoad())},this.itemError=function(e){void 0!==i.onError&&i.onError(e)},this.resolveURL=function(e){return r?r(e):e},this.setURLModifier=function(e){return r=e,this},this.addHandler=function(e,t){return l.push(e,t),this},this.removeHandler=function(e){const t=l.indexOf(e);return-1!==t&&l.splice(t,2),this},this.getHandler=function(e){for(let t=0,n=l.length;t\u003Cn;t+=2){const n=l[t],i=l[t+1];if(n.global&&(n.lastIndex=0),n.test(e))return i}return null}}}const Mu=new Cu;class _u{constructor(e){this.manager=void 0!==e?e:Mu,this.crossOrigin=\"anonymous\",this.withCredentials=!1,this.path=\"\",this.resourcePath=\"\",this.requestHeader={}}load(){}loadAsync(e,t){const n=this;return new Promise((function(i,r){n.load(e,i,t,r)}))}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}}const Iu={};class Bu extends Error{constructor(e,t){super(e),this.response=t}}class Su extends _u{constructor(e){super(e)}load(e,t,n,i){void 0===e&&(e=\"\"),void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=wu.get(e);if(void 0!==r)return this.manager.itemStart(e),setTimeout((()=>{t&&t(r),this.manager.itemEnd(e)}),0),r;if(void 0!==Iu[e])return void Iu[e].push({onLoad:t,onProgress:n,onError:i});Iu[e]=[],Iu[e].push({onLoad:t,onProgress:n,onError:i});const s=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?\"include\":\"same-origin\"}),o=this.mimeType,a=this.responseType;fetch(s).then((t=>{if(200===t.status||0===t.status){if(0===t.status&&console.warn(\"THREE.FileLoader: HTTP Status 0 received.\"),\"undefined\"==typeof ReadableStream||void 0===t.body||void 0===t.body.getReader)return t;const n=Iu[e],i=t.body.getReader(),r=t.headers.get(\"Content-Length\")||t.headers.get(\"X-File-Size\"),s=r?parseInt(r):0,o=0!==s;let a=0;const l=new ReadableStream({start(e){!function t(){i.read().then((({done:i,value:r})=>{if(i)e.close();else{a+=r.byteLength;const i=new ProgressEvent(\"progress\",{lengthComputable:o,loaded:a,total:s});for(let e=0,t=n.length;e\u003Ct;e++){const t=n[e];t.onProgress&&t.onProgress(i)}e.enqueue(r),t()}}))}()}});return new Response(l)}throw new Bu(`fetch for \"${t.url}\" responded with ${t.status}: ${t.statusText}`,t)})).then((e=>{switch(a){case\"arraybuffer\":return e.arrayBuffer();case\"blob\":return e.blob();case\"document\":return e.text().then((e=>(new DOMParser).parseFromString(e,o)));case\"json\":return e.json();default:if(void 0===o)return e.text();{const t=/charset=\"?([^;\"\\s]*)\"?/i.exec(o),n=t&&t[1]?t[1].toLowerCase():void 0,i=new TextDecoder(n);return e.arrayBuffer().then((e=>i.decode(e)))}}})).then((t=>{wu.add(e,t);const n=Iu[e];delete Iu[e];for(let e=0,i=n.length;e\u003Ci;e++){const i=n[e];i.onLoad&&i.onLoad(t)}})).catch((t=>{const n=Iu[e];if(void 0===n)throw this.manager.itemError(e),t;delete Iu[e];for(let e=0,i=n.length;e\u003Ci;e++){const i=n[e];i.onError&&i.onError(t)}this.manager.itemError(e)})).finally((()=>{this.manager.itemEnd(e)})),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class Tu extends _u{constructor(e){super(e)}load(e,t,n,i){const r=this,s=new Su(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,(function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}}),n,i)}parse(e){const t=[];for(let n=0;n\u003Ce.length;n++){const i=bu.parse(e[n]);t.push(i)}return t}}class Lu extends _u{constructor(e){super(e)}load(e,t,n,i){const r=this,s=[],o=new bc,a=new Su(this.manager);a.setPath(this.path),a.setResponseType(\"arraybuffer\"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(r.withCredentials);let l=0;function c(c){a.load(e[c],(function(e){const n=r.parse(e,!0);s[c]={width:n.width,height:n.height,format:n.format,mipmaps:n.mipmaps},l+=1,6===l&&(1===n.mipmapCount&&(o.minFilter=ve),o.image=s,o.format=n.format,o.needsUpdate=!0,t&&t(o))}),n,i)}if(Array.isArray(e))for(let t=0,n=e.length;t\u003Cn;++t)c(t);else a.load(e,(function(e){const n=r.parse(e,!0);if(n.isCubemap){const e=n.mipmaps.length/n.mipmapCount;for(let t=0;t\u003Ce;t++){s[t]={mipmaps:[]};for(let e=0;e\u003Cn.mipmapCount;e++)s[t].mipmaps.push(n.mipmaps[t*n.mipmapCount+e]),s[t].format=n.format,s[t].width=n.width,s[t].height=n.height}o.image=s}else o.image.width=n.width,o.image.height=n.height,o.mipmaps=n.mipmaps;1===n.mipmapCount&&(o.minFilter=ve),o.format=n.format,o.needsUpdate=!0,t&&t(o)}),n,i);return o}}class Du extends _u{constructor(e){super(e)}load(e,t,n,i){void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,s=wu.get(e);if(void 0!==s)return r.manager.itemStart(e),setTimeout((function(){t&&t(s),r.manager.itemEnd(e)}),0),s;const o=On(\"img\");function a(){c(),wu.add(e,this),t&&t(this),r.manager.itemEnd(e)}function l(t){c(),i&&i(t),r.manager.itemError(e),r.manager.itemEnd(e)}function c(){o.removeEventListener(\"load\",a,!1),o.removeEventListener(\"error\",l,!1)}return o.addEventListener(\"load\",a,!1),o.addEventListener(\"error\",l,!1),\"data:\"!==e.slice(0,5)&&void 0!==this.crossOrigin&&(o.crossOrigin=this.crossOrigin),r.manager.itemStart(e),o.src=e,o}}class Ru extends _u{constructor(e){super(e)}load(e,t,n,i){const r=new bs,s=new Du(this.manager);s.setCrossOrigin(this.crossOrigin),s.setPath(this.path);let o=0;function a(n){s.load(e[n],(function(e){r.images[n]=e,o++,6===o&&(r.needsUpdate=!0,t&&t(r))}),void 0,i)}for(let t=0;t\u003Ce.length;++t)a(t);return r}}class Pu extends _u{constructor(e){super(e)}load(e,t,n,i){const r=this,s=new Vl,o=new Su(this.manager);return o.setResponseType(\"arraybuffer\"),o.setRequestHeader(this.requestHeader),o.setPath(this.path),o.setWithCredentials(r.withCredentials),o.load(e,(function(e){const n=r.parse(e);n&&(void 0!==n.image?s.image=n.image:void 0!==n.data&&(s.image.width=n.width,s.image.height=n.height,s.image.data=n.data),s.wrapS=void 0!==n.wrapS?n.wrapS:ue,s.wrapT=void 0!==n.wrapT?n.wrapT:ue,s.magFilter=void 0!==n.magFilter?n.magFilter:ve,s.minFilter=void 0!==n.minFilter?n.minFilter:ve,s.anisotropy=void 0!==n.anisotropy?n.anisotropy:1,void 0!==n.encoding&&(s.encoding=n.encoding),void 0!==n.flipY&&(s.flipY=n.flipY),void 0!==n.format&&(s.format=n.format),void 0!==n.type&&(s.type=n.type),void 0!==n.mipmaps&&(s.mipmaps=n.mipmaps,s.minFilter=be),1===n.mipmapCount&&(s.minFilter=ve),void 0!==n.generateMipmaps&&(s.generateMipmaps=n.generateMipmaps),s.needsUpdate=!0,t&&t(s,n))}),n,i),s}}class ku extends _u{constructor(e){super(e)}load(e,t,n,i){const r=new ei,s=new Du(this.manager);return s.setCrossOrigin(this.crossOrigin),s.setPath(this.path),s.load(e,(function(e){r.image=e,r.needsUpdate=!0,void 0!==t&&t(r)}),n,i),r}}class Fu extends hr{constructor(e,t=1){super(),this.isLight=!0,this.type=\"Light\",this.color=new Yn(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,void 0!==this.groundColor&&(t.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(t.object.distance=this.distance),void 0!==this.angle&&(t.object.angle=this.angle),void 0!==this.decay&&(t.object.decay=this.decay),void 0!==this.penumbra&&(t.object.penumbra=this.penumbra),void 0!==this.shadow&&(t.object.shadow=this.shadow.toJSON()),t}}class Ou extends Fu{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type=\"HemisphereLight\",this.position.copy(hr.DefaultUp),this.updateMatrix(),this.groundColor=new Yn(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}}const Qu=new Ui,Uu=new ci,Nu=new ci;class Gu{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Ln(512,512),this.map=null,this.mapPass=null,this.matrix=new Ui,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Ss,this._frameExtents=new Ln(1,1),this._viewportCount=1,this._viewports=[new ti(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,n=this.matrix;Uu.setFromMatrixPosition(e.matrixWorld),t.position.copy(Uu),Nu.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Nu),t.updateMatrixWorld(),Qu.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Qu),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(Qu)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return(new this.constructor).copy(this)}toJSON(){const e={};return 0!==this.bias&&(e.bias=this.bias),0!==this.normalBias&&(e.normalBias=this.normalBias),1!==this.radius&&(e.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class zu extends Gu{constructor(){super(new vs(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){const t=this.camera,n=2*En*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height,r=e.distance||t.far;n===t.fov&&i===t.aspect&&r===t.far||(t.fov=n,t.aspect=i,t.far=r,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class Hu extends Fu{constructor(e,t,n=0,i=Math.PI/3,r=0,s=2){super(e,t),this.isSpotLight=!0,this.type=\"SpotLight\",this.position.copy(hr.DefaultUp),this.updateMatrix(),this.target=new hr,this.distance=n,this.angle=i,this.penumbra=r,this.decay=s,this.map=null,this.shadow=new zu}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const Vu=new Ui,Wu=new ci,ju=new ci;class qu extends Gu{constructor(){super(new vs(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new Ln(4,2),this._viewportCount=6,this._viewports=[new ti(2,1,1,1),new ti(0,1,1,1),new ti(3,1,1,1),new ti(1,1,1,1),new ti(3,0,1,1),new ti(1,0,1,1)],this._cubeDirections=[new ci(1,0,0),new ci(-1,0,0),new ci(0,0,1),new ci(0,0,-1),new ci(0,1,0),new ci(0,-1,0)],this._cubeUps=[new ci(0,1,0),new ci(0,1,0),new ci(0,1,0),new ci(0,1,0),new ci(0,0,1),new ci(0,0,-1)]}updateMatrices(e,t=0){const n=this.camera,i=this.matrix,r=e.distance||n.far;r!==n.far&&(n.far=r,n.updateProjectionMatrix()),Wu.setFromMatrixPosition(e.matrixWorld),n.position.copy(Wu),ju.copy(n.position),ju.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(ju),n.updateMatrixWorld(),i.makeTranslation(-Wu.x,-Wu.y,-Wu.z),Vu.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Vu)}}class Yu extends Fu{constructor(e,t,n=0,i=2){super(e,t),this.isPointLight=!0,this.type=\"PointLight\",this.distance=n,this.decay=i,this.shadow=new qu}get power(){return 4*this.intensity*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class Xu extends Gu{constructor(){super(new Hs(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class Ju extends Fu{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type=\"DirectionalLight\",this.position.copy(hr.DefaultUp),this.updateMatrix(),this.target=new hr,this.shadow=new Xu}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class Ku extends Fu{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type=\"AmbientLight\"}}class Zu extends Fu{constructor(e,t,n=10,i=10){super(e,t),this.isRectAreaLight=!0,this.type=\"RectAreaLight\",this.width=n,this.height=i}get power(){return this.intensity*this.width*this.height*Math.PI}set power(e){this.intensity=e/(this.width*this.height*Math.PI)}copy(e){return super.copy(e),this.width=e.width,this.height=e.height,this}toJSON(e){const t=super.toJSON(e);return t.object.width=this.width,t.object.height=this.height,t}}class $u{constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(let e=0;e\u003C9;e++)this.coefficients.push(new ci)}set(e){for(let t=0;t\u003C9;t++)this.coefficients[t].copy(e[t]);return this}zero(){for(let e=0;e\u003C9;e++)this.coefficients[e].set(0,0,0);return this}getAt(e,t){const n=e.x,i=e.y,r=e.z,s=this.coefficients;return t.copy(s[0]).multiplyScalar(.282095),t.addScaledVector(s[1],.488603*i),t.addScaledVector(s[2],.488603*r),t.addScaledVector(s[3],.488603*n),t.addScaledVector(s[4],n*i*1.092548),t.addScaledVector(s[5],i*r*1.092548),t.addScaledVector(s[6],.315392*(3*r*r-1)),t.addScaledVector(s[7],n*r*1.092548),t.addScaledVector(s[8],.546274*(n*n-i*i)),t}getIrradianceAt(e,t){const n=e.x,i=e.y,r=e.z,s=this.coefficients;return t.copy(s[0]).multiplyScalar(.886227),t.addScaledVector(s[1],1.023328*i),t.addScaledVector(s[2],1.023328*r),t.addScaledVector(s[3],1.023328*n),t.addScaledVector(s[4],.858086*n*i),t.addScaledVector(s[5],.858086*i*r),t.addScaledVector(s[6],.743125*r*r-.247708),t.addScaledVector(s[7],.858086*n*r),t.addScaledVector(s[8],.429043*(n*n-i*i)),t}add(e){for(let t=0;t\u003C9;t++)this.coefficients[t].add(e.coefficients[t]);return this}addScaledSH(e,t){for(let n=0;n\u003C9;n++)this.coefficients[n].addScaledVector(e.coefficients[n],t);return this}scale(e){for(let t=0;t\u003C9;t++)this.coefficients[t].multiplyScalar(e);return this}lerp(e,t){for(let n=0;n\u003C9;n++)this.coefficients[n].lerp(e.coefficients[n],t);return this}equals(e){for(let t=0;t\u003C9;t++)if(!this.coefficients[t].equals(e.coefficients[t]))return!1;return!0}copy(e){return this.set(e.coefficients)}clone(){return(new this.constructor).copy(this)}fromArray(e,t=0){const n=this.coefficients;for(let i=0;i\u003C9;i++)n[i].fromArray(e,t+3*i);return this}toArray(e=[],t=0){const n=this.coefficients;for(let i=0;i\u003C9;i++)n[i].toArray(e,t+3*i);return e}static getBasisAt(e,t){const n=e.x,i=e.y,r=e.z;t[0]=.282095,t[1]=.488603*i,t[2]=.488603*r,t[3]=.488603*n,t[4]=1.092548*n*i,t[5]=1.092548*i*r,t[6]=.315392*(3*r*r-1),t[7]=1.092548*n*r,t[8]=.546274*(n*n-i*i)}}class ed extends Fu{constructor(e=new $u,t=1){super(void 0,t),this.isLightProbe=!0,this.sh=e}copy(e){return super.copy(e),this.sh.copy(e.sh),this}fromJSON(e){return this.intensity=e.intensity,this.sh.fromArray(e.sh),this}toJSON(e){const t=super.toJSON(e);return t.object.sh=this.sh.toArray(),t}}class td extends _u{constructor(e){super(e),this.textures={}}load(e,t,n,i){const r=this,s=new Su(r.manager);s.setPath(r.path),s.setRequestHeader(r.requestHeader),s.setWithCredentials(r.withCredentials),s.load(e,(function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}}),n,i)}parse(e){const t=this.textures;function n(e){return void 0===t[e]&&console.warn(\"THREE.MaterialLoader: Undefined texture\",e),t[e]}const i=td.createMaterialFromType(e.type);if(void 0!==e.uuid&&(i.uuid=e.uuid),void 0!==e.name&&(i.name=e.name),void 0!==e.color&&void 0!==i.color&&i.color.setHex(e.color),void 0!==e.roughness&&(i.roughness=e.roughness),void 0!==e.metalness&&(i.metalness=e.metalness),void 0!==e.sheen&&(i.sheen=e.sheen),void 0!==e.sheenColor&&(i.sheenColor=(new Yn).setHex(e.sheenColor)),void 0!==e.sheenRoughness&&(i.sheenRoughness=e.sheenRoughness),void 0!==e.emissive&&void 0!==i.emissive&&i.emissive.setHex(e.emissive),void 0!==e.specular&&void 0!==i.specular&&i.specular.setHex(e.specular),void 0!==e.specularIntensity&&(i.specularIntensity=e.specularIntensity),void 0!==e.specularColor&&void 0!==i.specularColor&&i.specularColor.setHex(e.specularColor),void 0!==e.shininess&&(i.shininess=e.shininess),void 0!==e.clearcoat&&(i.clearcoat=e.clearcoat),void 0!==e.clearcoatRoughness&&(i.clearcoatRoughness=e.clearcoatRoughness),void 0!==e.iridescence&&(i.iridescence=e.iridescence),void 0!==e.iridescenceIOR&&(i.iridescenceIOR=e.iridescenceIOR),void 0!==e.iridescenceThicknessRange&&(i.iridescenceThicknessRange=e.iridescenceThicknessRange),void 0!==e.transmission&&(i.transmission=e.transmission),void 0!==e.thickness&&(i.thickness=e.thickness),void 0!==e.attenuationDistance&&(i.attenuationDistance=e.attenuationDistance),void 0!==e.attenuationColor&&void 0!==i.attenuationColor&&i.attenuationColor.setHex(e.attenuationColor),void 0!==e.fog&&(i.fog=e.fog),void 0!==e.flatShading&&(i.flatShading=e.flatShading),void 0!==e.blending&&(i.blending=e.blending),void 0!==e.combine&&(i.combine=e.combine),void 0!==e.side&&(i.side=e.side),void 0!==e.shadowSide&&(i.shadowSide=e.shadowSide),void 0!==e.opacity&&(i.opacity=e.opacity),void 0!==e.transparent&&(i.transparent=e.transparent),void 0!==e.alphaTest&&(i.alphaTest=e.alphaTest),void 0!==e.depthTest&&(i.depthTest=e.depthTest),void 0!==e.depthWrite&&(i.depthWrite=e.depthWrite),void 0!==e.colorWrite&&(i.colorWrite=e.colorWrite),void 0!==e.stencilWrite&&(i.stencilWrite=e.stencilWrite),void 0!==e.stencilWriteMask&&(i.stencilWriteMask=e.stencilWriteMask),void 0!==e.stencilFunc&&(i.stencilFunc=e.stencilFunc),void 0!==e.stencilRef&&(i.stencilRef=e.stencilRef),void 0!==e.stencilFuncMask&&(i.stencilFuncMask=e.stencilFuncMask),void 0!==e.stencilFail&&(i.stencilFail=e.stencilFail),void 0!==e.stencilZFail&&(i.stencilZFail=e.stencilZFail),void 0!==e.stencilZPass&&(i.stencilZPass=e.stencilZPass),void 0!==e.wireframe&&(i.wireframe=e.wireframe),void 0!==e.wireframeLinewidth&&(i.wireframeLinewidth=e.wireframeLinewidth),void 0!==e.wireframeLinecap&&(i.wireframeLinecap=e.wireframeLinecap),void 0!==e.wireframeLinejoin&&(i.wireframeLinejoin=e.wireframeLinejoin),void 0!==e.rotation&&(i.rotation=e.rotation),1!==e.linewidth&&(i.linewidth=e.linewidth),void 0!==e.dashSize&&(i.dashSize=e.dashSize),void 0!==e.gapSize&&(i.gapSize=e.gapSize),void 0!==e.scale&&(i.scale=e.scale),void 0!==e.polygonOffset&&(i.polygonOffset=e.polygonOffset),void 0!==e.polygonOffsetFactor&&(i.polygonOffsetFactor=e.polygonOffsetFactor),void 0!==e.polygonOffsetUnits&&(i.polygonOffsetUnits=e.polygonOffsetUnits),void 0!==e.dithering&&(i.dithering=e.dithering),void 0!==e.alphaToCoverage&&(i.alphaToCoverage=e.alphaToCoverage),void 0!==e.premultipliedAlpha&&(i.premultipliedAlpha=e.premultipliedAlpha),void 0!==e.visible&&(i.visible=e.visible),void 0!==e.toneMapped&&(i.toneMapped=e.toneMapped),void 0!==e.userData&&(i.userData=e.userData),void 0!==e.vertexColors&&(\"number\"==typeof e.vertexColors?i.vertexColors=e.vertexColors>0:i.vertexColors=e.vertexColors),void 0!==e.uniforms)for(const t in e.uniforms){const r=e.uniforms[t];switch(i.uniforms[t]={},r.type){case\"t\":i.uniforms[t].value=n(r.value);break;case\"c\":i.uniforms[t].value=(new Yn).setHex(r.value);break;case\"v2\":i.uniforms[t].value=(new Ln).fromArray(r.value);break;case\"v3\":i.uniforms[t].value=(new ci).fromArray(r.value);break;case\"v4\":i.uniforms[t].value=(new ti).fromArray(r.value);break;case\"m3\":i.uniforms[t].value=(new Dn).fromArray(r.value);break;case\"m4\":i.uniforms[t].value=(new Ui).fromArray(r.value);break;default:i.uniforms[t].value=r.value}}if(void 0!==e.defines&&(i.defines=e.defines),void 0!==e.vertexShader&&(i.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(i.fragmentShader=e.fragmentShader),void 0!==e.glslVersion&&(i.glslVersion=e.glslVersion),void 0!==e.extensions)for(const t in e.extensions)i.extensions[t]=e.extensions[t];if(void 0!==e.size&&(i.size=e.size),void 0!==e.sizeAttenuation&&(i.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(i.map=n(e.map)),void 0!==e.matcap&&(i.matcap=n(e.matcap)),void 0!==e.alphaMap&&(i.alphaMap=n(e.alphaMap)),void 0!==e.bumpMap&&(i.bumpMap=n(e.bumpMap)),void 0!==e.bumpScale&&(i.bumpScale=e.bumpScale),void 0!==e.normalMap&&(i.normalMap=n(e.normalMap)),void 0!==e.normalMapType&&(i.normalMapType=e.normalMapType),void 0!==e.normalScale){let t=e.normalScale;!1===Array.isArray(t)&&(t=[t,t]),i.normalScale=(new Ln).fromArray(t)}return void 0!==e.displacementMap&&(i.displacementMap=n(e.displacementMap)),void 0!==e.displacementScale&&(i.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(i.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(i.roughnessMap=n(e.roughnessMap)),void 0!==e.metalnessMap&&(i.metalnessMap=n(e.metalnessMap)),void 0!==e.emissiveMap&&(i.emissiveMap=n(e.emissiveMap)),void 0!==e.emissiveIntensity&&(i.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(i.specularMap=n(e.specularMap)),void 0!==e.specularIntensityMap&&(i.specularIntensityMap=n(e.specularIntensityMap)),void 0!==e.specularColorMap&&(i.specularColorMap=n(e.specularColorMap)),void 0!==e.envMap&&(i.envMap=n(e.envMap)),void 0!==e.envMapIntensity&&(i.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(i.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(i.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(i.lightMap=n(e.lightMap)),void 0!==e.lightMapIntensity&&(i.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(i.aoMap=n(e.aoMap)),void 0!==e.aoMapIntensity&&(i.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(i.gradientMap=n(e.gradientMap)),void 0!==e.clearcoatMap&&(i.clearcoatMap=n(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(i.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(i.clearcoatNormalMap=n(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(i.clearcoatNormalScale=(new Ln).fromArray(e.clearcoatNormalScale)),void 0!==e.iridescenceMap&&(i.iridescenceMap=n(e.iridescenceMap)),void 0!==e.iridescenceThicknessMap&&(i.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),void 0!==e.transmissionMap&&(i.transmissionMap=n(e.transmissionMap)),void 0!==e.thicknessMap&&(i.thicknessMap=n(e.thicknessMap)),void 0!==e.sheenColorMap&&(i.sheenColorMap=n(e.sheenColorMap)),void 0!==e.sheenRoughnessMap&&(i.sheenRoughnessMap=n(e.sheenRoughnessMap)),i}setTextures(e){return this.textures=e,this}static createMaterialFromType(e){return new{ShadowMaterial:jh,SpriteMaterial:vl,RawShaderMaterial:qh,ShaderMaterial:ms,PointsMaterial:dc,MeshPhysicalMaterial:Xh,MeshStandardMaterial:Yh,MeshPhongMaterial:Jh,MeshToonMaterial:Kh,MeshNormalMaterial:Zh,MeshLambertMaterial:$h,MeshDepthMaterial:qa,MeshDistanceMaterial:Ya,MeshBasicMaterial:Cr,MeshMatcapMaterial:eu,LineDashedMaterial:tu,LineBasicMaterial:tc,Material:wr}[e]}}class nd{static decodeText(e){if(\"undefined\"!=typeof TextDecoder)return(new TextDecoder).decode(e);let t=\"\";for(let n=0,i=e.length;n\u003Ci;n++)t+=String.fromCharCode(e[n]);try{return decodeURIComponent(escape(t))}catch(e){return t}}static extractUrlBase(e){const t=e.lastIndexOf(\"/\");return-1===t?\"./\":e.slice(0,t+1)}static resolveURL(e,t){return\"string\"!=typeof e||\"\"===e?\"\":(/^https?:\\/\\//i.test(t)&&/^\\//.test(e)&&(t=t.replace(/(^https?:\\/\\/[^\\/]+).*/i,\"$1\")),/^(https?:)?\\/\\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class id extends Wr{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type=\"InstancedBufferGeometry\",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class rd extends _u{constructor(e){super(e)}load(e,t,n,i){const r=this,s=new Su(r.manager);s.setPath(r.path),s.setRequestHeader(r.requestHeader),s.setWithCredentials(r.withCredentials),s.load(e,(function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}}),n,i)}parse(e){const t={},n={};function i(e,i){if(void 0!==t[i])return t[i];const r=e.interleavedBuffers[i],s=function(e,t){if(void 0!==n[t])return n[t];const i=e.arrayBuffers[t],r=new Uint32Array(i).buffer;return n[t]=r,r}(e,r.buffer),o=Fn(r.type,s),a=new fl(o,r.stride);return a.uuid=r.uuid,t[i]=a,a}const r=e.isInstancedBufferGeometry?new id:new Wr,s=e.data.index;if(void 0!==s){const e=Fn(s.type,s.array);r.setIndex(new Ir(e,1))}const o=e.data.attributes;for(const t in o){const n=o[t];let s;if(n.isInterleavedBufferAttribute){const t=i(e.data,n.data);s=new gl(t,n.itemSize,n.offset,n.normalized)}else{const e=Fn(n.type,n.array);s=new(n.isInstancedBufferAttribute?Yl:Ir)(e,n.itemSize,n.normalized)}void 0!==n.name&&(s.name=n.name),void 0!==n.usage&&s.setUsage(n.usage),void 0!==n.updateRange&&(s.updateRange.offset=n.updateRange.offset,s.updateRange.count=n.updateRange.count),r.setAttribute(t,s)}const a=e.data.morphAttributes;if(a)for(const t in a){const n=a[t],s=[];for(let t=0,r=n.length;t\u003Cr;t++){const r=n[t];let o;if(r.isInterleavedBufferAttribute){const t=i(e.data,r.data);o=new gl(t,r.itemSize,r.offset,r.normalized)}else{const e=Fn(r.type,r.array);o=new Ir(e,r.itemSize,r.normalized)}void 0!==r.name&&(o.name=r.name),s.push(o)}r.morphAttributes[t]=s}e.data.morphTargetsRelative&&(r.morphTargetsRelative=!0);const l=e.data.groups||e.data.drawcalls||e.data.offsets;if(void 0!==l)for(let e=0,t=l.length;e!==t;++e){const t=l[e];r.addGroup(t.start,t.count,t.materialIndex)}const c=e.data.boundingSphere;if(void 0!==c){const e=new ci;void 0!==c.center&&e.fromArray(c.center),r.boundingSphere=new Ti(e,c.radius)}return e.name&&(r.name=e.name),e.userData&&(r.userData=e.userData),r}}class sd extends _u{constructor(e){super(e)}load(e,t,n,i){const r=this,s=\"\"===this.path?nd.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||s;const o=new Su(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,(function(n){let s=null;try{s=JSON.parse(n)}catch(t){return void 0!==i&&i(t),void console.error(\"THREE:ObjectLoader: Can't parse \"+e+\".\",t.message)}const o=s.metadata;if(void 0===o||void 0===o.type||\"geometry\"===o.type.toLowerCase())return void 0!==i&&i(new Error(\"THREE.ObjectLoader: Can't load \"+e)),void console.error(\"THREE.ObjectLoader: Can't load \"+e);r.parse(s,t)}),n,i)}async loadAsync(e,t){const n=\"\"===this.path?nd.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||n;const i=new Su(this.manager);i.setPath(this.path),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials);const r=await i.loadAsync(e,t),s=JSON.parse(r),o=s.metadata;if(void 0===o||void 0===o.type||\"geometry\"===o.type.toLowerCase())throw new Error(\"THREE.ObjectLoader: Can't load \"+e);return await this.parseAsync(s)}parse(e,t){const n=this.parseAnimations(e.animations),i=this.parseShapes(e.shapes),r=this.parseGeometries(e.geometries,i),s=this.parseImages(e.images,(function(){void 0!==t&&t(l)})),o=this.parseTextures(e.textures,s),a=this.parseMaterials(e.materials,o),l=this.parseObject(e.object,r,a,o,n),c=this.parseSkeletons(e.skeletons,l);if(this.bindSkeletons(l,c),void 0!==t){let e=!1;for(const t in s)if(s[t].data instanceof HTMLImageElement){e=!0;break}!1===e&&t(l)}return l}async parseAsync(e){const t=this.parseAnimations(e.animations),n=this.parseShapes(e.shapes),i=this.parseGeometries(e.geometries,n),r=await this.parseImagesAsync(e.images),s=this.parseTextures(e.textures,r),o=this.parseMaterials(e.materials,s),a=this.parseObject(e.object,i,o,s,t),l=this.parseSkeletons(e.skeletons,a);return this.bindSkeletons(a,l),a}parseShapes(e){const t={};if(void 0!==e)for(let n=0,i=e.length;n\u003Ci;n++){const i=(new rh).fromJSON(e[n]);t[i.uuid]=i}return t}parseSkeletons(e,t){const n={},i={};if(t.traverse((function(e){e.isBone&&(i[e.uuid]=e)})),void 0!==e)for(let t=0,r=e.length;t\u003Cr;t++){const r=(new ql).fromJSON(e[t],i);n[r.uuid]=r}return n}parseGeometries(e,t){const n={};if(void 0!==e){const i=new rd;for(let r=0,s=e.length;r\u003Cs;r++){let s;const o=e[r];switch(o.type){case\"BufferGeometry\":case\"InstancedBufferGeometry\":s=i.parse(o);break;case\"Geometry\":\"THREE\"in window&&\"LegacyJSONLoader\"in THREE?s=(new THREE.LegacyJSONLoader).parse(o,this.resourcePath).geometry:console.error('THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type \"Geometry\".');break;default:o.type in Wh?s=Wh[o.type].fromJSON(o,t):console.warn(`THREE.ObjectLoader: Unsupported geometry type \"${o.type}\"`)}s.uuid=o.uuid,void 0!==o.name&&(s.name=o.name),!0===s.isBufferGeometry&&void 0!==o.userData&&(s.userData=o.userData),n[o.uuid]=s}}return n}parseMaterials(e,t){const n={},i={};if(void 0!==e){const r=new td;r.setTextures(t);for(let t=0,s=e.length;t\u003Cs;t++){const s=e[t];void 0===n[s.uuid]&&(n[s.uuid]=r.parse(s)),i[s.uuid]=n[s.uuid]}}return i}parseAnimations(e){const t={};if(void 0!==e)for(let n=0;n\u003Ce.length;n++){const i=e[n],r=bu.parse(i);t[r.uuid]=r}return t}parseImages(e,t){const n=this,i={};let r;function s(e){if(\"string\"==typeof e){const t=e;return function(e){return n.manager.itemStart(e),r.load(e,(function(){n.manager.itemEnd(e)}),void 0,(function(){n.manager.itemError(e),n.manager.itemEnd(e)}))}(/^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(t)?t:n.resourcePath+t)}return e.data?{data:Fn(e.type,e.data),width:e.width,height:e.height}:null}if(void 0!==e&&e.length>0){const n=new Cu(t);r=new Du(n),r.setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t\u003Cn;t++){const n=e[t],r=n.url;if(Array.isArray(r)){const e=[];for(let t=0,n=r.length;t\u003Cn;t++){const n=s(r[t]);null!==n&&(n instanceof HTMLImageElement?e.push(n):e.push(new Vl(n.data,n.width,n.height)))}i[n.uuid]=new Kn(e)}else{const e=s(n.url);i[n.uuid]=new Kn(e)}}}return i}async parseImagesAsync(e){const t=this,n={};let i;async function r(e){if(\"string\"==typeof e){const n=e,r=/^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(n)?n:t.resourcePath+n;return await i.loadAsync(r)}return e.data?{data:Fn(e.type,e.data),width:e.width,height:e.height}:null}if(void 0!==e&&e.length>0){i=new Du(this.manager),i.setCrossOrigin(this.crossOrigin);for(let t=0,i=e.length;t\u003Ci;t++){const i=e[t],s=i.url;if(Array.isArray(s)){const e=[];for(let t=0,n=s.length;t\u003Cn;t++){const n=s[t],i=await r(n);null!==i&&(i instanceof HTMLImageElement?e.push(i):e.push(new Vl(i.data,i.width,i.height)))}n[i.uuid]=new Kn(e)}else{const e=await r(i.url);n[i.uuid]=new Kn(e)}}}return n}parseTextures(e,t){function n(e,t){return\"number\"==typeof e?e:(console.warn(\"THREE.ObjectLoader.parseTexture: Constant should be in numeric form.\",e),t[e])}const i={};if(void 0!==e)for(let r=0,s=e.length;r\u003Cs;r++){const s=e[r];void 0===s.image&&console.warn('THREE.ObjectLoader: No \"image\" specified for',s.uuid),void 0===t[s.image]&&console.warn(\"THREE.ObjectLoader: Undefined image\",s.image);const o=t[s.image],a=o.data;let l;Array.isArray(a)?(l=new bs,6===a.length&&(l.needsUpdate=!0)):(l=a&&a.data?new Vl:new ei,a&&(l.needsUpdate=!0)),l.source=o,l.uuid=s.uuid,void 0!==s.name&&(l.name=s.name),void 0!==s.mapping&&(l.mapping=n(s.mapping,od)),void 0!==s.offset&&l.offset.fromArray(s.offset),void 0!==s.repeat&&l.repeat.fromArray(s.repeat),void 0!==s.center&&l.center.fromArray(s.center),void 0!==s.rotation&&(l.rotation=s.rotation),void 0!==s.wrap&&(l.wrapS=n(s.wrap[0],ad),l.wrapT=n(s.wrap[1],ad)),void 0!==s.format&&(l.format=s.format),void 0!==s.type&&(l.type=s.type),void 0!==s.encoding&&(l.encoding=s.encoding),void 0!==s.minFilter&&(l.minFilter=n(s.minFilter,ld)),void 0!==s.magFilter&&(l.magFilter=n(s.magFilter,ld)),void 0!==s.anisotropy&&(l.anisotropy=s.anisotropy),void 0!==s.flipY&&(l.flipY=s.flipY),void 0!==s.premultiplyAlpha&&(l.premultiplyAlpha=s.premultiplyAlpha),void 0!==s.unpackAlignment&&(l.unpackAlignment=s.unpackAlignment),void 0!==s.userData&&(l.userData=s.userData),i[s.uuid]=l}return i}parseObject(e,t,n,i,r){let s,o,a;function l(e){return void 0===t[e]&&console.warn(\"THREE.ObjectLoader: Undefined geometry\",e),t[e]}function c(e){if(void 0!==e){if(Array.isArray(e)){const t=[];for(let i=0,r=e.length;i\u003Cr;i++){const r=e[i];void 0===n[r]&&console.warn(\"THREE.ObjectLoader: Undefined material\",r),t.push(n[r])}return t}return void 0===n[e]&&console.warn(\"THREE.ObjectLoader: Undefined material\",e),n[e]}}function h(e){return void 0===i[e]&&console.warn(\"THREE.ObjectLoader: Undefined texture\",e),i[e]}switch(e.type){case\"Scene\":s=new Al,void 0!==e.background&&(Number.isInteger(e.background)?s.background=new Yn(e.background):s.background=h(e.background)),void 0!==e.environment&&(s.environment=h(e.environment)),void 0!==e.fog&&(\"Fog\"===e.fog.type?s.fog=new pl(e.fog.color,e.fog.near,e.fog.far):\"FogExp2\"===e.fog.type&&(s.fog=new dl(e.fog.color,e.fog.density))),void 0!==e.backgroundBlurriness&&(s.backgroundBlurriness=e.backgroundBlurriness);break;case\"PerspectiveCamera\":s=new vs(e.fov,e.aspect,e.near,e.far),void 0!==e.focus&&(s.focus=e.focus),void 0!==e.zoom&&(s.zoom=e.zoom),void 0!==e.filmGauge&&(s.filmGauge=e.filmGauge),void 0!==e.filmOffset&&(s.filmOffset=e.filmOffset),void 0!==e.view&&(s.view=Object.assign({},e.view));break;case\"OrthographicCamera\":s=new Hs(e.left,e.right,e.top,e.bottom,e.near,e.far),void 0!==e.zoom&&(s.zoom=e.zoom),void 0!==e.view&&(s.view=Object.assign({},e.view));break;case\"AmbientLight\":s=new Ku(e.color,e.intensity);break;case\"DirectionalLight\":s=new Ju(e.color,e.intensity);break;case\"PointLight\":s=new Yu(e.color,e.intensity,e.distance,e.decay);break;case\"RectAreaLight\":s=new Zu(e.color,e.intensity,e.width,e.height);break;case\"SpotLight\":s=new Hu(e.color,e.intensity,e.distance,e.angle,e.penumbra,e.decay);break;case\"HemisphereLight\":s=new Ou(e.color,e.groundColor,e.intensity);break;case\"LightProbe\":s=(new ed).fromJSON(e);break;case\"SkinnedMesh\":o=l(e.geometry),a=c(e.material),s=new zl(o,a),void 0!==e.bindMode&&(s.bindMode=e.bindMode),void 0!==e.bindMatrix&&s.bindMatrix.fromArray(e.bindMatrix),void 0!==e.skeleton&&(s.skeleton=e.skeleton);break;case\"Mesh\":o=l(e.geometry),a=c(e.material),s=new cs(o,a);break;case\"InstancedMesh\":o=l(e.geometry),a=c(e.material);const t=e.count,n=e.instanceMatrix,i=e.instanceColor;s=new ec(o,a,t),s.instanceMatrix=new Yl(new Float32Array(n.array),16),void 0!==i&&(s.instanceColor=new Yl(new Float32Array(i.array),i.itemSize));break;case\"LOD\":s=new Fl;break;case\"Line\":s=new ac(l(e.geometry),c(e.material));break;case\"LineLoop\":s=new uc(l(e.geometry),c(e.material));break;case\"LineSegments\":s=new hc(l(e.geometry),c(e.material));break;case\"PointCloud\":case\"Points\":s=new gc(l(e.geometry),c(e.material));break;case\"Sprite\":s=new Dl(c(e.material));break;case\"Group\":s=new $a;break;case\"Bone\":s=new Hl;break;default:s=new hr}if(s.uuid=e.uuid,void 0!==e.name&&(s.name=e.name),void 0!==e.matrix?(s.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(s.matrixAutoUpdate=e.matrixAutoUpdate),s.matrixAutoUpdate&&s.matrix.decompose(s.position,s.quaternion,s.scale)):(void 0!==e.position&&s.position.fromArray(e.position),void 0!==e.rotation&&s.rotation.fromArray(e.rotation),void 0!==e.quaternion&&s.quaternion.fromArray(e.quaternion),void 0!==e.scale&&s.scale.fromArray(e.scale)),void 0!==e.castShadow&&(s.castShadow=e.castShadow),void 0!==e.receiveShadow&&(s.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.bias&&(s.shadow.bias=e.shadow.bias),void 0!==e.shadow.normalBias&&(s.shadow.normalBias=e.shadow.normalBias),void 0!==e.shadow.radius&&(s.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&s.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(s.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(s.visible=e.visible),void 0!==e.frustumCulled&&(s.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(s.renderOrder=e.renderOrder),void 0!==e.userData&&(s.userData=e.userData),void 0!==e.layers&&(s.layers.mask=e.layers),void 0!==e.children){const o=e.children;for(let e=0;e\u003Co.length;e++)s.add(this.parseObject(o[e],t,n,i,r))}if(void 0!==e.animations){const t=e.animations;for(let e=0;e\u003Ct.length;e++){const n=t[e];s.animations.push(r[n])}}if(\"LOD\"===e.type){void 0!==e.autoUpdate&&(s.autoUpdate=e.autoUpdate);const t=e.levels;for(let e=0;e\u003Ct.length;e++){const n=t[e],i=s.getObjectByProperty(\"uuid\",n.object);void 0!==i&&s.addLevel(i,n.distance,n.hysteresis)}}return s}bindSkeletons(e,t){0!==Object.keys(t).length&&e.traverse((function(e){if(!0===e.isSkinnedMesh&&void 0!==e.skeleton){const n=t[e.skeleton];void 0===n?console.warn(\"THREE.ObjectLoader: No skeleton found with UUID:\",e.skeleton):e.bind(n,e.bindMatrix)}}))}}const od={UVMapping:re,CubeReflectionMapping:se,CubeRefractionMapping:oe,EquirectangularReflectionMapping:ae,EquirectangularRefractionMapping:le,CubeUVReflectionMapping:ce},ad={RepeatWrapping:he,ClampToEdgeWrapping:ue,MirroredRepeatWrapping:de},ld={NearestFilter:pe,NearestMipmapNearestFilter:Ae,NearestMipmapLinearFilter:me,LinearFilter:ve,LinearMipmapNearestFilter:ye,LinearMipmapLinearFilter:be};class cd extends _u{constructor(e){super(e),this.isImageBitmapLoader=!0,\"undefined\"==typeof createImageBitmap&&console.warn(\"THREE.ImageBitmapLoader: createImageBitmap() not supported.\"),\"undefined\"==typeof fetch&&console.warn(\"THREE.ImageBitmapLoader: fetch() not supported.\"),this.options={premultiplyAlpha:\"none\"}}setOptions(e){return this.options=e,this}load(e,t,n,i){void 0===e&&(e=\"\"),void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,s=wu.get(e);if(void 0!==s)return r.manager.itemStart(e),setTimeout((function(){t&&t(s),r.manager.itemEnd(e)}),0),s;const o={};o.credentials=\"anonymous\"===this.crossOrigin?\"same-origin\":\"include\",o.headers=this.requestHeader,fetch(e,o).then((function(e){return e.blob()})).then((function(e){return createImageBitmap(e,Object.assign(r.options,{colorSpaceConversion:\"none\"}))})).then((function(n){wu.add(e,n),t&&t(n),r.manager.itemEnd(e)})).catch((function(t){i&&i(t),r.manager.itemError(e),r.manager.itemEnd(e)})),r.manager.itemStart(e)}}let hd;class ud{static getContext(){return void 0===hd&&(hd=new(window.AudioContext||window.webkitAudioContext)),hd}static setContext(e){hd=e}}class dd extends _u{constructor(e){super(e)}load(e,t,n,i){const r=this,s=new Su(this.manager);s.setResponseType(\"arraybuffer\"),s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,(function(n){try{const e=n.slice(0);ud.getContext().decodeAudioData(e,(function(e){t(e)}))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}}),n,i)}}class pd extends ed{constructor(e,t,n=1){super(void 0,n),this.isHemisphereLightProbe=!0;const i=(new Yn).set(e),r=(new Yn).set(t),s=new ci(i.r,i.g,i.b),o=new ci(r.r,r.g,r.b),a=Math.sqrt(Math.PI),l=a*Math.sqrt(.75);this.sh.coefficients[0].copy(s).add(o).multiplyScalar(a),this.sh.coefficients[1].copy(s).sub(o).multiplyScalar(l)}}class Ad extends ed{constructor(e,t=1){super(void 0,t),this.isAmbientLightProbe=!0;const n=(new Yn).set(e);this.sh.coefficients[0].set(n.r,n.g,n.b).multiplyScalar(2*Math.sqrt(Math.PI))}}const fd=new Ui,md=new Ui,gd=new Ui;class vd{constructor(){this.type=\"StereoCamera\",this.aspect=1,this.eyeSep=.064,this.cameraL=new vs,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new vs,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,gd.copy(e.projectionMatrix);const n=t.eyeSep/2,i=n*t.near/t.focus,r=t.near*Math.tan(yn*t.fov*.5)/t.zoom;let s,o;md.elements[12]=-n,fd.elements[12]=n,s=-r*t.aspect+i,o=r*t.aspect+i,gd.elements[0]=2*t.near/(o-s),gd.elements[8]=(o+s)/(o-s),this.cameraL.projectionMatrix.copy(gd),s=-r*t.aspect-i,o=r*t.aspect-i,gd.elements[0]=2*t.near/(o-s),gd.elements[8]=(o+s)/(o-s),this.cameraR.projectionMatrix.copy(gd)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(md),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(fd)}}class yd{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=Ed(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=Ed();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function Ed(){return(\"undefined\"==typeof performance?Date:performance).now()}const bd=new ci,xd=new li,wd=new ci,Cd=new ci;class Md extends hr{constructor(){super(),this.type=\"AudioListener\",this.context=ud.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new yd}getInput(){return this.gain}removeFilter(){return null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(bd,xd,wd),Cd.set(0,0,-1).applyQuaternion(xd),t.positionX){const e=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(bd.x,e),t.positionY.linearRampToValueAtTime(bd.y,e),t.positionZ.linearRampToValueAtTime(bd.z,e),t.forwardX.linearRampToValueAtTime(Cd.x,e),t.forwardY.linearRampToValueAtTime(Cd.y,e),t.forwardZ.linearRampToValueAtTime(Cd.z,e),t.upX.linearRampToValueAtTime(n.x,e),t.upY.linearRampToValueAtTime(n.y,e),t.upZ.linearRampToValueAtTime(n.z,e)}else t.setPosition(bd.x,bd.y,bd.z),t.setOrientation(Cd.x,Cd.y,Cd.z,n.x,n.y,n.z)}}class _d extends hr{constructor(e){super(),this.type=\"Audio\",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType=\"empty\",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType=\"audioNode\",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType=\"mediaNode\",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType=\"mediaStreamNode\",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType=\"buffer\",this.autoplay&&this.play(),this}play(e=0){if(!0===this.isPlaying)return void console.warn(\"THREE.Audio: Audio is already playing.\");if(!1===this.hasPlaybackControl)return void console.warn(\"THREE.Audio: this Audio has no playback control.\");this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(!1!==this.hasPlaybackControl)return!0===this.isPlaying&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,!0===this.loop&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this;console.warn(\"THREE.Audio: this Audio has no playback control.\")}stop(){if(!1!==this.hasPlaybackControl)return this._progress=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this;console.warn(\"THREE.Audio: this Audio has no playback control.\")}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e\u003Ct;e++)this.filters[e-1].connect(this.filters[e]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}disconnect(){if(this.filters.length>0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e\u003Ct;e++)this.filters[e-1].disconnect(this.filters[e]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this._connected=!1,this}getFilters(){return this.filters}setFilters(e){return e||(e=[]),!0===this._connected?(this.disconnect(),this.filters=e.slice(),this.connect()):this.filters=e.slice(),this}setDetune(e){if(this.detune=e,void 0!==this.source.detune)return!0===this.isPlaying&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}getDetune(){return this.detune}getFilter(){return this.getFilters()[0]}setFilter(e){return this.setFilters(e?[e]:[])}setPlaybackRate(e){if(!1!==this.hasPlaybackControl)return this.playbackRate=e,!0===this.isPlaying&&this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this;console.warn(\"THREE.Audio: this Audio has no playback control.\")}getPlaybackRate(){return this.playbackRate}onEnded(){this.isPlaying=!1}getLoop(){return!1===this.hasPlaybackControl?(console.warn(\"THREE.Audio: this Audio has no playback control.\"),!1):this.loop}setLoop(e){if(!1!==this.hasPlaybackControl)return this.loop=e,!0===this.isPlaying&&(this.source.loop=this.loop),this;console.warn(\"THREE.Audio: this Audio has no playback control.\")}setLoopStart(e){return this.loopStart=e,this}setLoopEnd(e){return this.loopEnd=e,this}getVolume(){return this.gain.gain.value}setVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}}const Id=new ci,Bd=new li,Sd=new ci,Td=new ci;class Ld extends _d{constructor(e){super(e),this.panner=this.context.createPanner(),this.panner.panningModel=\"HRTF\",this.panner.connect(this.gain)}disconnect(){super.disconnect(),this.panner.disconnect(this.gain)}getOutput(){return this.panner}getRefDistance(){return this.panner.refDistance}setRefDistance(e){return this.panner.refDistance=e,this}getRolloffFactor(){return this.panner.rolloffFactor}setRolloffFactor(e){return this.panner.rolloffFactor=e,this}getDistanceModel(){return this.panner.distanceModel}setDistanceModel(e){return this.panner.distanceModel=e,this}getMaxDistance(){return this.panner.maxDistance}setMaxDistance(e){return this.panner.maxDistance=e,this}setDirectionalCone(e,t,n){return this.panner.coneInnerAngle=e,this.panner.coneOuterAngle=t,this.panner.coneOuterGain=n,this}updateMatrixWorld(e){if(super.updateMatrixWorld(e),!0===this.hasPlaybackControl&&!1===this.isPlaying)return;this.matrixWorld.decompose(Id,Bd,Sd),Td.set(0,0,1).applyQuaternion(Bd);const t=this.panner;if(t.positionX){const e=this.context.currentTime+this.listener.timeDelta;t.positionX.linearRampToValueAtTime(Id.x,e),t.positionY.linearRampToValueAtTime(Id.y,e),t.positionZ.linearRampToValueAtTime(Id.z,e),t.orientationX.linearRampToValueAtTime(Td.x,e),t.orientationY.linearRampToValueAtTime(Td.y,e),t.orientationZ.linearRampToValueAtTime(Td.z,e)}else t.setPosition(Id.x,Id.y,Id.z),t.setOrientation(Td.x,Td.y,Td.z)}}class Dd{constructor(e,t=2048){this.analyser=e.context.createAnalyser(),this.analyser.fftSize=t,this.data=new Uint8Array(this.analyser.frequencyBinCount),e.getOutput().connect(this.analyser)}getFrequencyData(){return this.analyser.getByteFrequencyData(this.data),this.data}getAverageFrequency(){let e=0;const t=this.getFrequencyData();for(let n=0;n\u003Ct.length;n++)e+=t[n];return e/t.length}}class Rd{constructor(e,t,n){let i,r,s;switch(this.binding=e,this.valueSize=n,t){case\"quaternion\":i=this._slerp,r=this._slerpAdditive,s=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*n),this._workIndex=5;break;case\"string\":case\"bool\":i=this._select,r=this._select,s=this._setAdditiveIdentityOther,this.buffer=new Array(5*n);break;default:i=this._lerp,r=this._lerpAdditive,s=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*n)}this._mixBufferRegion=i,this._mixBufferRegionAdditive=r,this._setIdentity=s,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){const n=this.buffer,i=this.valueSize,r=e*i+i;let s=this.cumulativeWeight;if(0===s){for(let e=0;e!==i;++e)n[r+e]=n[e];s=t}else{s+=t;const e=t/s;this._mixBufferRegion(n,r,0,e,i)}this.cumulativeWeight=s}accumulateAdditive(e){const t=this.buffer,n=this.valueSize,i=n*this._addIndex;0===this.cumulativeWeightAdditive&&this._setIdentity(),this._mixBufferRegionAdditive(t,i,0,e,n),this.cumulativeWeightAdditive+=e}apply(e){const t=this.valueSize,n=this.buffer,i=e*t+t,r=this.cumulativeWeight,s=this.cumulativeWeightAdditive,o=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,r\u003C1){const e=t*this._origIndex;this._mixBufferRegion(n,i,e,1-r,t)}s>0&&this._mixBufferRegionAdditive(n,i,this._addIndex*t,1,t);for(let e=t,r=t+t;e!==r;++e)if(n[e]!==n[e+t]){o.setValue(n,i);break}}saveOriginalState(){const e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(let e=n,r=i;e!==r;++e)t[e]=t[i+e%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n\u003Ct;n++)this.buffer[n]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){const e=this._origIndex*this.valueSize,t=this._addIndex*this.valueSize;for(let n=0;n\u003Cthis.valueSize;n++)this.buffer[t+n]=this.buffer[e+n]}_select(e,t,n,i,r){if(i>=.5)for(let i=0;i!==r;++i)e[t+i]=e[n+i]}_slerp(e,t,n,i){li.slerpFlat(e,t,e,t,e,n,i)}_slerpAdditive(e,t,n,i,r){const s=this._workIndex*r;li.multiplyQuaternionsFlat(e,s,e,t,e,n),li.slerpFlat(e,t,e,t,e,s,i)}_lerp(e,t,n,i,r){const s=1-i;for(let o=0;o!==r;++o){const r=t+o;e[r]=e[r]*s+e[n+o]*i}}_lerpAdditive(e,t,n,i,r){for(let s=0;s!==r;++s){const r=t+s;e[r]=e[r]+e[n+s]*i}}}const Pd=\"\\\\[\\\\]\\\\.:\\\\/\",kd=new RegExp(\"[\"+Pd+\"]\",\"g\"),Fd=\"[^\"+Pd+\"]\",Od=\"[^\"+Pd.replace(\"\\\\.\",\"\")+\"]\",Qd=new RegExp(\"^\"+/((?:WC+[\\/:])*)/.source.replace(\"WC\",Fd)+/(WCOD+)?/.source.replace(\"WCOD\",Od)+/(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace(\"WC\",Fd)+/\\.(WC+)(?:\\[(.+)\\])?/.source.replace(\"WC\",Fd)+\"$\"),Ud=[\"material\",\"materials\",\"bones\",\"map\"];class Nd{constructor(e,t,n){this.path=t,this.parsedPath=n||Nd.parseTrackName(t),this.node=Nd.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new Nd.Composite(e,t,n):new Nd(e,t,n)}static sanitizeNodeName(e){return e.replace(/\\s/g,\"_\").replace(kd,\"\")}static parseTrackName(e){const t=Qd.exec(e);if(null===t)throw new Error(\"PropertyBinding: Cannot parse trackName: \"+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(\".\");if(void 0!==i&&-1!==i){const e=n.nodeName.substring(i+1);-1!==Ud.indexOf(e)&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=e)}if(null===n.propertyName||0===n.propertyName.length)throw new Error(\"PropertyBinding: can not parse propertyName from trackName: \"+e);return n}static findNode(e,t){if(void 0===t||\"\"===t||\".\"===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(void 0!==n)return n}if(e.children){const n=function(e){for(let i=0;i\u003Ce.length;i++){const r=e[i];if(r.name===t||r.uuid===t)return r;const s=n(r.children);if(s)return s}return null},i=n(e.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)e[t++]=n[i]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=e[t++]}_setValue_array_setNeedsUpdate(e,t){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node;const t=this.parsedPath,n=t.objectName,i=t.propertyName;let r=t.propertyIndex;if(e||(e=Nd.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e)return void console.error(\"THREE.PropertyBinding: Trying to update node for track: \"+this.path+\" but it wasn't found.\");if(n){let i=t.objectIndex;switch(n){case\"materials\":if(!e.material)return void console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\",this);if(!e.material.materials)return void console.error(\"THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.\",this);e=e.material.materials;break;case\"bones\":if(!e.skeleton)return void console.error(\"THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.\",this);e=e.skeleton.bones;for(let t=0;t\u003Ce.length;t++)if(e[t].name===i){i=t;break}break;case\"map\":if(\"map\"in e){e=e.map;break}if(!e.material)return void console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\",this);if(!e.material.map)return void console.error(\"THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.\",this);e=e.material.map;break;default:if(void 0===e[n])return void console.error(\"THREE.PropertyBinding: Can not bind to objectName of node undefined.\",this);e=e[n]}if(void 0!==i){if(void 0===e[i])return void console.error(\"THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.\",this,e);e=e[i]}}const s=e[i];if(void 0===s){const n=t.nodeName;return void console.error(\"THREE.PropertyBinding: Trying to update property for track: \"+n+\".\"+i+\" but it wasn't found.\",e)}let o=this.Versioning.None;this.targetObject=e,void 0!==e.needsUpdate?o=this.Versioning.NeedsUpdate:void 0!==e.matrixWorldNeedsUpdate&&(o=this.Versioning.MatrixWorldNeedsUpdate);let a=this.BindingType.Direct;if(void 0!==r){if(\"morphTargetInfluences\"===i){if(!e.geometry)return void console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.\",this);if(!e.geometry.morphAttributes)return void console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.\",this);void 0!==e.morphTargetDictionary[r]&&(r=e.morphTargetDictionary[r])}a=this.BindingType.ArrayElement,this.resolvedProperty=s,this.propertyIndex=r}else void 0!==s.fromArray&&void 0!==s.toArray?(a=this.BindingType.HasFromToArray,this.resolvedProperty=s):Array.isArray(s)?(a=this.BindingType.EntireArray,this.resolvedProperty=s):this.propertyName=i;this.getValue=this.GetterByBindingType[a],this.setValue=this.SetterByBindingTypeAndVersioning[a][o]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}Nd.Composite=class{constructor(e,t,n){const i=n||Nd.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,i=this._bindings[n];void 0!==i&&i.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,r=n.length;i!==r;++i)n[i].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},Nd.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},Nd.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},Nd.prototype.GetterByBindingType=[Nd.prototype._getValue_direct,Nd.prototype._getValue_array,Nd.prototype._getValue_arrayElement,Nd.prototype._getValue_toArray],Nd.prototype.SetterByBindingTypeAndVersioning=[[Nd.prototype._setValue_direct,Nd.prototype._setValue_direct_setNeedsUpdate,Nd.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[Nd.prototype._setValue_array,Nd.prototype._setValue_array_setNeedsUpdate,Nd.prototype._setValue_array_setMatrixWorldNeedsUpdate],[Nd.prototype._setValue_arrayElement,Nd.prototype._setValue_arrayElement_setNeedsUpdate,Nd.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[Nd.prototype._setValue_fromArray,Nd.prototype._setValue_fromArray_setNeedsUpdate,Nd.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];class Gd{constructor(){this.isAnimationObjectGroup=!0,this.uuid=bn(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;const e={};this._indicesByUUID=e;for(let t=0,n=arguments.length;t!==n;++t)e[arguments[t].uuid]=t;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};const t=this;this.stats={objects:{get total(){return t._objects.length},get inUse(){return this.total-t.nCachedObjects_}},get bindingsPerObject(){return t._bindings.length}}}add(){const e=this._objects,t=this._indicesByUUID,n=this._paths,i=this._parsedPaths,r=this._bindings,s=r.length;let o,a=e.length,l=this.nCachedObjects_;for(let c=0,h=arguments.length;c!==h;++c){const h=arguments[c],u=h.uuid;let d=t[u];if(void 0===d){d=a++,t[u]=d,e.push(h);for(let e=0,t=s;e!==t;++e)r[e].push(new Nd(h,n[e],i[e]))}else if(d\u003Cl){o=e[d];const a=--l,c=e[a];t[c.uuid]=d,e[d]=c,t[u]=a,e[a]=h;for(let e=0,t=s;e!==t;++e){const t=r[e],s=t[a];let o=t[d];t[d]=s,void 0===o&&(o=new Nd(h,n[e],i[e])),t[a]=o}}else e[d]!==o&&console.error(\"THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.\")}this.nCachedObjects_=l}remove(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length;let r=this.nCachedObjects_;for(let s=0,o=arguments.length;s!==o;++s){const o=arguments[s],a=o.uuid,l=t[a];if(void 0!==l&&l>=r){const s=r++,c=e[s];t[c.uuid]=l,e[l]=c,t[a]=s,e[s]=o;for(let e=0,t=i;e!==t;++e){const t=n[e],i=t[s],r=t[l];t[l]=i,t[s]=r}}}this.nCachedObjects_=r}uncache(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length;let r=this.nCachedObjects_,s=e.length;for(let o=0,a=arguments.length;o!==a;++o){const a=arguments[o].uuid,l=t[a];if(void 0!==l)if(delete t[a],l\u003Cr){const o=--r,a=e[o],c=--s,h=e[c];t[a.uuid]=l,e[l]=a,t[h.uuid]=o,e[o]=h,e.pop();for(let e=0,t=i;e!==t;++e){const t=n[e],i=t[o],r=t[c];t[l]=i,t[o]=r,t.pop()}}else{const r=--s,o=e[r];r>0&&(t[o.uuid]=l),e[l]=o,e.pop();for(let e=0,t=i;e!==t;++e){const t=n[e];t[l]=t[r],t.pop()}}}this.nCachedObjects_=r}subscribe_(e,t){const n=this._bindingsIndicesByPath;let i=n[e];const r=this._bindings;if(void 0!==i)return r[i];const s=this._paths,o=this._parsedPaths,a=this._objects,l=a.length,c=this.nCachedObjects_,h=new Array(l);i=r.length,n[e]=i,s.push(e),o.push(t),r.push(h);for(let n=c,i=a.length;n!==i;++n){const i=a[n];h[n]=new Nd(i,e,t)}return h}unsubscribe_(e){const t=this._bindingsIndicesByPath,n=t[e];if(void 0!==n){const i=this._paths,r=this._parsedPaths,s=this._bindings,o=s.length-1,a=s[o];t[e[o]]=n,s[n]=a,s.pop(),r[n]=r[o],r.pop(),i[n]=i[o],i.pop()}}}class zd{constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=i;const r=t.tracks,s=r.length,o=new Array(s),a={endingStart:Ct,endingEnd:Ct};for(let e=0;e!==s;++e){const t=r[e].createInterpolant(null);o[e]=t,t.settings=a}this._interpolantSettings=a,this._interpolants=o,this._propertyBindings=new Array(s),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=yt,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n){if(e.fadeOut(t),this.fadeIn(t),n){const n=this._clip.duration,i=e._clip.duration,r=i/n,s=n/i;e.warp(1,r,t),this.warp(s,1,t)}return this}crossFadeTo(e,t,n){return e.crossFadeFrom(this,t,n)}stopFading(){const e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){const i=this._mixer,r=i.time,s=this.timeScale;let o=this._timeScaleInterpolant;null===o&&(o=i._lendControlInterpolant(),this._timeScaleInterpolant=o);const a=o.parameterPositions,l=o.sampleValues;return a[0]=r,a[1]=r+n,l[0]=e/s,l[1]=t/s,this}stopWarping(){const e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,i){if(!this.enabled)return void this._updateWeight(e);const r=this._startTime;if(null!==r){const i=(e-r)*n;i\u003C0||0===n?t=0:(this._startTime=null,t=n*i)}t*=this._updateTimeScale(e);const s=this._updateTime(t),o=this._updateWeight(e);if(o>0){const e=this._interpolants,t=this._propertyBindings;if(this.blendMode===Bt)for(let n=0,i=e.length;n!==i;++n)e[n].evaluate(s),t[n].accumulateAdditive(o);else for(let n=0,r=e.length;n!==r;++n)e[n].evaluate(s),t[n].accumulate(i,o)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(null!==n){const i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;null!==n&&(t*=n.evaluate(e)[0],e>n.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,n=this.loop;let i=this.time+e,r=this._loopCount;const s=n===Et;if(0===e)return-1===r?i:s&&1==(1&r)?t-i:i;if(n===vt){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(i>=t)i=t;else{if(!(i\u003C0)){this.time=i;break e}i=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:\"finished\",action:this,direction:e\u003C0?-1:1})}}else{if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),i>=t||i\u003C0){const n=Math.floor(i/t);i-=t*n,r+=Math.abs(n);const o=this.repetitions-r;if(o\u003C=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=e>0?t:0,this.time=i,this._mixer.dispatchEvent({type:\"finished\",action:this,direction:e>0?1:-1});else{if(1===o){const t=e\u003C0;this._setEndings(t,!t,s)}else this._setEndings(!1,!1,s);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:\"loop\",action:this,loopDelta:n})}}else this.time=i;if(s&&1==(1&r))return t-i}return i}_setEndings(e,t,n){const i=this._interpolantSettings;n?(i.endingStart=Mt,i.endingEnd=Mt):(i.endingStart=e?this.zeroSlopeAtStart?Mt:Ct:_t,i.endingEnd=t?this.zeroSlopeAtEnd?Mt:Ct:_t)}_scheduleFading(e,t,n){const i=this._mixer,r=i.time;let s=this._weightInterpolant;null===s&&(s=i._lendControlInterpolant(),this._weightInterpolant=s);const o=s.parameterPositions,a=s.sampleValues;return o[0]=r,a[0]=t,o[1]=r+e,a[1]=n,this}}const Hd=new Float32Array(1);class Vd extends mn{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,s=e._propertyBindings,o=e._interpolants,a=n.uuid,l=this._bindingsByRootAndName;let c=l[a];void 0===c&&(c={},l[a]=c);for(let e=0;e!==r;++e){const r=i[e],l=r.name;let h=c[l];if(void 0!==h)++h.referenceCount,s[e]=h;else{if(h=s[e],void 0!==h){null===h._cacheIndex&&(++h.referenceCount,this._addInactiveBinding(h,a,l));continue}const i=t&&t._propertyBindings[e].binding.parsedPath;h=new Rd(Nd.create(n,l,i),r.ValueTypeName,r.getValueSize()),++h.referenceCount,this._addInactiveBinding(h,a,l),s[e]=h}o[e].resultBuffer=h.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){const t=(e._localRoot||this._root).uuid,n=e._clip.uuid,i=this._actionsByClip[n];this._bindAction(e,i&&i.knownActions[0]),this._addInactiveAction(e,n,t)}const t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){const n=t[e];0==n.useCount++&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){const n=t[e];0==--n.useCount&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return null!==t&&t\u003Cthis._nActiveActions}_addInactiveAction(e,t,n){const i=this._actions,r=this._actionsByClip;let s=r[t];if(void 0===s)s={knownActions:[e],actionByRoot:{}},e._byClipCacheIndex=0,r[t]=s;else{const t=s.knownActions;e._byClipCacheIndex=t.length,t.push(e)}e._cacheIndex=i.length,i.push(e),s.actionByRoot[n]=e}_removeInactiveAction(e){const t=this._actions,n=t[t.length-1],i=e._cacheIndex;n._cacheIndex=i,t[i]=n,t.pop(),e._cacheIndex=null;const r=e._clip.uuid,s=this._actionsByClip,o=s[r],a=o.knownActions,l=a[a.length-1],c=e._byClipCacheIndex;l._byClipCacheIndex=c,a[c]=l,a.pop(),e._byClipCacheIndex=null,delete o.actionByRoot[(e._localRoot||this._root).uuid],0===a.length&&delete s[r],this._removeInactiveBindingsForAction(e)}_removeInactiveBindingsForAction(e){const t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){const n=t[e];0==--n.referenceCount&&this._removeInactiveBinding(n)}}_lendAction(e){const t=this._actions,n=e._cacheIndex,i=this._nActiveActions++,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_takeBackAction(e){const t=this._actions,n=e._cacheIndex,i=--this._nActiveActions,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_addInactiveBinding(e,t,n){const i=this._bindingsByRootAndName,r=this._bindings;let s=i[t];void 0===s&&(s={},i[t]=s),s[n]=e,e._cacheIndex=r.length,r.push(e)}_removeInactiveBinding(e){const t=this._bindings,n=e.binding,i=n.rootNode.uuid,r=n.path,s=this._bindingsByRootAndName,o=s[i],a=t[t.length-1],l=e._cacheIndex;a._cacheIndex=l,t[l]=a,t.pop(),delete o[r],0===Object.keys(o).length&&delete s[i]}_lendBinding(e){const t=this._bindings,n=e._cacheIndex,i=this._nActiveBindings++,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_takeBackBinding(e){const t=this._bindings,n=e._cacheIndex,i=--this._nActiveBindings,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_lendControlInterpolant(){const e=this._controlInterpolants,t=this._nActiveControlInterpolants++;let n=e[t];return void 0===n&&(n=new uu(new Float32Array(2),new Float32Array(2),1,Hd),n.__cacheIndex=t,e[t]=n),n}_takeBackControlInterpolant(e){const t=this._controlInterpolants,n=e.__cacheIndex,i=--this._nActiveControlInterpolants,r=t[i];e.__cacheIndex=i,t[i]=e,r.__cacheIndex=n,t[n]=r}clipAction(e,t,n){const i=t||this._root,r=i.uuid;let s=\"string\"==typeof e?bu.findByName(i,e):e;const o=null!==s?s.uuid:e,a=this._actionsByClip[o];let l=null;if(void 0===n&&(n=null!==s?s.blendMode:It),void 0!==a){const e=a.actionByRoot[r];if(void 0!==e&&e.blendMode===n)return e;l=a.knownActions[0],null===s&&(s=l._clip)}if(null===s)return null;const c=new zd(this,s,t,n);return this._bindAction(c,l),this._addInactiveAction(c,o,r),c}existingAction(e,t){const n=t||this._root,i=n.uuid,r=\"string\"==typeof e?bu.findByName(n,e):e,s=r?r.uuid:e,o=this._actionsByClip[s];return void 0!==o&&o.actionByRoot[i]||null}stopAllAction(){const e=this._actions;for(let t=this._nActiveActions-1;t>=0;--t)e[t].stop();return this}update(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),s=this._accuIndex^=1;for(let o=0;o!==n;++o)t[o]._update(i,e,r,s);const o=this._bindings,a=this._nActiveBindings;for(let e=0;e!==a;++e)o[e].apply(s);return this}setTime(e){this.time=0;for(let e=0;e\u003Cthis._actions.length;e++)this._actions[e].time=0;return this.update(e)}getRoot(){return this._root}uncacheClip(e){const t=this._actions,n=e.uuid,i=this._actionsByClip,r=i[n];if(void 0!==r){const e=r.knownActions;for(let n=0,i=e.length;n!==i;++n){const i=e[n];this._deactivateAction(i);const r=i._cacheIndex,s=t[t.length-1];i._cacheIndex=null,i._byClipCacheIndex=null,s._cacheIndex=r,t[r]=s,t.pop(),this._removeInactiveBindingsForAction(i)}delete i[n]}}uncacheRoot(e){const t=e.uuid,n=this._actionsByClip;for(const e in n){const i=n[e].actionByRoot[t];void 0!==i&&(this._deactivateAction(i),this._removeInactiveAction(i))}const i=this._bindingsByRootAndName[t];if(void 0!==i)for(const e in i){const t=i[e];t.restoreOriginalState(),this._removeInactiveBinding(t)}}uncacheAction(e,t){const n=this.existingAction(e,t);null!==n&&(this._deactivateAction(n),this._removeInactiveAction(n))}}class Wd{constructor(e){this.value=e}clone(){return new Wd(void 0===this.value.clone?this.value:this.value.clone())}}let jd=0;class qd extends mn{constructor(){super(),this.isUniformsGroup=!0,Object.defineProperty(this,\"id\",{value:jd++}),this.name=\"\",this.usage=rn,this.uniforms=[]}add(e){return this.uniforms.push(e),this}remove(e){const t=this.uniforms.indexOf(e);return-1!==t&&this.uniforms.splice(t,1),this}setName(e){return this.name=e,this}setUsage(e){return this.usage=e,this}dispose(){return this.dispatchEvent({type:\"dispose\"}),this}copy(e){this.name=e.name,this.usage=e.usage;const t=e.uniforms;this.uniforms.length=0;for(let e=0,n=t.length;e\u003Cn;e++)this.uniforms.push(t[e].clone());return this}clone(){return(new this.constructor).copy(this)}}class Yd extends fl{constructor(e,t,n=1){super(e,t),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=n}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}clone(e){const t=super.clone(e);return t.meshPerAttribute=this.meshPerAttribute,t}toJSON(e){const t=super.toJSON(e);return t.isInstancedInterleavedBuffer=!0,t.meshPerAttribute=this.meshPerAttribute,t}}class Xd{constructor(e,t,n,i,r){this.isGLBufferAttribute=!0,this.buffer=e,this.type=t,this.itemSize=n,this.elementSize=i,this.count=r,this.version=0}set needsUpdate(e){!0===e&&this.version++}setBuffer(e){return this.buffer=e,this}setType(e,t){return this.type=e,this.elementSize=t,this}setItemSize(e){return this.itemSize=e,this}setCount(e){return this.count=e,this}}class Jd{constructor(e,t,n=0,i=1/0){this.ray=new Qi(e,t),this.near=n,this.far=i,this.camera=null,this.layers=new Ji,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error(\"THREE.Raycaster: Unsupported camera type: \"+t.type)}intersectObject(e,t=!0,n=[]){return Zd(e,this,n,t),n.sort(Kd),n}intersectObjects(e,t=!0,n=[]){for(let i=0,r=e.length;i\u003Cr;i++)Zd(e[i],this,n,t);return n.sort(Kd),n}}function Kd(e,t){return e.distance-t.distance}function Zd(e,t,n,i){if(e.layers.test(t.layers)&&e.raycast(t,n),!0===i){const i=e.children;for(let e=0,r=i.length;e\u003Cr;e++)Zd(i[e],t,n,!0)}}class $d{constructor(e=1,t=0,n=0){return this.radius=e,this.phi=t,this.theta=n,this}set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){const e=1e-6;return this.phi=Math.max(e,Math.min(Math.PI-e,this.phi)),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),0===this.radius?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(xn(t/this.radius,-1,1))),this}clone(){return(new this.constructor).copy(this)}}class ep{constructor(e=1,t=0,n=0){return this.radius=e,this.theta=t,this.y=n,this}set(e,t,n){return this.radius=e,this.theta=t,this.y=n,this}copy(e){return this.radius=e.radius,this.theta=e.theta,this.y=e.y,this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+n*n),this.theta=Math.atan2(e,n),this.y=t,this}clone(){return(new this.constructor).copy(this)}}const tp=new Ln;class np{constructor(e=new Ln(1/0,1/0),t=new Ln(-1/0,-1/0)){this.isBox2=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t\u003Cn;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const n=tp.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}clone(){return(new this.constructor).copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x\u003Cthis.min.x||this.max.y\u003Cthis.min.y}getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}containsPoint(e){return!(e.x\u003Cthis.min.x||e.x>this.max.x||e.y\u003Cthis.min.y||e.y>this.max.y)}containsBox(e){return this.min.x\u003C=e.min.x&&e.max.x\u003C=this.max.x&&this.min.y\u003C=e.min.y&&e.max.y\u003C=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.x\u003Cthis.min.x||e.min.x>this.max.x||e.max.y\u003Cthis.min.y||e.min.y>this.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return tp.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const ip=new ci,rp=new ci;class sp{constructor(e=new ci,t=new ci){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){ip.subVectors(e,this.start),rp.subVectors(this.end,this.start);const n=rp.dot(rp);let i=rp.dot(ip)/n;return t&&(i=xn(i,0,1)),i}closestPointToPoint(e,t,n){const i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return(new this.constructor).copy(this)}}const op=new ci;class ap extends hr{constructor(e,t){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t,this.type=\"SpotLightHelper\";const n=new Wr,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1,n=32;e\u003Cn;e++,t++){const r=e/n*Math.PI*2,s=t/n*Math.PI*2;i.push(Math.cos(r),Math.sin(r),1,Math.cos(s),Math.sin(s),1)}n.setAttribute(\"position\",new Fr(i,3));const r=new tc({fog:!1,toneMapped:!1});this.cone=new hc(n,r),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1);const e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),op.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(op),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}const lp=new ci,cp=new Ui,hp=new Ui;class up extends hc{constructor(e){const t=dp(e),n=new Wr,i=[],r=[],s=new Yn(0,0,1),o=new Yn(0,1,0);for(let e=0;e\u003Ct.length;e++){const n=t[e];n.parent&&n.parent.isBone&&(i.push(0,0,0),i.push(0,0,0),r.push(s.r,s.g,s.b),r.push(o.r,o.g,o.b))}n.setAttribute(\"position\",new Fr(i,3)),n.setAttribute(\"color\",new Fr(r,3)),super(n,new tc({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0})),this.isSkeletonHelper=!0,this.type=\"SkeletonHelper\",this.root=e,this.bones=t,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}updateMatrixWorld(e){const t=this.bones,n=this.geometry,i=n.getAttribute(\"position\");hp.copy(this.root.matrixWorld).invert();for(let e=0,n=0;e\u003Ct.length;e++){const r=t[e];r.parent&&r.parent.isBone&&(cp.multiplyMatrices(hp,r.matrixWorld),lp.setFromMatrixPosition(cp),i.setXYZ(n,lp.x,lp.y,lp.z),cp.multiplyMatrices(hp,r.parent.matrixWorld),lp.setFromMatrixPosition(cp),i.setXYZ(n+1,lp.x,lp.y,lp.z),n+=2)}n.getAttribute(\"position\").needsUpdate=!0,super.updateMatrixWorld(e)}dispose(){this.geometry.dispose(),this.material.dispose()}}function dp(e){const t=[];!0===e.isBone&&t.push(e);for(let n=0;n\u003Ce.children.length;n++)t.push.apply(t,dp(e.children[n]));return t}class pp extends cs{constructor(e,t,n){super(new Qh(t,4,2),new Cr({wireframe:!0,fog:!1,toneMapped:!1})),this.light=e,this.color=n,this.type=\"PointLightHelper\",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),void 0!==this.color?this.material.color.set(this.color):this.material.color.copy(this.light.color)}}const Ap=new ci,fp=new Yn,mp=new Yn;class gp extends hr{constructor(e,t,n){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type=\"HemisphereLightHelper\";const i=new kh(t);i.rotateY(.5*Math.PI),this.material=new Cr({wireframe:!0,fog:!1,toneMapped:!1}),void 0===this.color&&(this.material.vertexColors=!0);const r=i.getAttribute(\"position\"),s=new Float32Array(3*r.count);i.setAttribute(\"color\",new Ir(s,3)),this.add(new cs(i,this.material)),this.update()}dispose(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}update(){const e=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{const t=e.geometry.getAttribute(\"color\");fp.copy(this.light.color),mp.copy(this.light.groundColor);for(let e=0,n=t.count;e\u003Cn;e++){const i=e\u003Cn/2?fp:mp;t.setXYZ(e,i.r,i.g,i.b)}t.needsUpdate=!0}this.light.updateWorldMatrix(!0,!1),e.lookAt(Ap.setFromMatrixPosition(this.light.matrixWorld).negate())}}class vp extends hc{constructor(e=10,t=10,n=4473924,i=8947848){n=new Yn(n),i=new Yn(i);const r=t/2,s=e/t,o=e/2,a=[],l=[];for(let e=0,c=0,h=-o;e\u003C=t;e++,h+=s){a.push(-o,0,h,o,0,h),a.push(h,0,-o,h,0,o);const t=e===r?n:i;t.toArray(l,c),c+=3,t.toArray(l,c),c+=3,t.toArray(l,c),c+=3,t.toArray(l,c),c+=3}const c=new Wr;c.setAttribute(\"position\",new Fr(a,3)),c.setAttribute(\"color\",new Fr(l,3)),super(c,new tc({vertexColors:!0,toneMapped:!1})),this.type=\"GridHelper\"}dispose(){this.geometry.dispose(),this.material.dispose()}}class yp extends hc{constructor(e=10,t=16,n=8,i=64,r=4473924,s=8947848){r=new Yn(r),s=new Yn(s);const o=[],a=[];if(t>1)for(let n=0;n\u003Ct;n++){const i=n/t*(2*Math.PI),l=Math.sin(i)*e,c=Math.cos(i)*e;o.push(0,0,0),o.push(l,0,c);const h=1&n?r:s;a.push(h.r,h.g,h.b),a.push(h.r,h.g,h.b)}for(let t=0;t\u003Cn;t++){const l=1&t?r:s,c=e-e/n*t;for(let e=0;e\u003Ci;e++){let t=e/i*(2*Math.PI),n=Math.sin(t)*c,r=Math.cos(t)*c;o.push(n,0,r),a.push(l.r,l.g,l.b),t=(e+1)/i*(2*Math.PI),n=Math.sin(t)*c,r=Math.cos(t)*c,o.push(n,0,r),a.push(l.r,l.g,l.b)}}const l=new Wr;l.setAttribute(\"position\",new Fr(o,3)),l.setAttribute(\"color\",new Fr(a,3)),super(l,new tc({vertexColors:!0,toneMapped:!1})),this.type=\"PolarGridHelper\"}dispose(){this.geometry.dispose(),this.material.dispose()}}const Ep=new ci,bp=new ci,xp=new ci;class wp extends hr{constructor(e,t,n){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type=\"DirectionalLightHelper\",void 0===t&&(t=1);let i=new Wr;i.setAttribute(\"position\",new Fr([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));const r=new tc({fog:!1,toneMapped:!1});this.lightPlane=new ac(i,r),this.add(this.lightPlane),i=new Wr,i.setAttribute(\"position\",new Fr([0,0,0,0,0,1],3)),this.targetLine=new ac(i,r),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),Ep.setFromMatrixPosition(this.light.matrixWorld),bp.setFromMatrixPosition(this.light.target.matrixWorld),xp.subVectors(bp,Ep),this.lightPlane.lookAt(bp),void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(bp),this.targetLine.scale.z=xp.length()}}const Cp=new ci,Mp=new gs;class _p extends hc{constructor(e){const t=new Wr,n=new tc({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],r=[],s={};function o(e,t){a(e),a(t)}function a(e){i.push(0,0,0),r.push(0,0,0),void 0===s[e]&&(s[e]=[]),s[e].push(i.length/3-1)}o(\"n1\",\"n2\"),o(\"n2\",\"n4\"),o(\"n4\",\"n3\"),o(\"n3\",\"n1\"),o(\"f1\",\"f2\"),o(\"f2\",\"f4\"),o(\"f4\",\"f3\"),o(\"f3\",\"f1\"),o(\"n1\",\"f1\"),o(\"n2\",\"f2\"),o(\"n3\",\"f3\"),o(\"n4\",\"f4\"),o(\"p\",\"n1\"),o(\"p\",\"n2\"),o(\"p\",\"n3\"),o(\"p\",\"n4\"),o(\"u1\",\"u2\"),o(\"u2\",\"u3\"),o(\"u3\",\"u1\"),o(\"c\",\"t\"),o(\"p\",\"c\"),o(\"cn1\",\"cn2\"),o(\"cn3\",\"cn4\"),o(\"cf1\",\"cf2\"),o(\"cf3\",\"cf4\"),t.setAttribute(\"position\",new Fr(i,3)),t.setAttribute(\"color\",new Fr(r,3)),super(t,n),this.type=\"CameraHelper\",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update();const l=new Yn(16755200),c=new Yn(16711680),h=new Yn(43775),u=new Yn(16777215),d=new Yn(3355443);this.setColors(l,c,h,u,d)}setColors(e,t,n,i,r){const s=this.geometry.getAttribute(\"color\");s.setXYZ(0,e.r,e.g,e.b),s.setXYZ(1,e.r,e.g,e.b),s.setXYZ(2,e.r,e.g,e.b),s.setXYZ(3,e.r,e.g,e.b),s.setXYZ(4,e.r,e.g,e.b),s.setXYZ(5,e.r,e.g,e.b),s.setXYZ(6,e.r,e.g,e.b),s.setXYZ(7,e.r,e.g,e.b),s.setXYZ(8,e.r,e.g,e.b),s.setXYZ(9,e.r,e.g,e.b),s.setXYZ(10,e.r,e.g,e.b),s.setXYZ(11,e.r,e.g,e.b),s.setXYZ(12,e.r,e.g,e.b),s.setXYZ(13,e.r,e.g,e.b),s.setXYZ(14,e.r,e.g,e.b),s.setXYZ(15,e.r,e.g,e.b),s.setXYZ(16,e.r,e.g,e.b),s.setXYZ(17,e.r,e.g,e.b),s.setXYZ(18,e.r,e.g,e.b),s.setXYZ(19,e.r,e.g,e.b),s.setXYZ(20,e.r,e.g,e.b),s.setXYZ(21,e.r,e.g,e.b),s.setXYZ(22,e.r,e.g,e.b),s.setXYZ(23,e.r,e.g,e.b),s.setXYZ(24,t.r,t.g,t.b),s.setXYZ(25,t.r,t.g,t.b),s.setXYZ(26,t.r,t.g,t.b),s.setXYZ(27,t.r,t.g,t.b),s.setXYZ(28,t.r,t.g,t.b),s.setXYZ(29,t.r,t.g,t.b),s.setXYZ(30,t.r,t.g,t.b),s.setXYZ(31,t.r,t.g,t.b),s.setXYZ(32,n.r,n.g,n.b),s.setXYZ(33,n.r,n.g,n.b),s.setXYZ(34,n.r,n.g,n.b),s.setXYZ(35,n.r,n.g,n.b),s.setXYZ(36,n.r,n.g,n.b),s.setXYZ(37,n.r,n.g,n.b),s.setXYZ(38,i.r,i.g,i.b),s.setXYZ(39,i.r,i.g,i.b),s.setXYZ(40,r.r,r.g,r.b),s.setXYZ(41,r.r,r.g,r.b),s.setXYZ(42,r.r,r.g,r.b),s.setXYZ(43,r.r,r.g,r.b),s.setXYZ(44,r.r,r.g,r.b),s.setXYZ(45,r.r,r.g,r.b),s.setXYZ(46,r.r,r.g,r.b),s.setXYZ(47,r.r,r.g,r.b),s.setXYZ(48,r.r,r.g,r.b),s.setXYZ(49,r.r,r.g,r.b),s.needsUpdate=!0}update(){const e=this.geometry,t=this.pointMap;Mp.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),Ip(\"c\",t,e,Mp,0,0,-1),Ip(\"t\",t,e,Mp,0,0,1),Ip(\"n1\",t,e,Mp,-1,-1,-1),Ip(\"n2\",t,e,Mp,1,-1,-1),Ip(\"n3\",t,e,Mp,-1,1,-1),Ip(\"n4\",t,e,Mp,1,1,-1),Ip(\"f1\",t,e,Mp,-1,-1,1),Ip(\"f2\",t,e,Mp,1,-1,1),Ip(\"f3\",t,e,Mp,-1,1,1),Ip(\"f4\",t,e,Mp,1,1,1),Ip(\"u1\",t,e,Mp,.7,1.1,-1),Ip(\"u2\",t,e,Mp,-.7,1.1,-1),Ip(\"u3\",t,e,Mp,0,2,-1),Ip(\"cf1\",t,e,Mp,-1,0,1),Ip(\"cf2\",t,e,Mp,1,0,1),Ip(\"cf3\",t,e,Mp,0,-1,1),Ip(\"cf4\",t,e,Mp,0,1,1),Ip(\"cn1\",t,e,Mp,-1,0,-1),Ip(\"cn2\",t,e,Mp,1,0,-1),Ip(\"cn3\",t,e,Mp,0,-1,-1),Ip(\"cn4\",t,e,Mp,0,1,-1),e.getAttribute(\"position\").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}function Ip(e,t,n,i,r,s,o){Cp.set(r,s,o).unproject(i);const a=t[e];if(void 0!==a){const e=n.getAttribute(\"position\");for(let t=0,n=a.length;t\u003Cn;t++)e.setXYZ(a[t],Cp.x,Cp.y,Cp.z)}}const Bp=new di;class Sp extends hc{constructor(e,t=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=new Float32Array(24),r=new Wr;r.setIndex(new Ir(n,1)),r.setAttribute(\"position\",new Ir(i,3)),super(r,new tc({color:t,toneMapped:!1})),this.object=e,this.type=\"BoxHelper\",this.matrixAutoUpdate=!1,this.update()}update(e){if(void 0!==e&&console.warn(\"THREE.BoxHelper: .update() has no longer arguments.\"),void 0!==this.object&&Bp.setFromObject(this.object),Bp.isEmpty())return;const t=Bp.min,n=Bp.max,i=this.geometry.attributes.position,r=i.array;r[0]=n.x,r[1]=n.y,r[2]=n.z,r[3]=t.x,r[4]=n.y,r[5]=n.z,r[6]=t.x,r[7]=t.y,r[8]=n.z,r[9]=n.x,r[10]=t.y,r[11]=n.z,r[12]=n.x,r[13]=n.y,r[14]=t.z,r[15]=t.x,r[16]=n.y,r[17]=t.z,r[18]=t.x,r[19]=t.y,r[20]=t.z,r[21]=n.x,r[22]=t.y,r[23]=t.z,i.needsUpdate=!0,this.geometry.computeBoundingSphere()}setFromObject(e){return this.object=e,this.update(),this}copy(e,t){return super.copy(e,t),this.object=e.object,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class Tp extends hc{constructor(e,t=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=new Wr;i.setIndex(new Ir(n,1)),i.setAttribute(\"position\",new Fr([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3)),super(i,new tc({color:t,toneMapped:!1})),this.box=e,this.type=\"Box3Helper\",this.geometry.computeBoundingSphere()}updateMatrixWorld(e){const t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(e))}dispose(){this.geometry.dispose(),this.material.dispose()}}class Lp extends ac{constructor(e,t=1,n=16776960){const i=n,r=new Wr;r.setAttribute(\"position\",new Fr([1,-1,0,-1,1,0,-1,-1,0,1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],3)),r.computeBoundingSphere(),super(r,new tc({color:i,toneMapped:!1})),this.type=\"PlaneHelper\",this.plane=e,this.size=t;const s=new Wr;s.setAttribute(\"position\",new Fr([1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],3)),s.computeBoundingSphere(),this.add(new cs(s,new Cr({color:i,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1})))}updateMatrixWorld(e){this.position.set(0,0,0),this.scale.set(.5*this.size,.5*this.size,1),this.lookAt(this.plane.normal),this.translateZ(-this.plane.constant),super.updateMatrixWorld(e)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const Dp=new ci;let Rp,Pp;class kp extends hr{constructor(e=new ci(0,0,1),t=new ci(0,0,0),n=1,i=16776960,r=.2*n,s=.2*r){super(),this.type=\"ArrowHelper\",void 0===Rp&&(Rp=new Wr,Rp.setAttribute(\"position\",new Fr([0,0,0,0,1,0],3)),Pp=new Xc(0,.5,1,5,1),Pp.translate(0,-.5,0)),this.position.copy(t),this.line=new ac(Rp,new tc({color:i,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new cs(Pp,new Cr({color:i,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(e),this.setLength(n,r,s)}setDirection(e){if(e.y>.99999)this.quaternion.set(0,0,0,1);else if(e.y\u003C-.99999)this.quaternion.set(1,0,0,0);else{Dp.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(Dp,t)}}setLength(e,t=.2*e,n=.2*t){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class Fp extends hc{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=new Wr;n.setAttribute(\"position\",new Fr(t,3)),n.setAttribute(\"color\",new Fr([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(n,new tc({vertexColors:!0,toneMapped:!1})),this.type=\"AxesHelper\"}setColors(e,t,n){const i=new Yn,r=this.geometry.attributes.color.array;return i.set(e),i.toArray(r,0),i.toArray(r,3),i.set(t),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class Op{constructor(){this.type=\"ShapePath\",this.color=new Yn,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new Wc,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,r,s){return this.currentPath.bezierCurveTo(e,t,n,i,r,s),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(e,t){const n=t.length;let i=!1;for(let r=n-1,s=0;s\u003Cn;r=s++){let n=t[r],o=t[s],a=o.x-n.x,l=o.y-n.y;if(Math.abs(l)>Number.EPSILON){if(l\u003C0&&(n=t[s],a=-a,o=t[r],l=-l),e.y\u003Cn.y||e.y>o.y)continue;if(e.y===n.y){if(e.x===n.x)return!0}else{const t=l*(e.x-n.x)-a*(e.y-n.y);if(0===t)return!0;if(t\u003C0)continue;i=!i}}else{if(e.y!==n.y)continue;if(o.x\u003C=e.x&&e.x\u003C=n.x||n.x\u003C=e.x&&e.x\u003C=o.x)return!0}}return i}const n=Sh.isClockWise,i=this.subPaths;if(0===i.length)return[];let r,s,o;const a=[];if(1===i.length)return s=i[0],o=new rh,o.curves=s.curves,a.push(o),a;let l=!n(i[0].getPoints());l=e?!l:l;const c=[],h=[];let u,d,p=[],A=0;h[A]=void 0,p[A]=[];for(let t=0,o=i.length;t\u003Co;t++)s=i[t],u=s.getPoints(),r=n(u),r=e?!r:r,r?(!l&&h[A]&&A++,h[A]={s:new rh,p:u},h[A].s.curves=s.curves,l&&A++,p[A]=[]):p[A].push({h:s,p:u[0]});if(!h[0])return function(e){const t=[];for(let n=0,i=e.length;n\u003Ci;n++){const i=e[n],r=new rh;r.curves=i.curves,t.push(r)}return t}(i);if(h.length>1){let e=!1,n=0;for(let e=0,t=h.length;e\u003Ct;e++)c[e]=[];for(let i=0,r=h.length;i\u003Cr;i++){const r=p[i];for(let s=0;s\u003Cr.length;s++){const o=r[s];let a=!0;for(let r=0;r\u003Ch.length;r++)t(o.p,h[r].p)&&(i!==r&&n++,a?(a=!1,c[r].push(o)):e=!0);a&&c[i].push(o)}}n>0&&!1===e&&(p=c)}for(let e=0,t=h.length;e\u003Ct;e++){o=h[e].s,a.push(o),d=p[e];for(let e=0,t=d.length;e\u003Ct;e++)o.holes.push(d[e].h)}return a}}const Qp=Up();function Up(){const e=new ArrayBuffer(4),t=new Float32Array(e),n=new Uint32Array(e),i=new Uint32Array(512),r=new Uint32Array(512);for(let e=0;e\u003C256;++e){const t=e-127;t\u003C-27?(i[e]=0,i[256|e]=32768,r[e]=24,r[256|e]=24):t\u003C-14?(i[e]=1024>>-t-14,i[256|e]=1024>>-t-14|32768,r[e]=-t-1,r[256|e]=-t-1):t\u003C=15?(i[e]=t+15\u003C\u003C10,i[256|e]=t+15\u003C\u003C10|32768,r[e]=13,r[256|e]=13):t\u003C128?(i[e]=31744,i[256|e]=64512,r[e]=24,r[256|e]=24):(i[e]=31744,i[256|e]=64512,r[e]=13,r[256|e]=13)}const s=new Uint32Array(2048),o=new Uint32Array(64),a=new Uint32Array(64);for(let e=1;e\u003C1024;++e){let t=e\u003C\u003C13,n=0;for(;0==(8388608&t);)t\u003C\u003C=1,n-=8388608;t&=-8388609,n+=947912704,s[e]=t|n}for(let e=1024;e\u003C2048;++e)s[e]=939524096+(e-1024\u003C\u003C13);for(let e=1;e\u003C31;++e)o[e]=e\u003C\u003C23;o[31]=1199570944,o[32]=2147483648;for(let e=33;e\u003C63;++e)o[e]=2147483648+(e-32\u003C\u003C23);o[63]=3347054592;for(let e=1;e\u003C64;++e)32!==e&&(a[e]=1024);return{floatView:t,uint32View:n,baseTable:i,shiftTable:r,mantissaTable:s,exponentTable:o,offsetTable:a}}var Np=Object.freeze({__proto__:null,toHalfFloat:function(e){Math.abs(e)>65504&&console.warn(\"THREE.DataUtils.toHalfFloat(): Value out of range.\"),e=xn(e,-65504,65504),Qp.floatView[0]=e;const t=Qp.uint32View[0],n=t>>23&511;return Qp.baseTable[n]+((8388607&t)>>Qp.shiftTable[n])},fromHalfFloat:function(e){const t=e>>10;return Qp.uint32View[0]=Qp.mantissaTable[Qp.offsetTable[t]+(1023&e)]+Qp.exponentTable[t],Qp.floatView[0]}});function Gp(){console.error(\"THREE.ImmediateRenderObject has been removed.\")}class zp extends ni{constructor(e,t,n){console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the \"samples\" property to greater 0 to enable multisampling.'),super(e,t,n),this.samples=4}}class Hp extends ii{constructor(e,t,n,i){console.warn(\"THREE.DataTexture2DArray has been renamed to DataArrayTexture.\"),super(e,t,n,i)}}class Vp extends si{constructor(e,t,n,i){console.warn(\"THREE.DataTexture3D has been renamed to Data3DTexture.\"),super(e,t,n,i)}}class Wp extends us{constructor(e,t,n,i,r,s){console.warn(\"THREE.BoxBufferGeometry has been renamed to THREE.BoxGeometry.\"),super(e,t,n,i,r,s)}}class jp extends qc{constructor(e,t,n,i){console.warn(\"THREE.CapsuleBufferGeometry has been renamed to THREE.CapsuleGeometry.\"),super(e,t,n,i)}}class qp extends Yc{constructor(e,t,n,i){console.warn(\"THREE.CircleBufferGeometry has been renamed to THREE.CircleGeometry.\"),super(e,t,n,i)}}class Yp extends Jc{constructor(e,t,n,i,r,s,o){console.warn(\"THREE.ConeBufferGeometry has been renamed to THREE.ConeGeometry.\"),super(e,t,n,i,r,s,o)}}class Xp extends Xc{constructor(e,t,n,i,r,s,o,a){console.warn(\"THREE.CylinderBufferGeometry has been renamed to THREE.CylinderGeometry.\"),super(e,t,n,i,r,s,o,a)}}class Jp extends Zc{constructor(e,t){console.warn(\"THREE.DodecahedronBufferGeometry has been renamed to THREE.DodecahedronGeometry.\"),super(e,t)}}class Kp extends Dh{constructor(e,t){console.warn(\"THREE.ExtrudeBufferGeometry has been renamed to THREE.ExtrudeGeometry.\"),super(e,t)}}class Zp extends Ph{constructor(e,t){console.warn(\"THREE.IcosahedronBufferGeometry has been renamed to THREE.IcosahedronGeometry.\"),super(e,t)}}class $p extends jc{constructor(e,t,n,i){console.warn(\"THREE.LatheBufferGeometry has been renamed to THREE.LatheGeometry.\"),super(e,t,n,i)}}class eA extends kh{constructor(e,t){console.warn(\"THREE.OctahedronBufferGeometry has been renamed to THREE.OctahedronGeometry.\"),super(e,t)}}class tA extends Ds{constructor(e,t,n,i){console.warn(\"THREE.PlaneBufferGeometry has been renamed to THREE.PlaneGeometry.\"),super(e,t,n,i)}}class nA extends Kc{constructor(e,t,n,i){console.warn(\"THREE.PolyhedronBufferGeometry has been renamed to THREE.PolyhedronGeometry.\"),super(e,t,n,i)}}class iA extends Fh{constructor(e,t,n,i,r,s){console.warn(\"THREE.RingBufferGeometry has been renamed to THREE.RingGeometry.\"),super(e,t,n,i,r,s)}}class rA extends Oh{constructor(e,t){console.warn(\"THREE.ShapeBufferGeometry has been renamed to THREE.ShapeGeometry.\"),super(e,t)}}class sA extends Qh{constructor(e,t,n,i,r,s,o){console.warn(\"THREE.SphereBufferGeometry has been renamed to THREE.SphereGeometry.\"),super(e,t,n,i,r,s,o)}}class oA extends Uh{constructor(e,t){console.warn(\"THREE.TetrahedronBufferGeometry has been renamed to THREE.TetrahedronGeometry.\"),super(e,t)}}class aA extends Nh{constructor(e,t,n,i,r){console.warn(\"THREE.TorusBufferGeometry has been renamed to THREE.TorusGeometry.\"),super(e,t,n,i,r)}}class lA extends Gh{constructor(e,t,n,i,r,s){console.warn(\"THREE.TorusKnotBufferGeometry has been renamed to THREE.TorusKnotGeometry.\"),super(e,t,n,i,r,s)}}class cA extends zh{constructor(e,t,n,i,r){console.warn(\"THREE.TubeBufferGeometry has been renamed to THREE.TubeGeometry.\"),super(e,t,n,i,r)}}\"undefined\"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\",{detail:{revision:s}})),\"undefined\"!=typeof window&&(window.__THREE__?console.warn(\"WARNING: Multiple instances of Three.js being imported.\"):window.__THREE__=s);const hA=new WeakMap;function uA(){let e,t;function n(e,t,n,i,r,s){const o=s.num_components(),a=n.num_points()*o,l=a*r.BYTES_PER_ELEMENT,c=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,r),h=e._malloc(l);t.GetAttributeDataArrayForAllPoints(n,s,c,l,h);const u=new r(e.HEAPF32.buffer,h,a).slice();return e._free(h),{name:i,array:u,itemSize:o}}onmessage=function(i){const r=i.data;switch(r.type){case\"init\":e=r.decoderConfig,t=new Promise((function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)}));break;case\"decode\":const i=r.buffer,s=r.taskConfig;t.then((e=>{const t=e.draco,o=new t.Decoder,a=new t.DecoderBuffer;a.Init(new Int8Array(i),i.byteLength);try{const e=function(e,t,i,r){const s=r.attributeIDs,o=r.attributeTypes;let a,l;const c=t.GetEncodedGeometryType(i);if(c===e.TRIANGULAR_MESH)a=new e.Mesh,l=t.DecodeBufferToMesh(i,a);else{if(c!==e.POINT_CLOUD)throw new Error(\"THREE.DRACOLoader: Unexpected geometry type.\");a=new e.PointCloud,l=t.DecodeBufferToPointCloud(i,a)}if(!l.ok()||0===a.ptr)throw new Error(\"THREE.DRACOLoader: Decoding failed: \"+l.error_msg());const h={index:null,attributes:[]};for(const i in s){const l=self[o[i]];let c,u;if(r.useUniqueIDs)u=s[i],c=t.GetAttributeByUniqueId(a,u);else{if(u=t.GetAttributeId(a,e[s[i]]),-1===u)continue;c=t.GetAttribute(a,u)}h.attributes.push(n(e,t,a,i,l,c))}return c===e.TRIANGULAR_MESH&&(h.index=function(e,t,n){const i=3*n.num_faces(),r=4*i,s=e._malloc(r);t.GetTrianglesUInt32Array(n,r,s);const o=new Uint32Array(e.HEAPF32.buffer,s,i).slice();return e._free(s),{array:o,itemSize:1}}(e,t,a)),e.destroy(a),h}(t,o,a,s),i=e.attributes.map((e=>e.array.buffer));e.index&&i.push(e.index.array.buffer),self.postMessage({type:\"decode\",id:r.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:\"error\",id:r.id,error:e.message})}finally{t.destroy(a),t.destroy(o)}}))}}}function dA(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}const pA=\"KHR_binary_glTF\",AA=\"KHR_draco_mesh_compression\",fA=\"KHR_lights_punctual\",mA=\"KHR_materials_clearcoat\",gA=\"KHR_materials_ior\",vA=\"KHR_materials_sheen\",yA=\"KHR_materials_specular\",EA=\"KHR_materials_transmission\",bA=\"KHR_materials_iridescence\",xA=\"KHR_materials_unlit\",wA=\"KHR_materials_volume\",CA=\"KHR_texture_basisu\",MA=\"KHR_texture_transform\",_A=\"KHR_mesh_quantization\",IA=\"KHR_materials_emissive_strength\",BA=\"EXT_texture_webp\",SA=\"EXT_meshopt_compression\",TA=\"EXT_mesh_gpu_instancing\";class LA{constructor(e){this.parser=e,this.name=fA,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,i=t.length;n\u003Ci;n++){const i=t[n];i.extensions&&i.extensions[this.name]&&void 0!==i.extensions[this.name].light&&e._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(e){const t=this.parser,n=\"light:\"+e;let i=t.cache.get(n);if(i)return i;const r=t.json,s=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let o;const a=new Yn(16777215);void 0!==s.color&&a.fromArray(s.color);const l=void 0!==s.range?s.range:0;switch(s.type){case\"directional\":o=new Ju(a),o.target.position.set(0,0,-1),o.add(o.target);break;case\"point\":o=new Yu(a),o.distance=l;break;case\"spot\":o=new Hu(a),o.distance=l,s.spot=s.spot||{},s.spot.innerConeAngle=void 0!==s.spot.innerConeAngle?s.spot.innerConeAngle:0,s.spot.outerConeAngle=void 0!==s.spot.outerConeAngle?s.spot.outerConeAngle:Math.PI/4,o.angle=s.spot.outerConeAngle,o.penumbra=1-s.spot.innerConeAngle/s.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw new Error(\"THREE.GLTFLoader: Unexpected light type: \"+s.type)}return o.position.set(0,0,0),o.decay=2,cf(o,s),void 0!==s.intensity&&(o.intensity=s.intensity),o.name=t.createUniqueName(s.name||\"light_\"+e),i=Promise.resolve(o),t.cache.add(n,i),i}getDependency(e,t){if(\"light\"===e)return this._loadLight(t)}createNodeAttachment(e){const t=this,n=this.parser,i=n.json.nodes[e],r=(i.extensions&&i.extensions[this.name]||{}).light;return void 0===r?null:this._loadLight(r).then((function(e){return n._getNodeRef(t.cache,r,e)}))}}class DA{constructor(){this.name=xA}getMaterialType(){return Cr}extendParams(e,t,n){const i=[];e.color=new Yn(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const t=r.baseColorFactor;e.color.fromArray(t),e.opacity=t[3]}void 0!==r.baseColorTexture&&i.push(n.assignTexture(e,\"map\",r.baseColorTexture,Rt))}return Promise.all(i)}}class RA{constructor(e){this.parser=e,this.name=IA}extendMaterialParams(e,t){const n=this.parser.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name].emissiveStrength;return void 0!==i&&(t.emissiveIntensity=i),Promise.resolve()}}class PA{constructor(e){this.parser=e,this.name=mA}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?Xh:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];if(void 0!==s.clearcoatFactor&&(t.clearcoat=s.clearcoatFactor),void 0!==s.clearcoatTexture&&r.push(n.assignTexture(t,\"clearcoatMap\",s.clearcoatTexture)),void 0!==s.clearcoatRoughnessFactor&&(t.clearcoatRoughness=s.clearcoatRoughnessFactor),void 0!==s.clearcoatRoughnessTexture&&r.push(n.assignTexture(t,\"clearcoatRoughnessMap\",s.clearcoatRoughnessTexture)),void 0!==s.clearcoatNormalTexture&&(r.push(n.assignTexture(t,\"clearcoatNormalMap\",s.clearcoatNormalTexture)),void 0!==s.clearcoatNormalTexture.scale)){const e=s.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new Ln(e,e)}return Promise.all(r)}}class kA{constructor(e){this.parser=e,this.name=bA}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?Xh:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return void 0!==s.iridescenceFactor&&(t.iridescence=s.iridescenceFactor),void 0!==s.iridescenceTexture&&r.push(n.assignTexture(t,\"iridescenceMap\",s.iridescenceTexture)),void 0!==s.iridescenceIor&&(t.iridescenceIOR=s.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==s.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),void 0!==s.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),void 0!==s.iridescenceThicknessTexture&&r.push(n.assignTexture(t,\"iridescenceThicknessMap\",s.iridescenceThicknessTexture)),Promise.all(r)}}class FA{constructor(e){this.parser=e,this.name=vA}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?Xh:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new Yn(0,0,0),t.sheenRoughness=0,t.sheen=1;const s=i.extensions[this.name];return void 0!==s.sheenColorFactor&&t.sheenColor.fromArray(s.sheenColorFactor),void 0!==s.sheenRoughnessFactor&&(t.sheenRoughness=s.sheenRoughnessFactor),void 0!==s.sheenColorTexture&&r.push(n.assignTexture(t,\"sheenColorMap\",s.sheenColorTexture,Rt)),void 0!==s.sheenRoughnessTexture&&r.push(n.assignTexture(t,\"sheenRoughnessMap\",s.sheenRoughnessTexture)),Promise.all(r)}}class OA{constructor(e){this.parser=e,this.name=EA}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?Xh:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return void 0!==s.transmissionFactor&&(t.transmission=s.transmissionFactor),void 0!==s.transmissionTexture&&r.push(n.assignTexture(t,\"transmissionMap\",s.transmissionTexture)),Promise.all(r)}}class QA{constructor(e){this.parser=e,this.name=wA}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?Xh:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];t.thickness=void 0!==s.thicknessFactor?s.thicknessFactor:0,void 0!==s.thicknessTexture&&r.push(n.assignTexture(t,\"thicknessMap\",s.thicknessTexture)),t.attenuationDistance=s.attenuationDistance||1/0;const o=s.attenuationColor||[1,1,1];return t.attenuationColor=new Yn(o[0],o[1],o[2]),Promise.all(r)}}class UA{constructor(e){this.parser=e,this.name=gA}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?Xh:null}extendMaterialParams(e,t){const n=this.parser.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name];return t.ior=void 0!==i.ior?i.ior:1.5,Promise.resolve()}}class NA{constructor(e){this.parser=e,this.name=yA}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?Xh:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];t.specularIntensity=void 0!==s.specularFactor?s.specularFactor:1,void 0!==s.specularTexture&&r.push(n.assignTexture(t,\"specularIntensityMap\",s.specularTexture));const o=s.specularColorFactor||[1,1,1];return t.specularColor=new Yn(o[0],o[1],o[2]),void 0!==s.specularColorTexture&&r.push(n.assignTexture(t,\"specularColorMap\",s.specularColorTexture,Rt)),Promise.all(r)}}class GA{constructor(e){this.parser=e,this.name=CA}loadTexture(e){const t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;const r=i.extensions[this.name],s=t.options.ktx2Loader;if(!s){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error(\"THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures\");return null}return t.loadTextureImage(e,r.source,s)}}class zA{constructor(e){this.parser=e,this.name=BA,this.isSupported=null}loadTexture(e){const t=this.name,n=this.parser,i=n.json,r=i.textures[e];if(!r.extensions||!r.extensions[t])return null;const s=r.extensions[t],o=i.images[s.source];let a=n.textureLoader;if(o.uri){const e=n.options.manager.getHandler(o.uri);null!==e&&(a=e)}return this.detectSupport().then((function(r){if(r)return n.loadTextureImage(e,s.source,a);if(i.extensionsRequired&&i.extensionsRequired.indexOf(t)>=0)throw new Error(\"THREE.GLTFLoader: WebP required by asset but unsupported.\");return n.loadTexture(e)}))}detectSupport(){return this.isSupported||(this.isSupported=new Promise((function(e){const t=new Image;t.src=\"data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA\",t.onload=t.onerror=function(){e(1===t.height)}}))),this.isSupported}}class HA{constructor(e){this.name=SA,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const e=n.extensions[this.name],i=this.parser.getDependency(\"buffer\",e.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error(\"THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files\");return null}return i.then((function(t){const n=e.byteOffset||0,i=e.byteLength||0,s=e.count,o=e.byteStride,a=new Uint8Array(t,n,i);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(s,o,a,e.mode,e.filter).then((function(e){return e.buffer})):r.ready.then((function(){const t=new ArrayBuffer(s*o);return r.decodeGltfBuffer(new Uint8Array(t),s,o,a,e.mode,e.filter),t}))}))}return null}}class VA{constructor(e){this.name=TA,this.parser=e}createNodeMesh(e){const t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||void 0===n.mesh)return null;const i=t.meshes[n.mesh];for(const e of i.primitives)if(e.mode!==$A.TRIANGLES&&e.mode!==$A.TRIANGLE_STRIP&&e.mode!==$A.TRIANGLE_FAN&&void 0!==e.mode)return null;const r=n.extensions[this.name].attributes,s=[],o={};for(const e in r)s.push(this.parser.getDependency(\"accessor\",r[e]).then((t=>(o[e]=t,o[e]))));return s.length\u003C1?null:(s.push(this.parser.createNodeMesh(e)),Promise.all(s).then((e=>{const t=e.pop(),n=t.isGroup?t.children:[t],i=e[0].count,r=[];for(const e of n){const t=new Ui,n=new ci,s=new li,a=new ci(1,1,1),l=new ec(e.geometry,e.material,i);for(let e=0;e\u003Ci;e++)o.TRANSLATION&&n.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&s.fromBufferAttribute(o.ROTATION,e),o.SCALE&&a.fromBufferAttribute(o.SCALE,e),l.setMatrixAt(e,t.compose(n,s,a));for(const t in o)\"TRANSLATION\"!==t&&\"ROTATION\"!==t&&\"SCALE\"!==t&&e.geometry.setAttribute(t,o[t]);hr.prototype.copy.call(l,e),l.frustumCulled=!1,this.parser.assignFinalMaterial(l),r.push(l)}return t.isGroup?(t.clear(),t.add(...r),t):r[0]})))}}const WA=\"glTF\";class jA{constructor(e){this.name=pA,this.content=null,this.body=null;const t=new DataView(e,0,12);if(this.header={magic:nd.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==WA)throw new Error(\"THREE.GLTFLoader: Unsupported glTF-Binary header.\");if(this.header.version\u003C2)throw new Error(\"THREE.GLTFLoader: Legacy binary file detected.\");const n=this.header.length-12,i=new DataView(e,12);let r=0;for(;r\u003Cn;){const t=i.getUint32(r,!0);r+=4;const n=i.getUint32(r,!0);if(r+=4,1313821514===n){const n=new Uint8Array(e,12+r,t);this.content=nd.decodeText(n)}else if(5130562===n){const n=12+r;this.body=e.slice(n,n+t)}r+=t}if(null===this.content)throw new Error(\"THREE.GLTFLoader: JSON content not found.\")}}class qA{constructor(e,t){if(!t)throw new Error(\"THREE.GLTFLoader: No DRACOLoader instance provided.\");this.name=AA,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const n=this.json,i=this.dracoLoader,r=e.extensions[this.name].bufferView,s=e.extensions[this.name].attributes,o={},a={},l={};for(const e in s){const t=sf[e]||e.toLowerCase();o[t]=s[e]}for(const t in e.attributes){const i=sf[t]||t.toLowerCase();if(void 0!==s[t]){const r=n.accessors[e.attributes[t]],s=ef[r.componentType];l[i]=s.name,a[i]=!0===r.normalized}}return t.getDependency(\"bufferView\",r).then((function(e){return new Promise((function(t){i.decodeDracoFile(e,(function(e){for(const t in e.attributes){const n=e.attributes[t],i=a[t];void 0!==i&&(n.normalized=i)}t(e)}),o,l)}))}))}}class YA{constructor(){this.name=MA}extendTexture(e,t){return void 0!==t.texCoord&&console.warn('THREE.GLTFLoader: Custom UV sets in \"'+this.name+'\" extension not yet supported.'),void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class XA{constructor(){this.name=_A}}class JA extends cu{constructor(e,t,n,i){super(e,t,n,i)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i*3+i;for(let e=0;e!==i;e++)t[e]=n[r+e];return t}interpolate_(e,t,n,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=2*o,l=3*o,c=i-t,h=(n-t)/c,u=h*h,d=u*h,p=e*l,A=p-l,f=-2*d+3*u,m=d-u,g=1-f,v=m-u+h;for(let e=0;e!==o;e++){const t=s[A+e+o],n=s[A+e+a]*c,i=s[p+e+o],l=s[p+e]*c;r[e]=g*t+v*n+f*i+m*l}return r}}const KA=new li;class ZA extends JA{interpolate_(e,t,n,i){const r=super.interpolate_(e,t,n,i);return KA.fromArray(r).normalize().toArray(r),r}}const $A={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},ef={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},tf={9728:pe,9729:ve,9984:Ae,9985:ye,9986:me,9987:be},nf={33071:ue,33648:de,10497:he},rf={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},sf={POSITION:\"position\",NORMAL:\"normal\",TANGENT:\"tangent\",TEXCOORD_0:\"uv\",TEXCOORD_1:\"uv2\",COLOR_0:\"color\",WEIGHTS_0:\"skinWeight\",JOINTS_0:\"skinIndex\"},of={scale:\"scale\",translation:\"position\",rotation:\"quaternion\",weights:\"morphTargetInfluences\"},af={CUBICSPLINE:void 0,LINEAR:xt,STEP:bt};function lf(e,t,n){for(const i in n.extensions)void 0===e[i]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[i]=n.extensions[i])}function cf(e,t){void 0!==t.extras&&(\"object\"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn(\"THREE.GLTFLoader: Ignoring primitive type .extras, \"+t.extras))}function hf(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let n=0,i=t.weights.length;n\u003Ci;n++)e.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){const n=t.extras.targetNames;if(e.morphTargetInfluences.length===n.length){e.morphTargetDictionary={};for(let t=0,i=n.length;t\u003Ci;t++)e.morphTargetDictionary[n[t]]=t}else console.warn(\"THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.\")}}function uf(e){const t=e.extensions&&e.extensions[AA];let n;return n=t?\"draco:\"+t.bufferView+\":\"+t.indices+\":\"+df(t.attributes):e.indices+\":\"+df(e.attributes)+\":\"+e.mode,n}function df(e){let t=\"\";const n=Object.keys(e).sort();for(let i=0,r=n.length;i\u003Cr;i++)t+=n[i]+\":\"+e[n[i]]+\";\";return t}function pf(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error(\"THREE.GLTFLoader: Unsupported normalized accessor component type.\")}}class Af{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new dA,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,i=!1,r=-1;\"undefined\"!=typeof navigator&&(n=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=navigator.userAgent.indexOf(\"Firefox\")>-1,r=i?navigator.userAgent.match(/Firefox\\/([0-9]+)\\./)[1]:-1),\"undefined\"==typeof createImageBitmap||n||i&&r\u003C98?this.textureLoader=new ku(this.options.manager):this.textureLoader=new cd(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Su(this.options.manager),this.fileLoader.setResponseType(\"arraybuffer\"),\"use-credentials\"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const n=this,i=this.json,r=this.extensions;this.cache.removeAll(),this._invokeAll((function(e){return e._markDefs&&e._markDefs()})),Promise.all(this._invokeAll((function(e){return e.beforeRoot&&e.beforeRoot()}))).then((function(){return Promise.all([n.getDependencies(\"scene\"),n.getDependencies(\"animation\"),n.getDependencies(\"camera\")])})).then((function(t){const s={scene:t[0][i.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:i.asset,parser:n,userData:{}};lf(r,s,i),cf(s,i),Promise.all(n._invokeAll((function(e){return e.afterRoot&&e.afterRoot(s)}))).then((function(){e(s)}))})).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,i=t.length;n\u003Ci;n++){const i=t[n].joints;for(let t=0,n=i.length;t\u003Cn;t++)e[i[t]].isBone=!0}for(let t=0,i=e.length;t\u003Ci;t++){const i=e[t];void 0!==i.mesh&&(this._addNodeRef(this.meshCache,i.mesh),void 0!==i.skin&&(n[i.mesh].isSkinnedMesh=!0)),void 0!==i.camera&&this._addNodeRef(this.cameraCache,i.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]\u003C=1)return n;const i=n.clone(),r=(e,t)=>{const n=this.associations.get(e);null!=n&&this.associations.set(t,n);for(const[n,i]of e.children.entries())r(i,t.children[n])};return r(n,i),i.name+=\"_instance_\"+e.uses[t]++,i}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n\u003Ct.length;n++){const i=e(t[n]);if(i)return i}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const n=[];for(let i=0;i\u003Ct.length;i++){const r=e(t[i]);r&&n.push(r)}return n}getDependency(e,t){const n=e+\":\"+t;let i=this.cache.get(n);if(!i){switch(e){case\"scene\":i=this.loadScene(t);break;case\"node\":i=this.loadNode(t);break;case\"mesh\":i=this._invokeOne((function(e){return e.loadMesh&&e.loadMesh(t)}));break;case\"accessor\":i=this.loadAccessor(t);break;case\"bufferView\":i=this._invokeOne((function(e){return e.loadBufferView&&e.loadBufferView(t)}));break;case\"buffer\":i=this.loadBuffer(t);break;case\"material\":i=this._invokeOne((function(e){return e.loadMaterial&&e.loadMaterial(t)}));break;case\"texture\":i=this._invokeOne((function(e){return e.loadTexture&&e.loadTexture(t)}));break;case\"skin\":i=this.loadSkin(t);break;case\"animation\":i=this._invokeOne((function(e){return e.loadAnimation&&e.loadAnimation(t)}));break;case\"camera\":i=this.loadCamera(t);break;default:if(i=this._invokeOne((function(n){return n!=this&&n.getDependency&&n.getDependency(e,t)})),!i)throw new Error(\"Unknown type: \"+e)}this.cache.add(n,i)}return i}getDependencies(e){let t=this.cache.get(e);if(!t){const n=this,i=this.json[e+(\"mesh\"===e?\"es\":\"s\")]||[];t=Promise.all(i.map((function(t,i){return n.getDependency(e,i)}))),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&\"arraybuffer\"!==t.type)throw new Error(\"THREE.GLTFLoader: \"+t.type+\" buffer type is not supported.\");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[pA].body);const i=this.options;return new Promise((function(e,r){n.load(nd.resolveURL(t.uri,i.path),e,void 0,(function(){r(new Error('THREE.GLTFLoader: Failed to load buffer \"'+t.uri+'\".'))}))}))}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency(\"buffer\",t.buffer).then((function(e){const n=t.byteLength||0,i=t.byteOffset||0;return e.slice(i,i+n)}))}loadAccessor(e){const t=this,n=this.json,i=this.json.accessors[e];if(void 0===i.bufferView&&void 0===i.sparse){const e=rf[i.type],t=ef[i.componentType],n=!0===i.normalized,r=new t(i.count*e);return Promise.resolve(new Ir(r,e,n))}const r=[];return void 0!==i.bufferView?r.push(this.getDependency(\"bufferView\",i.bufferView)):r.push(null),void 0!==i.sparse&&(r.push(this.getDependency(\"bufferView\",i.sparse.indices.bufferView)),r.push(this.getDependency(\"bufferView\",i.sparse.values.bufferView))),Promise.all(r).then((function(e){const r=e[0],s=rf[i.type],o=ef[i.componentType],a=o.BYTES_PER_ELEMENT,l=a*s,c=i.byteOffset||0,h=void 0!==i.bufferView?n.bufferViews[i.bufferView].byteStride:void 0,u=!0===i.normalized;let d,p;if(h&&h!==l){const e=Math.floor(c/h),n=\"InterleavedBuffer:\"+i.bufferView+\":\"+i.componentType+\":\"+e+\":\"+i.count;let l=t.cache.get(n);l||(d=new o(r,e*h,i.count*h/a),l=new fl(d,h/a),t.cache.add(n,l)),p=new gl(l,s,c%h/a,u)}else d=null===r?new o(i.count*s):new o(r,c,i.count*s),p=new Ir(d,s,u);if(void 0!==i.sparse){const t=rf.SCALAR,n=ef[i.sparse.indices.componentType],a=i.sparse.indices.byteOffset||0,l=i.sparse.values.byteOffset||0,c=new n(e[1],a,i.sparse.count*t),h=new o(e[2],l,i.sparse.count*s);null!==r&&(p=new Ir(p.array.slice(),p.itemSize,p.normalized));for(let e=0,t=c.length;e\u003Ct;e++){const t=c[e];if(p.setX(t,h[e*s]),s>=2&&p.setY(t,h[e*s+1]),s>=3&&p.setZ(t,h[e*s+2]),s>=4&&p.setW(t,h[e*s+3]),s>=5)throw new Error(\"THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.\")}}return p}))}loadTexture(e){const t=this.json,n=this.options,i=t.textures[e].source,r=t.images[i];let s=this.textureLoader;if(r.uri){const e=n.manager.getHandler(r.uri);null!==e&&(s=e)}return this.loadTextureImage(e,i,s)}loadTextureImage(e,t,n){const i=this,r=this.json,s=r.textures[e],o=r.images[t],a=(o.uri||o.bufferView)+\":\"+s.sampler;if(this.textureCache[a])return this.textureCache[a];const l=this.loadImageSource(t,n).then((function(t){t.flipY=!1,t.name=s.name||o.name||\"\";const n=(r.samplers||{})[s.sampler]||{};return t.magFilter=tf[n.magFilter]||ve,t.minFilter=tf[n.minFilter]||be,t.wrapS=nf[n.wrapS]||he,t.wrapT=nf[n.wrapT]||he,i.associations.set(t,{textures:e}),t})).catch((function(){return null}));return this.textureCache[a]=l,l}loadImageSource(e,t){const n=this.json,i=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then((e=>e.clone()));const r=n.images[e],s=self.URL||self.webkitURL;let o=r.uri||\"\",a=!1;if(void 0!==r.bufferView)o=this.getDependency(\"bufferView\",r.bufferView).then((function(e){a=!0;const t=new Blob([e],{type:r.mimeType});return o=s.createObjectURL(t),o}));else if(void 0===r.uri)throw new Error(\"THREE.GLTFLoader: Image \"+e+\" is missing URI and bufferView\");const l=Promise.resolve(o).then((function(e){return new Promise((function(n,r){let s=n;!0===t.isImageBitmapLoader&&(s=function(e){const t=new ei(e);t.needsUpdate=!0,n(t)}),t.load(nd.resolveURL(e,i.path),s,void 0,r)}))})).then((function(e){var t;return!0===a&&s.revokeObjectURL(o),e.userData.mimeType=r.mimeType||((t=r.uri).search(/\\.jpe?g($|\\?)/i)>0||0===t.search(/^data\\:image\\/jpeg/)?\"image/jpeg\":t.search(/\\.webp($|\\?)/i)>0||0===t.search(/^data\\:image\\/webp/)?\"image/webp\":\"image/png\"),e})).catch((function(e){throw console.error(\"THREE.GLTFLoader: Couldn't load texture\",o),e}));return this.sourceCache[e]=l,l}assignTexture(e,t,n,i){const r=this;return this.getDependency(\"texture\",n.index).then((function(s){if(!s)return null;if(void 0===n.texCoord||0==n.texCoord||\"aoMap\"===t&&1==n.texCoord||console.warn(\"THREE.GLTFLoader: Custom UV set \"+n.texCoord+\" for texture \"+t+\" not yet supported.\"),r.extensions[MA]){const e=void 0!==n.extensions?n.extensions[MA]:void 0;if(e){const t=r.associations.get(s);s=r.extensions[MA].extendTexture(s,e),r.associations.set(s,t)}}return void 0!==i&&(s.encoding=i),e[t]=s,s}))}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const i=void 0===t.attributes.tangent,r=void 0!==t.attributes.color,s=void 0===t.attributes.normal;if(e.isPoints){const e=\"PointsMaterial:\"+n.uuid;let t=this.cache.get(e);t||(t=new dc,wr.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){const e=\"LineBasicMaterial:\"+n.uuid;let t=this.cache.get(e);t||(t=new tc,wr.prototype.copy.call(t,n),t.color.copy(n.color),this.cache.add(e,t)),n=t}if(i||r||s){let e=\"ClonedMaterial:\"+n.uuid+\":\";i&&(e+=\"derivative-tangents:\"),r&&(e+=\"vertex-colors:\"),s&&(e+=\"flat-shading:\");let t=this.cache.get(e);t||(t=n.clone(),r&&(t.vertexColors=!0),s&&(t.flatShading=!0),i&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}n.aoMap&&void 0===t.attributes.uv2&&void 0!==t.attributes.uv&&t.setAttribute(\"uv2\",t.attributes.uv),e.material=n}getMaterialType(){return Yh}loadMaterial(e){const t=this,n=this.json,i=this.extensions,r=n.materials[e];let s;const o={},a=[];if((r.extensions||{})[xA]){const e=i[xA];s=e.getMaterialType(),a.push(e.extendParams(o,r,t))}else{const n=r.pbrMetallicRoughness||{};if(o.color=new Yn(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){const e=n.baseColorFactor;o.color.fromArray(e),o.opacity=e[3]}void 0!==n.baseColorTexture&&a.push(t.assignTexture(o,\"map\",n.baseColorTexture,Rt)),o.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,o.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(a.push(t.assignTexture(o,\"metalnessMap\",n.metallicRoughnessTexture)),a.push(t.assignTexture(o,\"roughnessMap\",n.metallicRoughnessTexture))),s=this._invokeOne((function(t){return t.getMaterialType&&t.getMaterialType(e)})),a.push(Promise.all(this._invokeAll((function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)}))))}!0===r.doubleSided&&(o.side=v);const l=r.alphaMode||\"OPAQUE\";if(\"BLEND\"===l?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,\"MASK\"===l&&(o.alphaTest=void 0!==r.alphaCutoff?r.alphaCutoff:.5)),void 0!==r.normalTexture&&s!==Cr&&(a.push(t.assignTexture(o,\"normalMap\",r.normalTexture)),o.normalScale=new Ln(1,1),void 0!==r.normalTexture.scale)){const e=r.normalTexture.scale;o.normalScale.set(e,e)}return void 0!==r.occlusionTexture&&s!==Cr&&(a.push(t.assignTexture(o,\"aoMap\",r.occlusionTexture)),void 0!==r.occlusionTexture.strength&&(o.aoMapIntensity=r.occlusionTexture.strength)),void 0!==r.emissiveFactor&&s!==Cr&&(o.emissive=(new Yn).fromArray(r.emissiveFactor)),void 0!==r.emissiveTexture&&s!==Cr&&a.push(t.assignTexture(o,\"emissiveMap\",r.emissiveTexture,Rt)),Promise.all(a).then((function(){const n=new s(o);return r.name&&(n.name=r.name),cf(n,r),t.associations.set(n,{materials:e}),r.extensions&&lf(i,n,r),n}))}createUniqueName(e){const t=Nd.sanitizeNodeName(e||\"\");let n=t;for(let e=1;this.nodeNamesUsed[n];++e)n=t+\"_\"+e;return this.nodeNamesUsed[n]=!0,n}loadGeometries(e){const t=this,n=this.extensions,i=this.primitiveCache;function r(e){return n[AA].decodePrimitive(e,t).then((function(n){return mf(n,e,t)}))}const s=[];for(let n=0,o=e.length;n\u003Co;n++){const o=e[n],a=uf(o),l=i[a];if(l)s.push(l.promise);else{let e;e=o.extensions&&o.extensions[AA]?r(o):mf(new Wr,o,t),i[a]={primitive:o,promise:e},s.push(e)}}return Promise.all(s)}loadMesh(e){const t=this,n=this.json,i=this.extensions,r=n.meshes[e],s=r.primitives,o=[];for(let e=0,t=s.length;e\u003Ct;e++){const t=void 0===s[e].material?(void 0===(a=this.cache).DefaultMaterial&&(a.DefaultMaterial=new Yh({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:m})),a.DefaultMaterial):this.getDependency(\"material\",s[e].material);o.push(t)}var a;return o.push(t.loadGeometries(s)),Promise.all(o).then((function(n){const o=n.slice(0,n.length-1),a=n[n.length-1],l=[];for(let n=0,c=a.length;n\u003Cc;n++){const c=a[n],h=s[n];let u;const d=o[n];if(h.mode===$A.TRIANGLES||h.mode===$A.TRIANGLE_STRIP||h.mode===$A.TRIANGLE_FAN||void 0===h.mode)u=!0===r.isSkinnedMesh?new zl(c,d):new cs(c,d),!0!==u.isSkinnedMesh||u.geometry.attributes.skinWeight.normalized||u.normalizeSkinWeights(),h.mode===$A.TRIANGLE_STRIP?u.geometry=gf(u.geometry,Tt):h.mode===$A.TRIANGLE_FAN&&(u.geometry=gf(u.geometry,Lt));else if(h.mode===$A.LINES)u=new hc(c,d);else if(h.mode===$A.LINE_STRIP)u=new ac(c,d);else if(h.mode===$A.LINE_LOOP)u=new uc(c,d);else{if(h.mode!==$A.POINTS)throw new Error(\"THREE.GLTFLoader: Primitive mode unsupported: \"+h.mode);u=new gc(c,d)}Object.keys(u.geometry.morphAttributes).length>0&&hf(u,r),u.name=t.createUniqueName(r.name||\"mesh_\"+e),cf(u,r),h.extensions&&lf(i,u,h),t.assignFinalMaterial(u),l.push(u)}for(let n=0,i=l.length;n\u003Ci;n++)t.associations.set(l[n],{meshes:e,primitives:n});if(1===l.length)return l[0];const c=new $a;t.associations.set(c,{meshes:e});for(let e=0,t=l.length;e\u003Ct;e++)c.add(l[e]);return c}))}loadCamera(e){let t;const n=this.json.cameras[e],i=n[n.type];if(i)return\"perspective\"===n.type?t=new vs(Tn.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):\"orthographic\"===n.type&&(t=new Hs(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),cf(t,n),Promise.resolve(t);console.warn(\"THREE.GLTFLoader: Missing camera parameters.\")}loadSkin(e){const t=this.json.skins[e],n=[];for(let e=0,i=t.joints.length;e\u003Ci;e++)n.push(this.getDependency(\"node\",t.joints[e]));return void 0!==t.inverseBindMatrices?n.push(this.getDependency(\"accessor\",t.inverseBindMatrices)):n.push(null),Promise.all(n).then((function(e){const n=e.pop(),i=e,r=[],s=[];for(let e=0,o=i.length;e\u003Co;e++){const o=i[e];if(o){r.push(o);const t=new Ui;null!==n&&t.fromArray(n.array,16*e),s.push(t)}else console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.',t.joints[e])}return new ql(r,s)}))}loadAnimation(e){const t=this.json.animations[e],n=[],i=[],r=[],s=[],o=[];for(let e=0,a=t.channels.length;e\u003Ca;e++){const a=t.channels[e],l=t.samplers[a.sampler],c=a.target,h=c.node,u=void 0!==t.parameters?t.parameters[l.input]:l.input,d=void 0!==t.parameters?t.parameters[l.output]:l.output;n.push(this.getDependency(\"node\",h)),i.push(this.getDependency(\"accessor\",u)),r.push(this.getDependency(\"accessor\",d)),s.push(l),o.push(c)}return Promise.all([Promise.all(n),Promise.all(i),Promise.all(r),Promise.all(s),Promise.all(o)]).then((function(n){const i=n[0],r=n[1],s=n[2],o=n[3],a=n[4],l=[];for(let e=0,t=i.length;e\u003Ct;e++){const t=i[e],n=r[e],c=s[e],h=o[e],u=a[e];if(void 0===t)continue;let d;switch(t.updateMatrix(),of[u.path]){case of.weights:d=mu;break;case of.rotation:d=vu;break;default:d=Eu}const p=t.name?t.name:t.uuid,A=void 0!==h.interpolation?af[h.interpolation]:xt,f=[];of[u.path]===of.weights?t.traverse((function(e){e.morphTargetInfluences&&f.push(e.name?e.name:e.uuid)})):f.push(p);let m=c.array;if(c.normalized){const e=pf(m.constructor),t=new Float32Array(m.length);for(let n=0,i=m.length;n\u003Ci;n++)t[n]=m[n]*e;m=t}for(let e=0,t=f.length;e\u003Ct;e++){const t=new d(f[e]+\".\"+of[u.path],n.array,m,A);\"CUBICSPLINE\"===h.interpolation&&(t.createInterpolant=function(e){return new(this instanceof vu?ZA:JA)(this.times,this.values,this.getValueSize()/3,e)},t.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),l.push(t)}}const c=t.name?t.name:\"animation_\"+e;return new bu(c,void 0,l)}))}createNodeMesh(e){const t=this.json,n=this,i=t.nodes[e];return void 0===i.mesh?null:n.getDependency(\"mesh\",i.mesh).then((function(e){const t=n._getNodeRef(n.meshCache,i.mesh,e);return void 0!==i.weights&&t.traverse((function(e){if(e.isMesh)for(let t=0,n=i.weights.length;t\u003Cn;t++)e.morphTargetInfluences[t]=i.weights[t]})),t}))}loadNode(e){const t=this.json,n=this.extensions,i=this,r=t.nodes[e],s=r.name?i.createUniqueName(r.name):\"\";return function(){const t=[],n=i._invokeOne((function(t){return t.createNodeMesh&&t.createNodeMesh(e)}));return n&&t.push(n),void 0!==r.camera&&t.push(i.getDependency(\"camera\",r.camera).then((function(e){return i._getNodeRef(i.cameraCache,r.camera,e)}))),i._invokeAll((function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)})).forEach((function(e){t.push(e)})),Promise.all(t)}().then((function(t){let o;if(o=!0===r.isBone?new Hl:t.length>1?new $a:1===t.length?t[0]:new hr,o!==t[0])for(let e=0,n=t.length;e\u003Cn;e++)o.add(t[e]);if(r.name&&(o.userData.name=r.name,o.name=s),cf(o,r),r.extensions&&lf(n,o,r),void 0!==r.matrix){const e=new Ui;e.fromArray(r.matrix),o.applyMatrix4(e)}else void 0!==r.translation&&o.position.fromArray(r.translation),void 0!==r.rotation&&o.quaternion.fromArray(r.rotation),void 0!==r.scale&&o.scale.fromArray(r.scale);return i.associations.has(o)||i.associations.set(o,{}),i.associations.get(o).nodes=e,o}))}loadScene(e){const t=this.json,n=this.extensions,i=this.json.scenes[e],r=this,s=new $a;i.name&&(s.name=r.createUniqueName(i.name)),cf(s,i),i.extensions&&lf(n,s,i);const o=i.nodes||[],a=[];for(let e=0,n=o.length;e\u003Cn;e++)a.push(ff(o[e],s,t,r));return Promise.all(a).then((function(){return r.associations=(e=>{const t=new Map;for(const[e,n]of r.associations)(e instanceof wr||e instanceof ei)&&t.set(e,n);return e.traverse((e=>{const n=r.associations.get(e);null!=n&&t.set(e,n)})),t})(s),s}))}}function ff(e,t,n,i){const r=n.nodes[e];return i.getDependency(\"node\",e).then((function(e){return void 0===r.skin?e:i.getDependency(\"skin\",r.skin).then((function(t){return e.traverse((function(e){e.isSkinnedMesh&&e.bind(t,e.matrixWorld)})),e}))})).then((function(e){t.add(e);const s=[];if(r.children){const t=r.children;for(let r=0,o=t.length;r\u003Co;r++){const o=t[r];s.push(ff(o,e,n,i))}}return Promise.all(s)}))}function mf(e,t,n){const i=t.attributes,r=[];function s(t,i){return n.getDependency(\"accessor\",t).then((function(t){e.setAttribute(i,t)}))}for(const t in i){const n=sf[t]||t.toLowerCase();n in e.attributes||r.push(s(i[t],n))}if(void 0!==t.indices&&!e.index){const i=n.getDependency(\"accessor\",t.indices).then((function(t){e.setIndex(t)}));r.push(i)}return cf(e,t),function(e,t,n){const i=t.attributes,r=new di;if(void 0===i.POSITION)return;{const e=n.json.accessors[i.POSITION],t=e.min,s=e.max;if(void 0===t||void 0===s)return void console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");if(r.set(new ci(t[0],t[1],t[2]),new ci(s[0],s[1],s[2])),e.normalized){const t=pf(ef[e.componentType]);r.min.multiplyScalar(t),r.max.multiplyScalar(t)}}const s=t.targets;if(void 0!==s){const e=new ci,t=new ci;for(let i=0,r=s.length;i\u003Cr;i++){const r=s[i];if(void 0!==r.POSITION){const i=n.json.accessors[r.POSITION],s=i.min,o=i.max;if(void 0!==s&&void 0!==o){if(t.setX(Math.max(Math.abs(s[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(s[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(s[2]),Math.abs(o[2]))),i.normalized){const e=pf(ef[i.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\")}}r.expandByVector(e)}e.boundingBox=r;const o=new Ti;r.getCenter(o.center),o.radius=r.min.distanceTo(r.max)/2,e.boundingSphere=o}(e,t,n),Promise.all(r).then((function(){return void 0!==t.targets?function(e,t,n){let i=!1,r=!1,s=!1;for(let e=0,n=t.length;e\u003Cn;e++){const n=t[e];if(void 0!==n.POSITION&&(i=!0),void 0!==n.NORMAL&&(r=!0),void 0!==n.COLOR_0&&(s=!0),i&&r&&s)break}if(!i&&!r&&!s)return Promise.resolve(e);const o=[],a=[],l=[];for(let c=0,h=t.length;c\u003Ch;c++){const h=t[c];if(i){const t=void 0!==h.POSITION?n.getDependency(\"accessor\",h.POSITION):e.attributes.position;o.push(t)}if(r){const t=void 0!==h.NORMAL?n.getDependency(\"accessor\",h.NORMAL):e.attributes.normal;a.push(t)}if(s){const t=void 0!==h.COLOR_0?n.getDependency(\"accessor\",h.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(l)]).then((function(t){const n=t[0],o=t[1],a=t[2];return i&&(e.morphAttributes.position=n),r&&(e.morphAttributes.normal=o),s&&(e.morphAttributes.color=a),e.morphTargetsRelative=!0,e}))}(e,t.targets,n):e}))}function gf(e,t){let n=e.getIndex();if(null===n){const t=[],i=e.getAttribute(\"position\");if(void 0===i)return console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.\"),e;for(let e=0;e\u003Ci.count;e++)t.push(e);e.setIndex(t),n=e.getIndex()}const i=n.count-2,r=[];if(t===Lt)for(let e=1;e\u003C=i;e++)r.push(n.getX(0)),r.push(n.getX(e)),r.push(n.getX(e+1));else for(let e=0;e\u003Ci;e++)e%2==0?(r.push(n.getX(e)),r.push(n.getX(e+1)),r.push(n.getX(e+2))):(r.push(n.getX(e+2)),r.push(n.getX(e+1)),r.push(n.getX(e)));r.length/3!==i&&console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.\");const s=e.clone();return s.setIndex(r),s}class vf{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){const t=this.workerCreator();t.addEventListener(\"message\",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e\u003Cthis.pool;e++)if(!(this.workerStatus&1\u003C\u003Ce))return e;return-1}_onMessage(e,t){const n=this.workersResolve[e];if(n&&n(t),this.queue.length){const{resolve:t,msg:n,transfer:i}=this.queue.shift();this.workersResolve[e]=t,this.workers[e].postMessage(n,i)}else this.workerStatus^=1\u003C\u003Ce}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise((n=>{const i=this._getIdleWorker();-1!==i?(this._initWorker(i),this.workerStatus|=1\u003C\u003Ci,this.workersResolve[i]=n,this.workers[i].postMessage(e,t)):this.queue.push({resolve:n,msg:e,transfer:t})}))}dispose(){this.workers.forEach((e=>e.terminate())),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}var yf=n(5851).lW;class Ef{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class bf{constructor(e,t,n,i){this._dataView=new DataView(e.buffer,e.byteOffset+t,n),this._littleEndian=i,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_skip(e){return this._offset+=e,this}_scan(e,t=0){const n=this._offset;let i=0;for(;this._dataView.getUint8(this._offset)!==t&&i\u003Ce;)i++,this._offset++;return i\u003Ce&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+n,i)}}new Uint8Array([0]);const xf=[171,75,84,88,32,50,48,187,13,10,26,10];function wf(e){return\"undefined\"!=typeof TextDecoder?(new TextDecoder).decode(e):yf.from(e).toString(\"utf8\")}var Cf=n(5851).lW;let Mf,_f,If;const Bf={env:{emscripten_notify_memory_growth:function(e){If=new Uint8Array(_f.exports.memory.buffer)}}};class Sf{init(){return Mf||(Mf=\"undefined\"!=typeof fetch?fetch(\"data:application/wasm;base64,\"+Tf).then((e=>e.arrayBuffer())).then((e=>WebAssembly.instantiate(e,Bf))).then(this._init):WebAssembly.instantiate(Cf.from(Tf,\"base64\"),Bf).then(this._init),Mf)}_init(e){_f=e.instance,Bf.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!_f)throw new Error(\"ZSTDDecoder: Await .init() before decoding.\");const n=e.byteLength,i=_f.exports.malloc(n);If.set(e,i),t=t||Number(_f.exports.ZSTD_findDecompressedSize(i,n));const r=_f.exports.malloc(t),s=_f.exports.ZSTD_decompress(r,t,i,n),o=If.slice(r,r+s);return _f.exports.free(i),_f.exports.free(r),o}}const Tf=\"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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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\",Lf=new WeakMap;let Df,Rf=0;class Pf extends _u{constructor(e){super(e),this.transcoderPath=\"\",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new vf,this.workerSourceURL=\"\",this.workerConfig=null,\"undefined\"!=typeof MSC_TRANSCODER&&console.warn('THREE.KTX2Loader: Please update to latest \"basis_transcoder\". \"msc_basis_transcoder\" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}detectSupport(e){return this.workerConfig={astcSupported:e.extensions.has(\"WEBGL_compressed_texture_astc\"),etc1Supported:e.extensions.has(\"WEBGL_compressed_texture_etc1\"),etc2Supported:e.extensions.has(\"WEBGL_compressed_texture_etc\"),dxtSupported:e.extensions.has(\"WEBGL_compressed_texture_s3tc\"),bptcSupported:e.extensions.has(\"EXT_texture_compression_bptc\"),pvrtcSupported:e.extensions.has(\"WEBGL_compressed_texture_pvrtc\")||e.extensions.has(\"WEBKIT_WEBGL_compressed_texture_pvrtc\")},e.capabilities.isWebGL2&&(this.workerConfig.etc1Supported=!1),this}init(){if(!this.transcoderPending){const e=new Su(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const t=e.loadAsync(\"basis_transcoder.js\"),n=new Su(this.manager);n.setPath(this.transcoderPath),n.setResponseType(\"arraybuffer\"),n.setWithCredentials(this.withCredentials);const i=n.loadAsync(\"basis_transcoder.wasm\");this.transcoderPending=Promise.all([t,i]).then((([e,t])=>{const n=Pf.BasisWorker.toString(),i=[\"/* constants */\",\"let _EngineFormat = \"+JSON.stringify(Pf.EngineFormat),\"let _TranscoderFormat = \"+JSON.stringify(Pf.TranscoderFormat),\"let _BasisFormat = \"+JSON.stringify(Pf.BasisFormat),\"/* basis_transcoder.js */\",e,\"/* worker */\",n.substring(n.indexOf(\"{\")+1,n.lastIndexOf(\"}\"))].join(\"\\n\");this.workerSourceURL=URL.createObjectURL(new Blob([i])),this.transcoderBinary=t,this.workerPool.setWorkerCreator((()=>{const e=new Worker(this.workerSourceURL),t=this.transcoderBinary.slice(0);return e.postMessage({type:\"init\",config:this.workerConfig,transcoderBinary:t},[t]),e}))})),Rf>0&&console.warn(\"THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.\"),Rf++}return this.transcoderPending}load(e,t,n,i){if(null===this.workerConfig)throw new Error(\"THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.\");const r=new Su(this.manager);r.setResponseType(\"arraybuffer\"),r.setWithCredentials(this.withCredentials),r.load(e,(e=>{if(Lf.has(e))return Lf.get(e).promise.then(t).catch(i);this._createTexture(e).then((e=>t?t(e):null)).catch(i)}),n,i)}_createTextureFrom(e,t){const{mipmaps:n,width:i,height:r,format:s,type:o,error:a,dfdTransferFn:l,dfdFlags:c}=e;if(\"error\"===o)return Promise.reject(a);const h=t.layerCount>1?new xc(n,i,r,t.layerCount,s,we):new bc(n,i,r,s,we);return h.minFilter=1===n.length?ve:be,h.magFilter=ve,h.generateMipmaps=!1,h.needsUpdate=!0,h.encoding=2===l?Rt:Dt,h.premultiplyAlpha=!!(1&c),h}async _createTexture(e,t={}){const n=function(e){const t=new Uint8Array(e.buffer,e.byteOffset,xf.length);if(t[0]!==xf[0]||t[1]!==xf[1]||t[2]!==xf[2]||t[3]!==xf[3]||t[4]!==xf[4]||t[5]!==xf[5]||t[6]!==xf[6]||t[7]!==xf[7]||t[8]!==xf[8]||t[9]!==xf[9]||t[10]!==xf[10]||t[11]!==xf[11])throw new Error(\"Missing KTX 2.0 identifier.\");const n=new Ef,i=17*Uint32Array.BYTES_PER_ELEMENT,r=new bf(e,xf.length,i,!0);n.vkFormat=r._nextUint32(),n.typeSize=r._nextUint32(),n.pixelWidth=r._nextUint32(),n.pixelHeight=r._nextUint32(),n.pixelDepth=r._nextUint32(),n.layerCount=r._nextUint32(),n.faceCount=r._nextUint32();const s=r._nextUint32();n.supercompressionScheme=r._nextUint32();const o=r._nextUint32(),a=r._nextUint32(),l=r._nextUint32(),c=r._nextUint32(),h=r._nextUint64(),u=r._nextUint64(),d=new bf(e,xf.length+i,3*s*8,!0);for(let t=0;t\u003Cs;t++)n.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+d._nextUint64(),d._nextUint64()),uncompressedByteLength:d._nextUint64()});const p=new bf(e,o,a,!0),A={vendorId:p._skip(4)._nextUint16(),descriptorType:p._nextUint16(),versionNumber:p._nextUint16(),descriptorBlockSize:p._nextUint16(),colorModel:p._nextUint8(),colorPrimaries:p._nextUint8(),transferFunction:p._nextUint8(),flags:p._nextUint8(),texelBlockDimension:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],bytesPlane:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],samples:[]},f=(A.descriptorBlockSize/4-6)/4;for(let e=0;e\u003Cf;e++){const t={bitOffset:p._nextUint16(),bitLength:p._nextUint8(),channelType:p._nextUint8(),samplePosition:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&t.channelType?(t.sampleLower=p._nextInt32(),t.sampleUpper=p._nextInt32()):(t.sampleLower=p._nextUint32(),t.sampleUpper=p._nextUint32()),A.samples[e]=t}n.dataFormatDescriptor.length=0,n.dataFormatDescriptor.push(A);const m=new bf(e,l,c,!0);for(;m._offset\u003Cc;){const e=m._nextUint32(),t=m._scan(e),i=wf(t),r=m._scan(e-t.byteLength);n.keyValue[i]=i.match(/^ktx/i)?wf(r):r,m._offset%4&&m._skip(4-m._offset%4)}if(u\u003C=0)return n;const g=new bf(e,h,u,!0),v=g._nextUint16(),y=g._nextUint16(),E=g._nextUint32(),b=g._nextUint32(),x=g._nextUint32(),w=g._nextUint32(),C=[];for(let e=0;e\u003Cs;e++)C.push({imageFlags:g._nextUint32(),rgbSliceByteOffset:g._nextUint32(),rgbSliceByteLength:g._nextUint32(),alphaSliceByteOffset:g._nextUint32(),alphaSliceByteLength:g._nextUint32()});const M=h+g._offset,_=M+E,I=_+b,B=I+x,S=new Uint8Array(e.buffer,e.byteOffset+M,E),T=new Uint8Array(e.buffer,e.byteOffset+_,b),L=new Uint8Array(e.buffer,e.byteOffset+I,x),D=new Uint8Array(e.buffer,e.byteOffset+B,w);return n.globalData={endpointCount:v,selectorCount:y,imageDescs:C,endpointsData:S,selectorsData:T,tablesData:L,extendedData:D},n}(new Uint8Array(e));if(0!==n.vkFormat)return async function(e){const{vkFormat:t,pixelWidth:n,pixelHeight:i,pixelDepth:r}=e;if(void 0===kf[t])throw new Error(\"THREE.KTX2Loader: Unsupported vkFormat.\");const s=e.levels[0];let o,a;if(0===e.supercompressionScheme)o=s.levelData;else{if(2!==e.supercompressionScheme)throw new Error(\"THREE.KTX2Loader: Unsupported supercompressionScheme.\");Df||(Df=new Promise((async e=>{const t=new Sf;await t.init(),e(t)}))),o=(await Df).decode(s.levelData,s.uncompressedByteLength)}a=Ff[t]===Se?new Float32Array(o.buffer,o.byteOffset,o.byteLength/Float32Array.BYTES_PER_ELEMENT):Ff[t]===Te?new Uint16Array(o.buffer,o.byteOffset,o.byteLength/Uint16Array.BYTES_PER_ELEMENT):o;const l=0===r?new Vl(a,n,i):new si(a,n,i,r);return l.type=Ff[t],l.format=kf[t],l.encoding=Of[t]||Dt,l.needsUpdate=!0,Promise.resolve(l)}(n);const i=t,r=this.init().then((()=>this.workerPool.postMessage({type:\"transcode\",buffer:e,taskConfig:i},[e]))).then((e=>this._createTextureFrom(e.data,n)));return Lf.set(e,{promise:r}),r}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Rf--,this}}Pf.BasisFormat={ETC1S:0,UASTC_4x4:1},Pf.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16},Pf.EngineFormat={RGBAFormat:Fe,RGBA_ASTC_4x4_Format:it,RGBA_BPTC_Format:gt,RGBA_ETC2_EAC_Format:nt,RGBA_PVRTC_4BPPV1_Format:Ze,RGBA_S3TC_DXT5_Format:Xe,RGB_ETC1_Format:et,RGB_ETC2_Format:tt,RGB_PVRTC_4BPPV1_Format:Je,RGB_S3TC_DXT1_Format:je},Pf.BasisWorker=function(){let e,t,n;const i=_EngineFormat,r=_TranscoderFormat,s=_BasisFormat;self.addEventListener(\"message\",(function(o){const u=o.data;switch(u.type){case\"init\":e=u.config,d=u.transcoderBinary,t=new Promise((e=>{n={wasmBinary:d,onRuntimeInitialized:e},BASIS(n)})).then((()=>{n.initializeBasis(),void 0===n.KTX2File&&console.warn(\"THREE.KTX2Loader: Please update Basis Universal transcoder.\")}));break;case\"transcode\":t.then((()=>{try{const{width:t,height:o,hasAlpha:d,mipmaps:p,format:A,dfdTransferFn:f,dfdFlags:m}=function(t){const o=new n.KTX2File(new Uint8Array(t));function u(){o.close(),o.delete()}if(!o.isValid())throw u(),new Error(\"THREE.KTX2Loader:\\tInvalid or unsupported .ktx2 file\");const d=o.isUASTC()?s.UASTC_4x4:s.ETC1S,p=o.getWidth(),A=o.getHeight(),f=o.getLayers()||1,m=o.getLevels(),g=o.getHasAlpha(),v=o.getDFDTransferFunc(),y=o.getDFDFlags(),{transcoderFormat:E,engineFormat:b}=function(t,n,o,h){let u,d;const p=t===s.ETC1S?a:l;for(let i=0;i\u003Cp.length;i++){const r=p[i];if(e[r.if]&&r.basisFormat.includes(t)&&!(h&&r.transcoderFormat.length\u003C2)&&(!r.needsPowerOfTwo||c(n)&&c(o)))return u=r.transcoderFormat[h?1:0],d=r.engineFormat[h?1:0],{transcoderFormat:u,engineFormat:d}}return console.warn(\"THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32.\"),u=r.RGBA32,d=i.RGBAFormat,{transcoderFormat:u,engineFormat:d}}(d,p,A,g);if(!p||!A||!m)throw u(),new Error(\"THREE.KTX2Loader:\\tInvalid texture\");if(!o.startTranscoding())throw u(),new Error(\"THREE.KTX2Loader: .startTranscoding failed\");const x=[];for(let e=0;e\u003Cm;e++){const t=[];let n,i;for(let r=0;r\u003Cf;r++){const s=o.getImageLevelInfo(e,r,0);n=s.origWidth,i=s.origHeight;const a=new Uint8Array(o.getImageTranscodedSizeInBytes(e,r,0,E));if(!o.transcodeImage(a,e,r,0,E,0,-1,-1))throw u(),new Error(\"THREE.KTX2Loader: .transcodeImage failed.\");t.push(a)}x.push({data:h(t),width:n,height:i})}return u(),{width:p,height:A,hasAlpha:g,mipmaps:x,format:b,dfdTransferFn:v,dfdFlags:y}}(u.buffer),g=[];for(let e=0;e\u003Cp.length;++e)g.push(p[e].data.buffer);self.postMessage({type:\"transcode\",id:u.id,width:t,height:o,hasAlpha:d,mipmaps:p,format:A,dfdTransferFn:f,dfdFlags:m},g)}catch(e){console.error(e),self.postMessage({type:\"error\",id:u.id,error:e.message})}}))}var d}));const o=[{if:\"astcSupported\",basisFormat:[s.UASTC_4x4],transcoderFormat:[r.ASTC_4x4,r.ASTC_4x4],engineFormat:[i.RGBA_ASTC_4x4_Format,i.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:\"bptcSupported\",basisFormat:[s.ETC1S,s.UASTC_4x4],transcoderFormat:[r.BC7_M5,r.BC7_M5],engineFormat:[i.RGBA_BPTC_Format,i.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:\"dxtSupported\",basisFormat:[s.ETC1S,s.UASTC_4x4],transcoderFormat:[r.BC1,r.BC3],engineFormat:[i.RGB_S3TC_DXT1_Format,i.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:\"etc2Supported\",basisFormat:[s.ETC1S,s.UASTC_4x4],transcoderFormat:[r.ETC1,r.ETC2],engineFormat:[i.RGB_ETC2_Format,i.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:\"etc1Supported\",basisFormat:[s.ETC1S,s.UASTC_4x4],transcoderFormat:[r.ETC1],engineFormat:[i.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:\"pvrtcSupported\",basisFormat:[s.ETC1S,s.UASTC_4x4],transcoderFormat:[r.PVRTC1_4_RGB,r.PVRTC1_4_RGBA],engineFormat:[i.RGB_PVRTC_4BPPV1_Format,i.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],a=o.sort((function(e,t){return e.priorityETC1S-t.priorityETC1S})),l=o.sort((function(e,t){return e.priorityUASTC-t.priorityUASTC}));function c(e){return e\u003C=2||0==(e&e-1)&&0!==e}function h(e){let t=0;for(const n of e)t+=n.byteLength;const n=new Uint8Array(t);let i=0;for(const t of e)n.set(t,i),i+=t.byteLength;return n}};const kf={109:Fe,97:Fe,37:Fe,43:Fe,103:He,83:He,16:He,22:He,100:Ge,76:Ge,15:Ge,9:Ge},Ff={109:Se,97:Te,37:we,43:we,103:Se,83:Te,16:we,22:we,100:Se,76:Te,15:we,9:we},Of={43:Rt,22:Rt,15:Rt},Qf=/^[og]\\s*(.+)?/,Uf=/^mtllib /,Nf=/^usemtl /,Gf=/^usemap /,zf=/\\s+/,Hf=new ci,Vf=new ci,Wf=new ci,jf=new ci,qf=new ci,Yf=new Yn;function Xf(){const e={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&!1===this.object.fromDeclaration)return this.object.name=e,void(this.object.fromDeclaration=!1!==t);const n=this.object&&\"function\"==typeof this.object.currentMaterial?this.object.currentMaterial():void 0;if(this.object&&\"function\"==typeof this.object._finalize&&this.object._finalize(!0),this.object={name:e||\"\",fromDeclaration:!1!==t,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(e,t){const n=this._finalize(!1);n&&(n.inherited||n.groupCount\u003C=0)&&this.materials.splice(n.index,1);const i={index:this.materials.length,name:e||\"\",mtllib:Array.isArray(t)&&t.length>0?t[t.length-1]:\"\",smooth:void 0!==n?n.smooth:this.smooth,groupStart:void 0!==n?n.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(e){const t={index:\"number\"==typeof e?e:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return t.clone=this.clone.bind(t),t}};return this.materials.push(i),i},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(e){const t=this.currentMaterial();if(t&&-1===t.groupEnd&&(t.groupEnd=this.geometry.vertices.length/3,t.groupCount=t.groupEnd-t.groupStart,t.inherited=!1),e&&this.materials.length>1)for(let e=this.materials.length-1;e>=0;e--)this.materials[e].groupCount\u003C=0&&this.materials.splice(e,1);return e&&0===this.materials.length&&this.materials.push({name:\"\",smooth:this.smooth}),t}},n&&n.name&&\"function\"==typeof n.clone){const e=n.clone(0);e.inherited=!0,this.object.materials.push(e)}this.objects.push(this.object)},finalize:function(){this.object&&\"function\"==typeof this.object._finalize&&this.object._finalize(!0)},parseVertexIndex:function(e,t){const n=parseInt(e,10);return 3*(n>=0?n-1:n+t/3)},parseNormalIndex:function(e,t){const n=parseInt(e,10);return 3*(n>=0?n-1:n+t/3)},parseUVIndex:function(e,t){const n=parseInt(e,10);return 2*(n>=0?n-1:n+t/2)},addVertex:function(e,t,n){const i=this.vertices,r=this.object.geometry.vertices;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addVertexPoint:function(e){const t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){const t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){const i=this.normals,r=this.object.geometry.normals;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addFaceNormal:function(e,t,n){const i=this.vertices,r=this.object.geometry.normals;Hf.fromArray(i,e),Vf.fromArray(i,t),Wf.fromArray(i,n),qf.subVectors(Wf,Vf),jf.subVectors(Hf,Vf),qf.cross(jf),qf.normalize(),r.push(qf.x,qf.y,qf.z),r.push(qf.x,qf.y,qf.z),r.push(qf.x,qf.y,qf.z)},addColor:function(e,t,n){const i=this.colors,r=this.object.geometry.colors;void 0!==i[e]&&r.push(i[e+0],i[e+1],i[e+2]),void 0!==i[t]&&r.push(i[t+0],i[t+1],i[t+2]),void 0!==i[n]&&r.push(i[n+0],i[n+1],i[n+2])},addUV:function(e,t,n){const i=this.uvs,r=this.object.geometry.uvs;r.push(i[e+0],i[e+1]),r.push(i[t+0],i[t+1]),r.push(i[n+0],i[n+1])},addDefaultUV:function(){const e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){const t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,i,r,s,o,a,l){const c=this.vertices.length;let h=this.parseVertexIndex(e,c),u=this.parseVertexIndex(t,c),d=this.parseVertexIndex(n,c);if(this.addVertex(h,u,d),this.addColor(h,u,d),void 0!==o&&\"\"!==o){const e=this.normals.length;h=this.parseNormalIndex(o,e),u=this.parseNormalIndex(a,e),d=this.parseNormalIndex(l,e),this.addNormal(h,u,d)}else this.addFaceNormal(h,u,d);if(void 0!==i&&\"\"!==i){const e=this.uvs.length;h=this.parseUVIndex(i,e),u=this.parseUVIndex(r,e),d=this.parseUVIndex(s,e),this.addUV(h,u,d),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type=\"Points\";const t=this.vertices.length;for(let n=0,i=e.length;n\u003Ci;n++){const i=this.parseVertexIndex(e[n],t);this.addVertexPoint(i),this.addColor(i)}},addLineGeometry:function(e,t){this.object.geometry.type=\"Line\";const n=this.vertices.length,i=this.uvs.length;for(let t=0,i=e.length;t\u003Ci;t++)this.addVertexLine(this.parseVertexIndex(e[t],n));for(let e=0,n=t.length;e\u003Cn;e++)this.addUVLine(this.parseUVIndex(t[e],i))}};return e.startObject(\"\",!1),e}class Jf{constructor(e=\"\",t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin=\"anonymous\",this.side=void 0!==this.options.side?this.options.side:m,this.wrap=void 0!==this.options.wrap?this.options.wrap:he}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;const t={};for(const n in e){const i=e[n],r={};t[n]=r;for(const e in i){let t=!0,n=i[e];const s=e.toLowerCase();switch(s){case\"kd\":case\"ka\":case\"ks\":this.options&&this.options.normalizeRGB&&(n=[n[0]/255,n[1]/255,n[2]/255]),this.options&&this.options.ignoreZeroRGBs&&0===n[0]&&0===n[1]&&0===n[2]&&(t=!1)}t&&(r[s]=n)}}return t}preload(){for(const e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(const t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return void 0===this.materials[e]&&this.createMaterial_(e),this.materials[e]}createMaterial_(e){const t=this,n=this.materialsInfo[e],i={name:e,side:this.side};function r(e,n){if(i[e])return;const r=t.getTextureParams(n,i),s=t.loadTexture((o=t.baseUrl,\"string\"!=typeof(a=r.url)||\"\"===a?\"\":/^https?:\\/\\//i.test(a)?a:o+a));var o,a;s.repeat.copy(r.scale),s.offset.copy(r.offset),s.wrapS=t.wrap,s.wrapT=t.wrap,\"map\"!==e&&\"emissiveMap\"!==e||(s.encoding=Rt),i[e]=s}for(const e in n){const t=n[e];let s;if(\"\"!==t)switch(e.toLowerCase()){case\"kd\":i.color=(new Yn).fromArray(t).convertSRGBToLinear();break;case\"ks\":i.specular=(new Yn).fromArray(t).convertSRGBToLinear();break;case\"ke\":i.emissive=(new Yn).fromArray(t).convertSRGBToLinear();break;case\"map_kd\":r(\"map\",t);break;case\"map_ks\":r(\"specularMap\",t);break;case\"map_ke\":r(\"emissiveMap\",t);break;case\"norm\":r(\"normalMap\",t);break;case\"map_bump\":case\"bump\":r(\"bumpMap\",t);break;case\"map_d\":r(\"alphaMap\",t),i.transparent=!0;break;case\"ns\":i.shininess=parseFloat(t);break;case\"d\":s=parseFloat(t),s\u003C1&&(i.opacity=s,i.transparent=!0);break;case\"tr\":s=parseFloat(t),this.options&&this.options.invertTrProperty&&(s=1-s),s>0&&(i.opacity=1-s,i.transparent=!0)}}return this.materials[e]=new Jh(i),this.materials[e]}getTextureParams(e,t){const n={scale:new Ln(1,1),offset:new Ln(0,0)},i=e.split(/\\s+/);let r;return r=i.indexOf(\"-bm\"),r>=0&&(t.bumpScale=parseFloat(i[r+1]),i.splice(r,2)),r=i.indexOf(\"-s\"),r>=0&&(n.scale.set(parseFloat(i[r+1]),parseFloat(i[r+2])),i.splice(r,4)),r=i.indexOf(\"-o\"),r>=0&&(n.offset.set(parseFloat(i[r+1]),parseFloat(i[r+2])),i.splice(r,4)),n.url=i.join(\" \").trim(),n}loadTexture(e,t,n,i,r){const s=void 0!==this.manager?this.manager:Mu;let o=s.getHandler(e);null===o&&(o=new ku(s)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);const a=o.load(e,n,i,r);return void 0!==t&&(a.mapping=t),a}}function Kf(){throw new Error(\"BufferGeometryUtils: computeTangents renamed to computeMikkTSpaceTangents.\")}function Zf(e,t,n=!0){if(!t||!t.isReady)throw new Error(\"BufferGeometryUtils: Initialized MikkTSpace library required.\");if(!e.hasAttribute(\"position\")||!e.hasAttribute(\"normal\")||!e.hasAttribute(\"uv\"))throw new Error('BufferGeometryUtils: Tangents require \"position\", \"normal\", and \"uv\" attributes.');function i(e){if(e.normalized||e.isInterleavedBufferAttribute){const t=new Float32Array(e.getCount()*e.itemSize);for(let n=0,i=0;n\u003Ce.getCount();n++)t[i++]=e.getX(n),t[i++]=e.getY(n),e.itemSize>2&&(t[i++]=e.getZ(n));return t}return e.array instanceof Float32Array?e.array:new Float32Array(e.array)}const r=e.index?e.toNonIndexed():e,s=t.generateTangents(i(r.attributes.position),i(r.attributes.normal),i(r.attributes.uv));if(n)for(let e=3;e\u003Cs.length;e+=4)s[e]*=-1;return r.setAttribute(\"tangent\",new Ir(s,4)),e!==r&&e.copy(r),e}function $f(e,t=!1){const n=null!==e[0].index,i=new Set(Object.keys(e[0].attributes)),r=new Set(Object.keys(e[0].morphAttributes)),s={},o={},a=e[0].morphTargetsRelative,l=new Wr;let c=0;for(let h=0;h\u003Ce.length;++h){const u=e[h];let d=0;if(n!==(null!==u.index))return console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+h+\". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.\"),null;for(const e in u.attributes){if(!i.has(e))return console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+h+'. All geometries must have compatible attributes; make sure \"'+e+'\" attribute exists among all geometries, or in none of them.'),null;void 0===s[e]&&(s[e]=[]),s[e].push(u.attributes[e]),d++}if(d!==i.size)return console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+h+\". Make sure all geometries have the same number of attributes.\"),null;if(a!==u.morphTargetsRelative)return console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+h+\". .morphTargetsRelative must be consistent throughout all geometries.\"),null;for(const e in u.morphAttributes){if(!r.has(e))return console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+h+\". .morphAttributes must be consistent throughout all geometries.\"),null;void 0===o[e]&&(o[e]=[]),o[e].push(u.morphAttributes[e])}if(t){let e;if(n)e=u.index.count;else{if(void 0===u.attributes.position)return console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+h+\". The geometry must have either an index or a position attribute\"),null;e=u.attributes.position.count}l.addGroup(c,e,h),c+=e}}if(n){let t=0;const n=[];for(let i=0;i\u003Ce.length;++i){const r=e[i].index;for(let e=0;e\u003Cr.count;++e)n.push(r.getX(e)+t);t+=e[i].attributes.position.count}l.setIndex(n)}for(const e in s){const t=em(s[e]);if(!t)return console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the \"+e+\" attribute.\"),null;l.setAttribute(e,t)}for(const e in o){const t=o[e][0].length;if(0===t)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[e]=[];for(let n=0;n\u003Ct;++n){const t=[];for(let i=0;i\u003Co[e].length;++i)t.push(o[e][i][n]);const i=em(t);if(!i)return console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the \"+e+\" morphAttribute.\"),null;l.morphAttributes[e].push(i)}}return l}function em(e){let t,n,i,r=0;for(let s=0;s\u003Ce.length;++s){const o=e[s];if(o.isInterleavedBufferAttribute)return console.error(\"THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported.\"),null;if(void 0===t&&(t=o.array.constructor),t!==o.array.constructor)return console.error(\"THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.\"),null;if(void 0===n&&(n=o.itemSize),n!==o.itemSize)return console.error(\"THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.\"),null;if(void 0===i&&(i=o.normalized),i!==o.normalized)return console.error(\"THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.\"),null;r+=o.array.length}const s=new t(r);let o=0;for(let t=0;t\u003Ce.length;++t)s.set(e[t].array,o),o+=e[t].array.length;return new Ir(s,n,i)}function tm(e){return e.isInstancedInterleavedBufferAttribute||e.isInterleavedBufferAttribute?im(e):e.isInstancedBufferAttribute?(new Yl).copy(e):(new Ir).copy(e)}function nm(e){let t,n=0,i=0;for(let r=0,s=e.length;r\u003Cs;++r){const s=e[r];if(void 0===t&&(t=s.array.constructor),t!==s.array.constructor)return console.error(\"AttributeBuffers of different types cannot be interleaved\"),null;n+=s.array.length,i+=s.itemSize}const r=new fl(new t(n),i);let s=0;const o=[],a=[\"getX\",\"getY\",\"getZ\",\"getW\"],l=[\"setX\",\"setY\",\"setZ\",\"setW\"];for(let t=0,n=e.length;t\u003Cn;t++){const n=e[t],i=n.itemSize,c=n.count,h=new gl(r,i,s,n.normalized);o.push(h),s+=i;for(let e=0;e\u003Cc;e++)for(let t=0;t\u003Ci;t++)h[l[t]](e,n[a[t]](e))}return o}function im(e){const t=e.data.array.constructor,n=e.count,i=e.itemSize,r=e.normalized,s=new t(n*i);let o;o=e.isInstancedInterleavedBufferAttribute?new Yl(s,i,r,e.meshPerAttribute):new Ir(s,i,r);for(let t=0;t\u003Cn;t++)o.setX(t,e.getX(t)),i>=2&&o.setY(t,e.getY(t)),i>=3&&o.setZ(t,e.getZ(t)),i>=4&&o.setW(t,e.getW(t));return o}function rm(e){const t=e.attributes,n=e.morphTargets,i=new Map;for(const e in t){const n=t[e];n.isInterleavedBufferAttribute&&(i.has(n)||i.set(n,im(n)),t[e]=i.get(n))}for(const e in n){const t=n[e];t.isInterleavedBufferAttribute&&(i.has(t)||i.set(t,im(t)),n[e]=i.get(t))}}function sm(e){let t=0;for(const n in e.attributes){const i=e.getAttribute(n);t+=i.count*i.itemSize*i.array.BYTES_PER_ELEMENT}const n=e.getIndex();return t+=n?n.count*n.itemSize*n.array.BYTES_PER_ELEMENT:0,t}function om(e,t=1e-4){t=Math.max(t,Number.EPSILON);const n={},i=e.getIndex(),r=e.getAttribute(\"position\"),s=i?i.count:r.count;let o=0;const a=Object.keys(e.attributes),l={},c={},h=[],u=[\"getX\",\"getY\",\"getZ\",\"getW\"],d=[\"setX\",\"setY\",\"setZ\",\"setW\"];for(let t=0,n=a.length;t\u003Cn;t++){const n=a[t],i=e.attributes[n];l[n]=new Ir(new i.array.constructor(i.count*i.itemSize),i.itemSize,i.normalized);const r=e.morphAttributes[n];r&&(c[n]=new Ir(new r.array.constructor(r.count*r.itemSize),r.itemSize,r.normalized))}const p=Math.log10(1/t),A=Math.pow(10,p);for(let t=0;t\u003Cs;t++){const r=i?i.getX(t):t;let s=\"\";for(let t=0,n=a.length;t\u003Cn;t++){const n=a[t],i=e.getAttribute(n),o=i.itemSize;for(let e=0;e\u003Co;e++)s+=~~(i[u[e]](r)*A)+\",\"}if(s in n)h.push(n[s]);else{for(let t=0,n=a.length;t\u003Cn;t++){const n=a[t],i=e.getAttribute(n),s=e.morphAttributes[n],h=i.itemSize,p=l[n],A=c[n];for(let e=0;e\u003Ch;e++){const t=u[e],n=d[e];if(p[n](o,i[t](r)),s)for(let e=0,i=s.length;e\u003Ci;e++)A[e][n](o,s[e][t](r))}}n[s]=o,h.push(o),o++}}const f=e.clone();for(const t in e.attributes){const e=l[t];if(f.setAttribute(t,new Ir(e.array.slice(0,o*e.itemSize),e.itemSize,e.normalized)),t in c)for(let e=0;e\u003Cc[t].length;e++){const n=c[t][e];f.morphAttributes[t][e]=new Ir(n.array.slice(0,o*n.itemSize),n.itemSize,n.normalized)}}return f.setIndex(h),f}function am(e,t){if(t===St)return console.warn(\"THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.\"),e;if(t===Lt||t===Tt){let n=e.getIndex();if(null===n){const t=[],i=e.getAttribute(\"position\");if(void 0===i)return console.error(\"THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.\"),e;for(let e=0;e\u003Ci.count;e++)t.push(e);e.setIndex(t),n=e.getIndex()}const i=n.count-2,r=[];if(t===Lt)for(let e=1;e\u003C=i;e++)r.push(n.getX(0)),r.push(n.getX(e)),r.push(n.getX(e+1));else for(let e=0;e\u003Ci;e++)e%2==0?(r.push(n.getX(e)),r.push(n.getX(e+1)),r.push(n.getX(e+2))):(r.push(n.getX(e+2)),r.push(n.getX(e+1)),r.push(n.getX(e)));r.length/3!==i&&console.error(\"THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.\");const s=e.clone();return s.setIndex(r),s.clearGroups(),s}return console.error(\"THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:\",t),e}function lm(e){if(!0!==e.geometry.isBufferGeometry)return console.error(\"THREE.BufferGeometryUtils: Geometry is not of type BufferGeometry.\"),null;const t=new ci,n=new ci,i=new ci,r=new ci,s=new ci,o=new ci,a=new ci,l=new ci,c=new ci;function h(e,h,u,d,p,A,f,m){t.fromBufferAttribute(h,p),n.fromBufferAttribute(h,A),i.fromBufferAttribute(h,f);const g=e.morphTargetInfluences;if(u&&g){a.set(0,0,0),l.set(0,0,0),c.set(0,0,0);for(let e=0,h=u.length;e\u003Ch;e++){const h=g[e],m=u[e];0!==h&&(r.fromBufferAttribute(m,p),s.fromBufferAttribute(m,A),o.fromBufferAttribute(m,f),d?(a.addScaledVector(r,h),l.addScaledVector(s,h),c.addScaledVector(o,h)):(a.addScaledVector(r.sub(t),h),l.addScaledVector(s.sub(n),h),c.addScaledVector(o.sub(i),h)))}t.add(a),n.add(l),i.add(c)}e.isSkinnedMesh&&(e.boneTransform(p,t),e.boneTransform(A,n),e.boneTransform(f,i)),m[3*p+0]=t.x,m[3*p+1]=t.y,m[3*p+2]=t.z,m[3*A+0]=n.x,m[3*A+1]=n.y,m[3*A+2]=n.z,m[3*f+0]=i.x,m[3*f+1]=i.y,m[3*f+2]=i.z}const u=e.geometry,d=e.material;let p,A,f;const m=u.index,g=u.attributes.position,v=u.morphAttributes.position,y=u.morphTargetsRelative,E=u.attributes.normal,b=u.morphAttributes.position,x=u.groups,w=u.drawRange;let C,M,_,I,B,S,T;const L=new Float32Array(g.count*g.itemSize),D=new Float32Array(E.count*E.itemSize);if(null!==m)if(Array.isArray(d))for(C=0,_=x.length;C\u003C_;C++)for(B=x[C],S=Math.max(B.start,w.start),T=Math.min(B.start+B.count,w.start+w.count),M=S,I=T;M\u003CI;M+=3)p=m.getX(M),A=m.getX(M+1),f=m.getX(M+2),h(e,g,v,y,p,A,f,L),h(e,E,b,y,p,A,f,D);else for(S=Math.max(0,w.start),T=Math.min(m.count,w.start+w.count),C=S,_=T;C\u003C_;C+=3)p=m.getX(C),A=m.getX(C+1),f=m.getX(C+2),h(e,g,v,y,p,A,f,L),h(e,E,b,y,p,A,f,D);else if(Array.isArray(d))for(C=0,_=x.length;C\u003C_;C++)for(B=x[C],S=Math.max(B.start,w.start),T=Math.min(B.start+B.count,w.start+w.count),M=S,I=T;M\u003CI;M+=3)p=M,A=M+1,f=M+2,h(e,g,v,y,p,A,f,L),h(e,E,b,y,p,A,f,D);else for(S=Math.max(0,w.start),T=Math.min(g.count,w.start+w.count),C=S,_=T;C\u003C_;C+=3)p=C,A=C+1,f=C+2,h(e,g,v,y,p,A,f,L),h(e,E,b,y,p,A,f,D);return{positionAttribute:g,normalAttribute:E,morphedPositionAttribute:new Fr(L,3),morphedNormalAttribute:new Fr(D,3)}}function cm(e){if(0===e.groups.length)return console.warn(\"THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge.\"),e;let t=e.groups;if(t=t.sort(((e,t)=>e.materialIndex!==t.materialIndex?e.materialIndex-t.materialIndex:e.start-t.start)),null===e.getIndex()){const t=e.getAttribute(\"position\"),n=[];for(let e=0;e\u003Ct.count;e+=3)n.push(e,e+1,e+2);e.setIndex(n)}const n=e.getIndex(),i=[];for(let e=0;e\u003Ct.length;e++){const r=t[e],s=r.start,o=s+r.count;for(let e=s;e\u003Co;e++)i.push(n.getX(e))}e.dispose(),e.setIndex(i);let r=0;for(let e=0;e\u003Ct.length;e++){const n=t[e];n.start=r,r+=n.count}let s=t[0];e.groups=[s];for(let n=1;n\u003Ct.length;n++){const i=t[n];s.materialIndex===i.materialIndex?s.count+=i.count:(s=i,e.groups.push(s))}return e}function hm(e,t=Math.PI/3){const n=Math.cos(t),i=100*(1+1e-10),r=[new ci,new ci,new ci],s=new ci,o=new ci,a=new ci,l=new ci;function c(e){return`${~~(e.x*i)},${~~(e.y*i)},${~~(e.z*i)}`}const h=e.toNonIndexed(),u=h.attributes.position,d={};for(let e=0,t=u.count/3;e\u003Ct;e++){const t=3*e,n=r[0].fromBufferAttribute(u,t+0),i=r[1].fromBufferAttribute(u,t+1),a=r[2].fromBufferAttribute(u,t+2);s.subVectors(a,i),o.subVectors(n,i);const l=(new ci).crossVectors(s,o).normalize();for(let e=0;e\u003C3;e++){const t=c(r[e]);t in d||(d[t]=[]),d[t].push(l)}}const p=new Float32Array(3*u.count),A=new Ir(p,3,!1);for(let e=0,t=u.count/3;e\u003Ct;e++){const t=3*e,i=r[0].fromBufferAttribute(u,t+0),h=r[1].fromBufferAttribute(u,t+1),p=r[2].fromBufferAttribute(u,t+2);s.subVectors(p,h),o.subVectors(i,h),a.crossVectors(s,o).normalize();for(let e=0;e\u003C3;e++){const i=d[c(r[e])];l.set(0,0,0);for(let e=0,t=i.length;e\u003Ct;e++){const t=i[e];a.dot(t)>n&&l.add(t)}l.normalize(),A.setXYZ(t+e,l.x,l.y,l.z)}}return h.setAttribute(\"normal\",A),h}function um(e,t){switch(t){case Rt:e.convertSRGBToLinear();break;case Dt:break;default:console.warn(\"WARNING: LightProbeGenerator convertColorToLinear() encountered an unsupported encoding.\")}return e}var dm=n(7347),pm=window.THREE=dm({},i);n(6898),pm.DRACOLoader=class extends _u{constructor(e){super(e),this.decoderPath=\"\",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL=\"\",this.defaultAttributeIDs={position:\"POSITION\",normal:\"NORMAL\",color:\"COLOR\",uv:\"TEX_COORD\"},this.defaultAttributeTypes={position:\"Float32Array\",normal:\"Float32Array\",color:\"Float32Array\",uv:\"Float32Array\"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,i){const r=new Su(this.manager);r.setPath(this.path),r.setResponseType(\"arraybuffer\"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(e,(e=>{this.decodeDracoFile(e,t).catch(i)}),n,i)}decodeDracoFile(e,t,n,i){const r={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!n};return this.decodeGeometry(e,r).then(t)}decodeGeometry(e,t){const n=JSON.stringify(t);if(hA.has(e)){const t=hA.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw new Error(\"THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.\")}let i;const r=this.workerNextTaskID++,s=e.byteLength,o=this._getWorker(r,s).then((n=>(i=n,new Promise(((n,s)=>{i._callbacks[r]={resolve:n,reject:s},i.postMessage({type:\"decode\",id:r,taskConfig:t,buffer:e},[e])}))))).then((e=>this._createGeometry(e.geometry)));return o.catch((()=>!0)).then((()=>{i&&r&&this._releaseTask(i,r)})),hA.set(e,{key:n,promise:o}),o}_createGeometry(e){const t=new Wr;e.index&&t.setIndex(new Ir(e.index.array,1));for(let n=0;n\u003Ce.attributes.length;n++){const i=e.attributes[n],r=i.name,s=i.array,o=i.itemSize;t.setAttribute(r,new Ir(s,o))}return t}_loadLibrary(e,t){const n=new Su(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise(((t,i)=>{n.load(e,t,void 0,i)}))}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=\"object\"!=typeof WebAssembly||\"js\"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary(\"draco_decoder.js\",\"text\")):(t.push(this._loadLibrary(\"draco_wasm_wrapper.js\",\"text\")),t.push(this._loadLibrary(\"draco_decoder.wasm\",\"arraybuffer\"))),this.decoderPending=Promise.all(t).then((t=>{const n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);const i=uA.toString(),r=[\"/* draco decoder */\",n,\"\",\"/* worker */\",i.substring(i.indexOf(\"{\")+1,i.lastIndexOf(\"}\"))].join(\"\\n\");this.workerSourceURL=URL.createObjectURL(new Blob([r]))})),this.decoderPending}_getWorker(e,t){return this._initDecoder().then((()=>{if(this.workerPool.length\u003Cthis.workerLimit){const e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:\"init\",decoderConfig:this.decoderConfig}),e.onmessage=function(t){const n=t.data;switch(n.type){case\"decode\":e._callbacks[n.id].resolve(n);break;case\"error\":e._callbacks[n.id].reject(n);break;default:console.error('THREE.DRACOLoader: Unexpected message, \"'+n.type+'\"')}},this.workerPool.push(e)}else this.workerPool.sort((function(e,t){return e._taskLoad>t._taskLoad?-1:1}));const n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n}))}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log(\"Task load: \",this.workerPool.map((e=>e._taskLoad)))}dispose(){for(let e=0;e\u003Cthis.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}},pm.GLTFLoader=class extends _u{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register((function(e){return new PA(e)})),this.register((function(e){return new GA(e)})),this.register((function(e){return new zA(e)})),this.register((function(e){return new FA(e)})),this.register((function(e){return new OA(e)})),this.register((function(e){return new QA(e)})),this.register((function(e){return new UA(e)})),this.register((function(e){return new RA(e)})),this.register((function(e){return new NA(e)})),this.register((function(e){return new kA(e)})),this.register((function(e){return new LA(e)})),this.register((function(e){return new HA(e)})),this.register((function(e){return new VA(e)}))}load(e,t,n,i){const r=this;let s;s=\"\"!==this.resourcePath?this.resourcePath:\"\"!==this.path?this.path:nd.extractUrlBase(e),this.manager.itemStart(e);const o=function(t){i?i(t):console.error(t),r.manager.itemError(e),r.manager.itemEnd(e)},a=new Su(this.manager);a.setPath(this.path),a.setResponseType(\"arraybuffer\"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,(function(n){try{r.parse(n,s,(function(n){t(n),r.manager.itemEnd(e)}),o)}catch(e){o(e)}}),n,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,i){let r;const s={},o={};if(\"string\"==typeof e)r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(nd.decodeText(new Uint8Array(e,0,4))===WA){try{s[pA]=new jA(e)}catch(e){return void(i&&i(e))}r=JSON.parse(s[pA].content)}else r=JSON.parse(nd.decodeText(new Uint8Array(e)));else r=e;if(void 0===r.asset||r.asset.version[0]\u003C2)return void(i&&i(new Error(\"THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.\")));const a=new Af(r,{path:t||this.resourcePath||\"\",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});a.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e\u003Cthis.pluginCallbacks.length;e++){const t=this.pluginCallbacks[e](a);o[t.name]=t,s[t.name]=!0}if(r.extensionsUsed)for(let e=0;e\u003Cr.extensionsUsed.length;++e){const t=r.extensionsUsed[e],n=r.extensionsRequired||[];switch(t){case xA:s[t]=new DA;break;case AA:s[t]=new qA(r,this.dracoLoader);break;case MA:s[t]=new YA;break;case _A:s[t]=new XA;break;default:n.indexOf(t)>=0&&void 0===o[t]&&console.warn('THREE.GLTFLoader: Unknown extension \"'+t+'\".')}}a.setExtensions(s),a.setPlugins(o),a.parse(n,i)}parseAsync(e,t){const n=this;return new Promise((function(i,r){n.parse(e,t,i,r)}))}},pm.KTX2Loader=Pf,pm.OBJLoader=class extends _u{constructor(e){super(e),this.materials=null}load(e,t,n,i){const r=this,s=new Su(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,(function(n){try{t(r.parse(n))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}}),n,i)}setMaterials(e){return this.materials=e,this}parse(e){const t=new Xf;-1!==e.indexOf(\"\\r\\n\")&&(e=e.replace(/\\r\\n/g,\"\\n\")),-1!==e.indexOf(\"\\\\\\n\")&&(e=e.replace(/\\\\\\n/g,\"\"));const n=e.split(\"\\n\");let i=[];for(let e=0,r=n.length;e\u003Cr;e++){const r=n[e].trimStart();if(0===r.length)continue;const s=r.charAt(0);if(\"#\"!==s)if(\"v\"===s){const e=r.split(zf);switch(e[0]){case\"v\":t.vertices.push(parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])),e.length>=7?(Yf.setRGB(parseFloat(e[4]),parseFloat(e[5]),parseFloat(e[6])).convertSRGBToLinear(),t.colors.push(Yf.r,Yf.g,Yf.b)):t.colors.push(void 0,void 0,void 0);break;case\"vn\":t.normals.push(parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]));break;case\"vt\":t.uvs.push(parseFloat(e[1]),parseFloat(e[2]))}}else if(\"f\"===s){const e=r.slice(1).trim().split(zf),n=[];for(let t=0,i=e.length;t\u003Ci;t++){const i=e[t];if(i.length>0){const e=i.split(\"/\");n.push(e)}}const i=n[0];for(let e=1,r=n.length-1;e\u003Cr;e++){const r=n[e],s=n[e+1];t.addFace(i[0],r[0],s[0],i[1],r[1],s[1],i[2],r[2],s[2])}}else if(\"l\"===s){const e=r.substring(1).trim().split(\" \");let n=[];const i=[];if(-1===r.indexOf(\"/\"))n=e;else for(let t=0,r=e.length;t\u003Cr;t++){const r=e[t].split(\"/\");\"\"!==r[0]&&n.push(r[0]),\"\"!==r[1]&&i.push(r[1])}t.addLineGeometry(n,i)}else if(\"p\"===s){const e=r.slice(1).trim().split(\" \");t.addPointGeometry(e)}else if(null!==(i=Qf.exec(r))){const e=(\" \"+i[0].slice(1).trim()).slice(1);t.startObject(e)}else if(Nf.test(r))t.object.startMaterial(r.substring(7).trim(),t.materialLibraries);else if(Uf.test(r))t.materialLibraries.push(r.substring(7).trim());else if(Gf.test(r))console.warn('THREE.OBJLoader: Rendering identifier \"usemap\" not supported. Textures must be defined in MTL files.');else if(\"s\"===s){if(i=r.split(\" \"),i.length>1){const e=i[1].trim().toLowerCase();t.object.smooth=\"0\"!==e&&\"off\"!==e}else t.object.smooth=!0;const e=t.object.currentMaterial();e&&(e.smooth=t.object.smooth)}else{if(\"\\0\"===r)continue;console.warn('THREE.OBJLoader: Unexpected line: \"'+r+'\"')}}t.finalize();const r=new $a;if(r.materialLibraries=[].concat(t.materialLibraries),!0==!(1===t.objects.length&&0===t.objects[0].geometry.vertices.length))for(let e=0,n=t.objects.length;e\u003Cn;e++){const n=t.objects[e],i=n.geometry,s=n.materials,o=\"Line\"===i.type,a=\"Points\"===i.type;let l=!1;if(0===i.vertices.length)continue;const c=new Wr;c.setAttribute(\"position\",new Fr(i.vertices,3)),i.normals.length>0&&c.setAttribute(\"normal\",new Fr(i.normals,3)),i.colors.length>0&&(l=!0,c.setAttribute(\"color\",new Fr(i.colors,3))),!0===i.hasUVIndices&&c.setAttribute(\"uv\",new Fr(i.uvs,2));const h=[];for(let e=0,n=s.length;e\u003Cn;e++){const n=s[e],i=n.name+\"_\"+n.smooth+\"_\"+l;let r=t.materials[i];if(null!==this.materials)if(r=this.materials.create(n.name),!o||!r||r instanceof tc){if(a&&r&&!(r instanceof dc)){const e=new dc({size:10,sizeAttenuation:!1});wr.prototype.copy.call(e,r),e.color.copy(r.color),e.map=r.map,r=e}}else{const e=new tc;wr.prototype.copy.call(e,r),e.color.copy(r.color),r=e}void 0===r&&(r=o?new tc:a?new dc({size:1,sizeAttenuation:!1}):new Jh,r.name=n.name,r.flatShading=!n.smooth,r.vertexColors=l,t.materials[i]=r),h.push(r)}let u;if(h.length>1){for(let e=0,t=s.length;e\u003Ct;e++){const t=s[e];c.addGroup(t.groupStart,t.groupCount,e)}u=o?new hc(c,h):a?new gc(c,h):new cs(c,h)}else u=o?new hc(c,h[0]):a?new gc(c,h[0]):new cs(c,h[0]);u.name=n.name,r.add(u)}else if(t.vertices.length>0){const e=new dc({size:1,sizeAttenuation:!1}),n=new Wr;n.setAttribute(\"position\",new Fr(t.vertices,3)),t.colors.length>0&&void 0!==t.colors[0]&&(n.setAttribute(\"color\",new Fr(t.colors,3)),e.vertexColors=!0);const i=new gc(n,e);r.add(i)}return r}},pm.MTLLoader=class extends _u{constructor(e){super(e)}load(e,t,n,i){const r=this,s=\"\"===this.path?nd.extractUrlBase(e):this.path,o=new Su(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,(function(n){try{t(r.parse(n,s))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}}),n,i)}setMaterialOptions(e){return this.materialOptions=e,this}parse(e,t){const n=e.split(\"\\n\");let i={};const r=/\\s+/,s={};for(let e=0;e\u003Cn.length;e++){let t=n[e];if(t=t.trim(),0===t.length||\"#\"===t.charAt(0))continue;const o=t.indexOf(\" \");let a=o>=0?t.substring(0,o):t;a=a.toLowerCase();let l=o>=0?t.substring(o+1):\"\";if(l=l.trim(),\"newmtl\"===a)i={name:l},s[l]=i;else if(\"ka\"===a||\"kd\"===a||\"ks\"===a||\"ke\"===a){const e=l.split(r,3);i[a]=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])]}else i[a]=l}const o=new Jf(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(s),o}},pm.BufferGeometryUtils=r,pm.LightProbeGenerator=class{static fromCubeTexture(e){let t=0;const n=new ci,i=new ci,r=new Yn,s=[0,0,0,0,0,0,0,0,0],o=new $u,a=o.coefficients;for(let o=0;o\u003C6;o++){const l=e.image[o],c=l.width,h=l.height,u=document.createElement(\"canvas\");u.width=c,u.height=h;const d=u.getContext(\"2d\");d.drawImage(l,0,0,c,h);const p=d.getImageData(0,0,c,h),A=p.data,f=p.width,m=2/f;for(let l=0,c=A.length;l\u003Cc;l+=4){r.setRGB(A[l]/255,A[l+1]/255,A[l+2]/255),um(r,e.encoding);const c=l/4,h=(c%f+.5)*m-1,u=1-(Math.floor(c/f)+.5)*m;switch(o){case 0:n.set(-1,u,-h);break;case 1:n.set(1,u,h);break;case 2:n.set(-h,1,-u);break;case 3:n.set(-h,-1,u);break;case 4:n.set(-h,u,1);break;case 5:n.set(h,u,-1)}const d=n.lengthSq(),p=4/(Math.sqrt(d)*d);t+=p,i.copy(n).normalize(),$u.getBasisAt(i,s);for(let e=0;e\u003C9;e++)a[e].x+=s[e]*r.r*p,a[e].y+=s[e]*r.g*p,a[e].z+=s[e]*r.b*p}}const l=4*Math.PI/t;for(let e=0;e\u003C9;e++)a[e].x*=l,a[e].y*=l,a[e].z*=l;return new ed(o)}static fromCubeRenderTarget(e,t){let n=0;const i=new ci,r=new ci,s=new Yn,o=[0,0,0,0,0,0,0,0,0],a=new $u,l=a.coefficients;for(let a=0;a\u003C6;a++){const c=t.width,h=new Uint8Array(c*c*4);e.readRenderTargetPixels(t,0,0,c,c,h,a);const u=2/c;for(let e=0,d=h.length;e\u003Cd;e+=4){s.setRGB(h[e]/255,h[e+1]/255,h[e+2]/255),um(s,t.texture.encoding);const d=e/4,p=(d%c+.5)*u-1,A=1-(Math.floor(d/c)+.5)*u;switch(a){case 0:i.set(1,A,-p);break;case 1:i.set(-1,A,p);break;case 2:i.set(p,1,-A);break;case 3:i.set(p,-1,A);break;case 4:i.set(p,A,1);break;case 5:i.set(-p,A,-1)}const f=i.lengthSq(),m=4/(Math.sqrt(f)*f);n+=m,r.copy(i).normalize(),$u.getBasisAt(r,o);for(let e=0;e\u003C9;e++)l[e].x+=o[e]*s.r*m,l[e].y+=o[e]*s.g*m,l[e].z+=o[e]*s.b*m}}const c=4*Math.PI/n;for(let e=0;e\u003C9;e++)l[e].x*=c,l[e].y*=c,l[e].z*=c;return new ed(a)}};const Am=pm},7260:(e,t,n)=>{var i=n(9644).registerShader,r=n(2666),s=n(8903);function o(e,t){return t.color.set(e.color),t.fog=e.fog,t.wireframe=e.wireframe,t.toneMapped=e.toneMapped,t.wireframeLinewidth=e.wireframeLinewidth,t}e.exports.Shader=i(\"flat\",{schema:{color:{type:\"color\"},fog:{default:!0},height:{default:256},offset:{type:\"vec2\",default:{x:0,y:0}},repeat:{type:\"vec2\",default:{x:1,y:1}},src:{type:\"map\"},width:{default:512},wireframe:{default:!1},wireframeLinewidth:{default:2},toneMapped:{default:!0}},init:function(e){this.rendererSystem=this.el.sceneEl.systems.renderer,this.materialData={color:new r.Color},this.textureSrc=null,o(e,this.materialData),this.rendererSystem.applyColorCorrection(this.materialData.color),this.material=new r.MeshBasicMaterial(this.materialData)},update:function(e){this.updateMaterial(e),s.material.updateMap(this,e)},updateMaterial:function(e){var t;for(t in o(e,this.materialData),this.rendererSystem.applyColorCorrection(this.materialData.color),this.materialData)this.material[t]=this.materialData[t]}})},8657:(e,t,n)=>{n(7260),n(2653),n(1359),n(2859),n(4047),n(1123),n(7759)},1123:(e,t,n)=>{var i=n(9644).registerShader;e.exports.Shader=i(\"ios10hls\",{schema:{src:{type:\"map\",is:\"uniform\"},opacity:{type:\"number\",is:\"uniform\",default:1}},vertexShader:[\"varying vec2 vUV;\",\"void main(void) {\",\" gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\",\" vUV = uv;\",\"}\"].join(\"\\n\"),fragmentShader:[\"uniform sampler2D src;\",\"uniform float opacity;\",\"varying vec2 vUV;\",\"void main() {\",\" vec2 offset = vec2(0, 0);\",\" vec2 repeat = vec2(1, 1);\",\" vec4 color = texture2D(src, vec2(vUV.x / repeat.x + offset.x, (1.0 - vUV.y) / repeat.y + offset.y)).bgra;\",\" gl_FragColor = vec4(color.rgb, opacity);\",\"}\"].join(\"\\n\")})},4047:(e,t,n)=>{var i=n(9644).registerShader,r=!!document.createElement(\"canvas\").getContext(\"webgl2\"),s=[\"attribute vec2 uv;\",\"attribute vec3 position;\",\"uniform mat4 projectionMatrix;\",\"uniform mat4 modelViewMatrix;\",\"varying vec2 vUV;\",\"void main(void) {\",\" gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\",\" vUV = uv;\",\"}\"].join(\"\\n\"),o=[\"#version 300 es\",\"in vec2 uv;\",\"in vec3 position;\",\"uniform mat4 projectionMatrix;\",\"uniform mat4 modelViewMatrix;\",\"out vec2 vUV;\",\"void main(void) {\",\" gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\",\" vUV = uv;\",\"}\"].join(\"\\n\"),a=r?o:s,l=[\"#ifdef GL_OES_standard_derivatives\",\"#extension GL_OES_standard_derivatives: enable\",\"#endif\",\"precision highp float;\",\"uniform bool negate;\",\"uniform float alphaTest;\",\"uniform float opacity;\",\"uniform sampler2D map;\",\"uniform vec3 color;\",\"varying vec2 vUV;\",\"float median(float r, float g, float b) {\",\" return max(min(r, g), min(max(r, g), b));\",\"}\",\"#define BIG_ENOUGH 0.001\",\"#define MODIFIED_ALPHATEST (0.02 * isBigEnough / BIG_ENOUGH)\",\"void main() {\",\" vec3 sampleColor = texture2D(map, vUV).rgb;\",\" if (negate) { sampleColor = 1.0 - sampleColor; }\",\" float sigDist = median(sampleColor.r, sampleColor.g, sampleColor.b) - 0.5;\",\" float alpha = clamp(sigDist / fwidth(sigDist) + 0.5, 0.0, 1.0);\",\" float dscale = 0.353505;\",\" vec2 duv = dscale * (dFdx(vUV) + dFdy(vUV));\",\" float isBigEnough = max(abs(duv.x), abs(duv.y));\",\" // Do modified alpha test.\",\" if (isBigEnough > BIG_ENOUGH) {\",\" float ratio = BIG_ENOUGH / isBigEnough;\",\" alpha = ratio * alpha + (1.0 - ratio) * (sigDist + 0.5);\",\" }\",\" // Do modified alpha test.\",\" if (alpha \u003C alphaTest * MODIFIED_ALPHATEST) { discard; return; }\",\" gl_FragColor = vec4(color.xyz, alpha * opacity);\",\"}\"].join(\"\\n\"),c=[\"#version 300 es\",\"precision highp float;\",\"uniform bool negate;\",\"uniform float alphaTest;\",\"uniform float opacity;\",\"uniform sampler2D map;\",\"uniform vec3 color;\",\"in vec2 vUV;\",\"out vec4 fragColor;\",\"float median(float r, float g, float b) {\",\" return max(min(r, g), min(max(r, g), b));\",\"}\",\"#define BIG_ENOUGH 0.001\",\"#define MODIFIED_ALPHATEST (0.02 * isBigEnough / BIG_ENOUGH)\",\"void main() {\",\" vec3 sampleColor = texture(map, vUV).rgb;\",\" if (negate) { sampleColor = 1.0 - sampleColor; }\",\" float sigDist = median(sampleColor.r, sampleColor.g, sampleColor.b) - 0.5;\",\" float alpha = clamp(sigDist / fwidth(sigDist) + 0.5, 0.0, 1.0);\",\" float dscale = 0.353505;\",\" vec2 duv = dscale * (dFdx(vUV) + dFdy(vUV));\",\" float isBigEnough = max(abs(duv.x), abs(duv.y));\",\" // Do modified alpha test.\",\" if (isBigEnough > BIG_ENOUGH) {\",\" float ratio = BIG_ENOUGH / isBigEnough;\",\" alpha = ratio * alpha + (1.0 - ratio) * (sigDist + 0.5);\",\" }\",\" // Do modified alpha test.\",\" if (alpha \u003C alphaTest * MODIFIED_ALPHATEST) { discard; return; }\",\" fragColor = vec4(color.xyz, alpha * opacity);\",\"}\"].join(\"\\n\"),h=r?c:l;e.exports.Shader=i(\"msdf\",{schema:{alphaTest:{type:\"number\",is:\"uniform\",default:.5},color:{type:\"color\",is:\"uniform\",default:\"white\"},map:{type:\"map\",is:\"uniform\"},negate:{type:\"boolean\",is:\"uniform\",default:!0},opacity:{type:\"number\",is:\"uniform\",default:1}},raw:!0,vertexShader:a,fragmentShader:h})},1359:(e,t,n)=>{var i=n(9644).registerShader,r=n(2666),s=n(8903),o=new r.CubeTextureLoader,a={};function l(e,t){switch(t.color.set(e.color),t.specular.set(e.emissive),t.emissive.set(e.emissive),t.emissiveIntensity=e.emissiveIntensity,t.fog=e.fog,t.transparent=e.transparent,t.wireframe=e.wireframe,t.wireframeLinewidth=e.wireframeLinewidth,t.shininess=e.shininess,t.flatShading=e.flatShading,t.wireframe=e.wireframe,t.wireframeLinewidth=e.wireframeLinewidth,t.reflectivity=e.reflectivity,t.refractionRatio=e.refractionRatio,e.combine){case\"mix\":t.combine=r.MixOperation;break;case\"multiply\":t.combine=r.MultiplyOperation;break;case\"add\":t.combine=r.AddOperation}return e.normalMap&&(t.normalScale=e.normalScale),e.ambientOcclusionMap&&(t.aoMapIntensity=e.ambientOcclusionMapIntensity),e.bumpMap&&(t.aoMapIntensity=e.bumpMapScale),e.displacementMap&&(t.displacementScale=e.displacementScale,t.displacementBias=e.displacementBias),t}e.exports.Shader=i(\"phong\",{schema:{color:{type:\"color\"},emissive:{type:\"color\",default:\"black\"},emissiveIntensity:{default:1},specular:{type:\"color\",default:\"#111111\"},transparent:{default:!1},fog:{default:!0},offset:{type:\"vec2\",default:{x:0,y:0}},repeat:{type:\"vec2\",default:{x:1,y:1}},src:{type:\"map\"},envMap:{default:\"\"},sphericalEnvMap:{type:\"map\"},shininess:{default:30},flatShading:{default:!1},wireframe:{default:!1},wireframeLinewidth:{default:2},combine:{oneOF:[\"multiply\",\"mix\",\"add\"],default:\"mix\"},reflectivity:{default:.9},refractionRatio:{default:.98},refract:{default:!1},normalMap:{type:\"map\"},normalScale:{type:\"vec2\",default:{x:1,y:1}},normalTextureOffset:{type:\"vec2\"},normalTextureRepeat:{type:\"vec2\",default:{x:1,y:1}},displacementMap:{type:\"map\"},displacementScale:{default:1},displacementBias:{default:.5},displacementTextureOffset:{type:\"vec2\"},displacementTextureRepeat:{type:\"vec2\",default:{x:1,y:1}},bumpMap:{type:\"map\"},bumpMapScale:{default:1},bumpTextureOffset:{type:\"vec2\"},bumpTextureRepeat:{type:\"vec2\",default:{x:1,y:1}}},init:function(e){this.rendererSystem=this.el.sceneEl.systems.renderer,this.materialData={color:new r.Color,specular:new r.Color,emissive:new r.Color},this.textureSrc=null,l(e,this.materialData),this.rendererSystem.applyColorCorrection(this.materialData.color),this.material=new r.MeshPhongMaterial(this.materialData),s.material.updateMap(this,e)},update:function(e){this.updateMaterial(e),s.material.updateMap(this,e),e.normalMap&&s.material.updateDistortionMap(\"normal\",this,e),e.displacementMap&&s.material.updateDistortionMap(\"displacement\",this,e),e.ambientOcclusionMap&&s.material.updateDistortionMap(\"ambientOcclusion\",this,e),e.bump&&s.material.updateDistortionMap(\"bump\",this,e),this.updateEnvMap(e)},updateMaterial:function(e){var t;for(t in l(e,this.materialData),this.rendererSystem.applyColorCorrection(this.materialData.color),this.materialData)this.material[t]=this.materialData[t]},updateEnvMap:function(e){var t=this,n=this.material,i=e.envMap,l=e.sphericalEnvMap,c=e.refract,h=this.el.sceneEl;if(!i&&!l||this.isLoadingEnvMap)return Object.defineProperty(n,\"envMap\",{get:function(){return h.object3D.environment},set:function(e){delete this.envMap,this.envMap=e}}),void(n.needsUpdate=!0);this.isLoadingEnvMap=!0,delete n.envMap,l?this.el.sceneEl.systems.material.loadTexture(l,{src:l},(function(e){t.isLoadingEnvMap=!1,e.mapping=c?r.EquirectangularRefractionMapping:r.EquirectangularReflectionMapping,n.envMap=e,s.material.handleTextureEvents(t.el,e),n.needsUpdate=!0})):a[i]?a[i].then((function(e){t.isLoadingEnvMap=!1,n.envMap=e,s.material.handleTextureEvents(t.el,e),n.needsUpdate=!0})):a[i]=new Promise((function(e){s.srcLoader.validateCubemapSrc(i,(function(i){o.load(i,(function(i){t.isLoadingEnvMap=!1,n.envMap=i,i.mapping=c?r.CubeRefractionMapping:r.CubeReflectionMapping,s.material.handleTextureEvents(t.el,i),e(i)}))}))}))}})},2859:(e,t,n)=>{var i=n(9644).registerShader,r=!!document.createElement(\"canvas\").getContext(\"webgl2\"),s=[\"attribute vec2 uv;\",\"attribute vec3 position;\",\"uniform mat4 projectionMatrix;\",\"uniform mat4 modelViewMatrix;\",\"varying vec2 vUV;\",\"void main(void) {\",\" gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\",\" vUV = uv;\",\"}\"].join(\"\\n\"),o=[\"#version 300 es\",\"in vec2 uv;\",\"in vec3 position;\",\"uniform mat4 projectionMatrix;\",\"uniform mat4 modelViewMatrix;\",\"out vec2 vUV;\",\"void main(void) {\",\" gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\",\" vUV = uv;\",\"}\"].join(\"\\n\"),a=r?o:s,l=[\"#ifdef GL_OES_standard_derivatives\",\"#extension GL_OES_standard_derivatives: enable\",\"#endif\",\"precision highp float;\",\"uniform float alphaTest;\",\"uniform float opacity;\",\"uniform sampler2D map;\",\"uniform vec3 color;\",\"varying vec2 vUV;\",\"#ifdef GL_OES_standard_derivatives\",\" float contour(float width, float value) {\",\" return smoothstep(0.5 - value, 0.5 + value, width);\",\" }\",\"#else\",\" float aastep(float value, float afwidth) {\",\" return smoothstep(0.5 - afwidth, 0.5 + afwidth, value);\",\" }\",\"#endif\",\"#define BIG_ENOUGH 0.001\",\"#define MODIFIED_ALPHATEST (0.02 * isBigEnough / BIG_ENOUGH)\",\"#define ALL_SMOOTH 0.4\",\"#define ALL_ROUGH 0.02\",\"#define DISCARD_ALPHA (alphaTest / (2.2 - 1.2 * ratio))\",\"void main() {\",\" #ifdef GL_OES_standard_derivatives\",\" vec2 uv = vUV;\",\" vec4 texColor = texture2D(map, uv);\",\" float dist = texColor.a;\",\" float width = fwidth(dist);\",\" float alpha = contour(dist, width);\",\" float dscale = 0.353505;\",\" vec2 duv = dscale * (dFdx(uv) + dFdy(uv));\",\" float isBigEnough = max(abs(duv.x), abs(duv.y));\",\" if (isBigEnough > BIG_ENOUGH) {\",\" float ratio = BIG_ENOUGH / isBigEnough;\",\" alpha = ratio * alpha + (1.0 - ratio) * dist;\",\" }\",\" if (isBigEnough \u003C= BIG_ENOUGH) {\",\" vec4 box = vec4 (uv - duv, uv + duv);\",\" alpha = (alpha + 0.5 * (\",\" contour(texture2D(map, box.xy).a, width)\",\" + contour(texture2D(map, box.zw).a, width)\",\" + contour(texture2D(map, box.xw).a, width)\",\" + contour(texture2D(map, box.zy).a, width)\",\" )) / 3.0;\",\" }\",\" if (alpha \u003C alphaTest * MODIFIED_ALPHATEST) { discard; return; }\",\" #else\",\" vec4 texColor = texture2D(map, vUV);\",\" float value = texColor.a;\",\" float afwidth = (1.0 / 32.0) * (1.4142135623730951 / (2.0 * gl_FragCoord.w));\",\" float alpha = aastep(value, afwidth);\",\" float ratio = (gl_FragCoord.w >= ALL_SMOOTH) ? 1.0 : (gl_FragCoord.w \u003C ALL_ROUGH) ? 0.0 : (gl_FragCoord.w - ALL_ROUGH) / (ALL_SMOOTH - ALL_ROUGH);\",\" if (alpha \u003C alphaTest) { if (ratio >= 1.0) { discard; return; } alpha = 0.0; }\",\" alpha = alpha * ratio + (1.0 - ratio) * value;\",\" if (ratio \u003C 1.0 && alpha \u003C= DISCARD_ALPHA) { discard; return; }\",\" #endif\",\" gl_FragColor = vec4(color, opacity * alpha);\",\"}\"].join(\"\\n\"),c=[\"#version 300 es\",\"precision highp float;\",\"uniform float alphaTest;\",\"uniform float opacity;\",\"uniform sampler2D map;\",\"uniform vec3 color;\",\"in vec2 vUV;\",\"out vec4 fragColor;\",\"#ifdef GL_OES_standard_derivatives\",\" float contour(float width, float value) {\",\" return smoothstep(0.5 - value, 0.5 + value, width);\",\" }\",\"#else\",\" float aastep(float value, float afwidth) {\",\" return smoothstep(0.5 - afwidth, 0.5 + afwidth, value);\",\" }\",\"#endif\",\"#define BIG_ENOUGH 0.001\",\"#define MODIFIED_ALPHATEST (0.02 * isBigEnough / BIG_ENOUGH)\",\"#define ALL_SMOOTH 0.4\",\"#define ALL_ROUGH 0.02\",\"#define DISCARD_ALPHA (alphaTest / (2.2 - 1.2 * ratio))\",\"void main() {\",\" #ifdef GL_OES_standard_derivatives\",\" vec2 uv = vUV;\",\" vec4 texColor = texture(map, uv);\",\" float dist = texColor.a;\",\" float width = fwidth(dist);\",\" float alpha = contour(dist, width);\",\" float dscale = 0.353505;\",\" vec2 duv = dscale * (dFdx(uv) + dFdy(uv));\",\" float isBigEnough = max(abs(duv.x), abs(duv.y));\",\" if (isBigEnough > BIG_ENOUGH) {\",\" float ratio = BIG_ENOUGH / isBigEnough;\",\" alpha = ratio * alpha + (1.0 - ratio) * dist;\",\" }\",\" if (isBigEnough \u003C= BIG_ENOUGH) {\",\" vec4 box = vec4 (uv - duv, uv + duv);\",\" alpha = (alpha + 0.5 * (\",\" contour(texture(map, box.xy).a, width)\",\" + contour(texture(map, box.zw).a, width)\",\" + contour(texture(map, box.xw).a, width)\",\" + contour(texture(map, box.zy).a, width)\",\" )) / 3.0;\",\" }\",\" if (alpha \u003C alphaTest * MODIFIED_ALPHATEST) { discard; return; }\",\" #else\",\" vec4 texColor = texture(map, vUV);\",\" float value = texColor.a;\",\" float afwidth = (1.0 / 32.0) * (1.4142135623730951 / (2.0 * gl_FragCoord.w));\",\" float alpha = aastep(value, afwidth);\",\" float ratio = (gl_FragCoord.w >= ALL_SMOOTH) ? 1.0 : (gl_FragCoord.w \u003C ALL_ROUGH) ? 0.0 : (gl_FragCoord.w - ALL_ROUGH) / (ALL_SMOOTH - ALL_ROUGH);\",\" if (alpha \u003C alphaTest) { if (ratio >= 1.0) { discard; return; } alpha = 0.0; }\",\" alpha = alpha * ratio + (1.0 - ratio) * value;\",\" if (ratio \u003C 1.0 && alpha \u003C= DISCARD_ALPHA) { discard; return; }\",\" #endif\",\" fragColor = vec4(color, opacity * alpha);\",\"}\"].join(\"\\n\"),h=r?c:l;e.exports.Shader=i(\"sdf\",{schema:{alphaTest:{type:\"number\",is:\"uniform\",default:.5},color:{type:\"color\",is:\"uniform\",default:\"white\"},map:{type:\"map\",is:\"uniform\"},opacity:{type:\"number\",is:\"uniform\",default:1}},raw:!0,vertexShader:a,fragmentShader:h})},7759:(e,t,n)=>{var i=n(9644).registerShader,r=n(2666);e.exports.Shader=i(\"shadow\",{schema:{opacity:{default:.5},transparent:{default:!0},alphaToCoverage:{default:!0}},init:function(e){this.rendererSystem=this.el.sceneEl.systems.renderer,this.material=new r.ShadowMaterial},update:function(e){this.material.opacity=e.opacity,this.material.alphaToCoverage=e.alphaToCoverage,this.material.transparent=e.transparent}})},2653:(e,t,n)=>{var i=n(9644).registerShader,r=n(2666),s=n(8903),o=new r.CubeTextureLoader,a={};function l(e,t){return t.color.set(e.color),t.emissive.set(e.emissive),t.emissiveIntensity=e.emissiveIntensity,t.fog=e.fog,t.metalness=e.metalness,t.roughness=e.roughness,t.wireframe=e.wireframe,t.wireframeLinewidth=e.wireframeLinewidth,e.normalMap&&(t.normalScale=e.normalScale),e.ambientOcclusionMap&&(t.aoMapIntensity=e.ambientOcclusionMapIntensity),e.displacementMap&&(t.displacementScale=e.displacementScale,t.displacementBias=e.displacementBias),t}e.exports.Shader=i(\"standard\",{schema:{ambientOcclusionMap:{type:\"map\"},ambientOcclusionMapIntensity:{default:1},ambientOcclusionTextureOffset:{type:\"vec2\"},ambientOcclusionTextureRepeat:{type:\"vec2\",default:{x:1,y:1}},color:{type:\"color\"},displacementMap:{type:\"map\"},displacementScale:{default:1},displacementBias:{default:.5},displacementTextureOffset:{type:\"vec2\"},displacementTextureRepeat:{type:\"vec2\",default:{x:1,y:1}},emissive:{type:\"color\",default:\"#000\"},emissiveIntensity:{default:1},envMap:{default:\"\"},fog:{default:!0},height:{default:256},metalness:{default:0,min:0,max:1},metalnessMap:{type:\"map\"},metalnessTextureOffset:{type:\"vec2\"},metalnessTextureRepeat:{type:\"vec2\",default:{x:1,y:1}},normalMap:{type:\"map\"},normalScale:{type:\"vec2\",default:{x:1,y:1}},normalTextureOffset:{type:\"vec2\"},normalTextureRepeat:{type:\"vec2\",default:{x:1,y:1}},offset:{type:\"vec2\",default:{x:0,y:0}},repeat:{type:\"vec2\",default:{x:1,y:1}},roughness:{default:.5,min:0,max:1},roughnessMap:{type:\"map\"},roughnessTextureOffset:{type:\"vec2\"},roughnessTextureRepeat:{type:\"vec2\",default:{x:1,y:1}},sphericalEnvMap:{type:\"map\"},src:{type:\"map\"},width:{default:512},wireframe:{default:!1},wireframeLinewidth:{default:2}},init:function(e){this.rendererSystem=this.el.sceneEl.systems.renderer,this.materialData={color:new r.Color,emissive:new r.Color},l(e,this.materialData),this.rendererSystem.applyColorCorrection(this.materialData.color),this.rendererSystem.applyColorCorrection(this.materialData.emissive),this.material=new r.MeshStandardMaterial(this.materialData)},update:function(e){this.updateMaterial(e),s.material.updateMap(this,e),e.normalMap&&s.material.updateDistortionMap(\"normal\",this,e),e.displacementMap&&s.material.updateDistortionMap(\"displacement\",this,e),e.ambientOcclusionMap&&s.material.updateDistortionMap(\"ambientOcclusion\",this,e),e.metalnessMap&&s.material.updateDistortionMap(\"metalness\",this,e),e.roughnessMap&&s.material.updateDistortionMap(\"roughness\",this,e),this.updateEnvMap(e)},updateMaterial:function(e){var t,n=this.material;for(t in l(e,this.materialData),this.rendererSystem.applyColorCorrection(this.materialData.color),this.rendererSystem.applyColorCorrection(this.materialData.emissive),this.materialData)n[t]=this.materialData[t]},updateEnvMap:function(e){var t=this,n=this.material,i=e.envMap,l=e.sphericalEnvMap;if(!i&&!l||this.isLoadingEnvMap)return n.envMap=null,void(n.needsUpdate=!0);this.isLoadingEnvMap=!0,l?this.el.sceneEl.systems.material.loadTexture(l,{src:l},(function(e){t.isLoadingEnvMap=!1,e.mapping=r.EquirectangularReflectionMapping,n.envMap=e,s.material.handleTextureEvents(t.el,e),n.needsUpdate=!0})):a[i]?a[i].then((function(e){t.isLoadingEnvMap=!1,n.envMap=e,s.material.handleTextureEvents(t.el,e),n.needsUpdate=!0})):a[i]=new Promise((function(e){s.srcLoader.validateCubemapSrc(i,(function(i){o.load(i,(function(i){t.isLoadingEnvMap=!1,n.envMap=i,s.material.handleTextureEvents(t.el,i),e(i)}))}))}))}})},8878:(e,t,n)=>{var i=n(8309),r=n(365).registerSystem,s=\"data-aframe-default-camera\";e.exports.System=r(\"camera\",{init:function(){this.activeCameraEl=null,this.render=this.render.bind(this),this.unwrapRender=this.unwrapRender.bind(this),this.wrapRender=this.wrapRender.bind(this),this.initialCameraFound=!1,this.numUserCameras=0,this.numUserCamerasChecked=0,this.setupInitialCamera()},setupInitialCamera:function(){var e,t,n=this.sceneEl,i=this;if(!n.camera||n.camera.el.getAttribute(\"camera\").spectator)if((e=n.querySelectorAll(\"a-camera, :not(a-mixin)[camera]\")).length)for(this.numUserCameras=e.length,t=0;t\u003Ce.length;t++)e[t].addEventListener(\"object3dset\",(function(e){\"camera\"===e.detail.type&&i.checkUserCamera(this)})),e[t].isNode?e[t].load():e[t].addEventListener(\"nodeready\",(function(){this.load()}));else this.createDefaultCamera();else n.emit(\"cameraready\",{cameraEl:n.camera.el})},checkUserCamera:function(e){var t,n=this.el.sceneEl;this.numUserCamerasChecked++,this.initialCameraFound||((t=e.getAttribute(\"camera\")).active&&!t.spectator?(this.initialCameraFound=!0,n.camera=e.getObject3D(\"camera\"),n.emit(\"cameraready\",{cameraEl:e})):this.numUserCamerasChecked===this.numUserCameras&&this.createDefaultCamera())},createDefaultCamera:function(){var e,t=this.sceneEl;(e=document.createElement(\"a-entity\")).setAttribute(\"camera\",{active:!0}),e.setAttribute(\"position\",{x:0,y:i.DEFAULT_CAMERA_HEIGHT,z:0}),e.setAttribute(\"wasd-controls\",\"\"),e.setAttribute(\"look-controls\",\"\"),e.setAttribute(i.AFRAME_INJECTED,\"\"),e.addEventListener(\"object3dset\",(function(n){\"camera\"===n.detail.type&&(t.camera=n.detail.object,t.emit(\"cameraready\",{cameraEl:e}))})),t.appendChild(e)},disableActiveCamera:function(){var e;(e=this.sceneEl.querySelectorAll(\":not(a-mixin)[camera]\"))[e.length-1].setAttribute(\"camera\",\"active\",!0)},setActiveCamera:function(e){var t,n,i,r,o=this.activeCameraEl,a=this.sceneEl;if((r=e.getObject3D(\"camera\"))&&e!==this.activeCameraEl){var l=a.querySelector(\"[\"+s+\"]\");for(e!==(l&&l.querySelector(\":not(a-mixin)[camera]\"))&&function(e){var t;e.camera&&(t=e.querySelector(\"[\"+s+\"]\"))&&e.removeChild(t)}(a),this.activeCameraEl=e,this.activeCameraEl.play(),a.camera=r,o&&o.setAttribute(\"camera\",\"active\",!1),n=a.querySelectorAll(\":not(a-mixin)[camera]\"),i=0;i\u003Cn.length;i++)(t=n[i]).isEntity&&e!==t&&(t.setAttribute(\"camera\",\"active\",!1),t.pause());a.emit(\"camera-set-active\",{cameraEl:e})}},setSpectatorCamera:function(e){var t,n=this.spectatorCameraEl,i=this.sceneEl;e.getObject3D(\"camera\")&&e!==this.spectatorCameraEl&&(n&&n.setAttribute(\"camera\",\"spectator\",!1),t=this.spectatorCameraEl=e,i.addEventListener(\"enter-vr\",this.wrapRender),i.addEventListener(\"exit-vr\",this.unwrapRender),t.setAttribute(\"camera\",\"active\",!1),t.play(),i.emit(\"camera-set-spectator\",{cameraEl:e}))},disableSpectatorCamera:function(){this.spectatorCameraEl=void 0},wrapRender:function(){this.spectatorCameraEl&&!this.originalRender&&(this.originalRender=this.sceneEl.renderer.render,this.sceneEl.renderer.render=this.render)},unwrapRender:function(){this.originalRender&&(this.sceneEl.renderer.render=this.originalRender,this.originalRender=void 0)},render:function(e,t){var n,i,r=this.sceneEl;n=r.renderer.xr.enabled,this.originalRender.call(r.renderer,e,t),this.spectatorCameraEl&&!r.isMobile&&n&&(i=this.spectatorCameraEl.components.camera.camera,r.renderer.xr.enabled=!1,this.originalRender.call(r.renderer,e,i),r.renderer.xr.enabled=n)}})},5087:(e,t,n)=>{var i=n(4863).xZ,r=n(365).registerSystem;function s(e){var t=e.primitive,n=i[t]&&i[t].Geometry,r=new n;if(!n)throw new Error(\"Unknown geometry `\"+t+\"`\");return r.init(e),r.geometry}e.exports.System=r(\"geometry\",{init:function(){this.cache={},this.cacheCount={}},clearCache:function(){this.cache={},this.cacheCount={}},getOrCreateGeometry:function(e){var t,n,i=this.cache;return e.skipCache?s(e):(t=i[n=this.hash(e)],function(e,t){e[t]=void 0===e[t]?1:e[t]+1}(this.cacheCount,n),t||(t=s(e),i[n]=t,t))},unuseGeometry:function(e){var t,n=this.cache,i=this.cacheCount;e.skipCache||n[t=this.hash(e)]&&(function(e,t){e[t]--}(i,t),i[t]>0||(n[t].dispose(),delete n[t],delete i[t]))},hash:function(e){return JSON.stringify(e)}})},2776:(e,t,n)=>{var i=n(365).registerSystem,r=n(2666);e.exports.System=i(\"gltf-model\",{schema:{dracoDecoderPath:{default:\"https://www.gstatic.com/draco/versioned/decoders/1.5.5/\"},basisTranscoderPath:{default:\"\"},meshoptDecoderPath:{default:\"\"}},init:function(){this.update()},update:function(){var e,t=this.data.dracoDecoderPath,n=this.data.basisTranscoderPath,i=this.data.meshoptDecoderPath;!this.dracoLoader&&t&&(this.dracoLoader=new r.DRACOLoader,this.dracoLoader.setDecoderPath(t)),!this.ktx2Loader&&n&&(this.ktx2Loader=new r.KTX2Loader,this.ktx2Loader.setTranscoderPath(n).detectSupport(this.el.renderer)),!this.meshoptDecoder&&i&&(this.meshoptDecoder=(e=i,new Promise((function(t,n){var i=document.createElement(\"script\");document.body.appendChild(i),i.onload=t,i.onerror=n,i.async=!0,i.src=e}))).then((function(){return window.MeshoptDecoder.ready})).then((function(){return window.MeshoptDecoder})))},getDRACOLoader:function(){return this.dracoLoader},getKTX2Loader:function(){return this.ktx2Loader},getMeshoptDecoder:function(){return this.meshoptDecoder}})},7758:(e,t,n)=>{n(8878),n(5087),n(2776),n(7095),n(4829),n(730),n(2908),n(7644),n(9060),n(2602)},7095:(e,t,n)=>{var i=n(365).registerSystem,r=n(7629),s=n(8309),o=\"data-aframe-default-light\";e.exports.System=i(\"light\",{schema:{defaultLightsEnabled:{default:!0}},init:function(){this.defaultLights=!1,this.userDefinedLights=!1,this.sceneEl.addEventListener(\"loaded\",r(this.setupDefaultLights,this))},registerLight:function(e){e.hasAttribute(o)||(this.removeDefaultLights(),this.userDefinedLights=!0)},removeDefaultLights:function(){var e,t=this.sceneEl;if(this.defaultLights){e=document.querySelectorAll(\"[\"+o+\"]\");for(var n=0;n\u003Ce.length;n++)t.removeChild(e[n]);this.defaultLights=!1}},setupDefaultLights:function(){var e,t,n=this.sceneEl;this.userDefinedLights||this.defaultLights||!this.data.defaultLightsEnabled||((e=document.createElement(\"a-entity\")).setAttribute(\"light\",{color:\"#BBB\",type:\"ambient\"}),e.setAttribute(o,\"\"),e.setAttribute(s.AFRAME_INJECTED,\"\"),n.appendChild(e),(t=document.createElement(\"a-entity\")).setAttribute(\"light\",{color:\"#FFF\",intensity:.6,castShadow:!0}),t.setAttribute(\"position\",{x:-.5,y:1,z:1}),t.setAttribute(o,\"\"),t.setAttribute(s.AFRAME_INJECTED,\"\"),n.appendChild(t),this.defaultLights=!0)}})},4829:(e,t,n)=>{var i=n(365).registerSystem,r=n(2666),s=n(8903),o=n(819).isHLS,a=n(819).setTextureProperties,l=s.bind,c=s.debug,h=c(\"components:texture:error\"),u=new r.TextureLoader,d=c(\"components:texture:warn\");u.setCrossOrigin(\"anonymous\"),e.exports.System=i(\"material\",{init:function(){this.materials={},this.textureCounts={},this.textureCache={},this.sceneEl.addEventListener(\"materialtextureloaded\",l(this.onMaterialTextureLoaded,this))},clearTextureCache:function(){this.textureCache={}},loadTexture:function(e,t,n){var i=this;if(\"CANVAS\"!==e.tagName){if(\"VIDEO\"===e.tagName)return e.src||e.srcObject||e.childElementCount||d(\"Video element was defined with neither `source` elements nor `src` / `srcObject` attributes.\"),void this.loadVideo(e,t,n);s.srcLoader.validateSrc(e,(function(e){i.loadImage(e,t,n)}),(function(e){i.loadVideo(e,t,n)}))}else this.loadCanvas(e,t,n)},loadImage:function(e,t,n){var i=this.hash(t),s=this.textureCache;s[i]||(s[i]=function(e,t){return new Promise((function(n,i){function s(e){a(e,t),e.needsUpdate=!0,n(e)}\"string\"!=typeof e?s(new r.Texture(e)):u.load(e,s,(function(){}),(function(e){h(\"`$s` could not be fetched (Error code: %s; Response: %s)\",e.status,e.statusText)}))}))}(e,t)),s[i].then(n)},loadCanvas:function(e,t,n){var i;i=new r.CanvasTexture(e),a(i,t),n(i)},loadVideo:function(e,t,n){var i,s,l,c,h=this.textureCache;function u(e){e.texture.needsUpdate=!0,n(e.texture,e.videoEl)}if(\"string\"!=typeof e){if(l=e,h[i=this.hashVideo(t,l)])return void h[i].then(u);!function(e){e.autoplay=e.hasAttribute(\"autoplay\")&&\"false\"!==e.getAttribute(\"autoplay\"),e.controls=e.hasAttribute(\"controls\")&&\"false\"!==e.getAttribute(\"controls\"),\"false\"===e.getAttribute(\"loop\")&&e.removeAttribute(\"loop\"),\"false\"===e.getAttribute(\"preload\")&&(e.preload=\"none\"),e.crossOrigin=e.crossOrigin||\"anonymous\",e.setAttribute(\"playsinline\",\"\"),e.setAttribute(\"webkit-playsinline\",\"\")}(l)}l=l||function(e,t,n){var i=document.createElement(\"video\");return i.width=t,i.height=n,i.setAttribute(\"playsinline\",\"\"),i.setAttribute(\"webkit-playsinline\",\"\"),i.autoplay=!0,i.loop=!0,i.crossOrigin=\"anonymous\",i.addEventListener(\"error\",(function(){d(\"`$s` is not a valid video\",e)}),!0),i.src=e,i}(e,t.width,t.height),h[i=this.hashVideo(t,l)]?h[i].then(u):((s=new r.VideoTexture(l)).minFilter=r.LinearFilter,a(s,t),this.sceneEl.isIOS&&o(l.src||l.getAttribute(\"src\"),l.type||l.getAttribute(\"type\"))&&(s.format=r.RGBAFormat,s.needsCorrectionBGRA=!0,s.flipY=!1,s.needsCorrectionFlipY=!0),c={texture:s,videoEl:l},h[i]=Promise.resolve(c),u(c))},hash:function(e){return e.src.tagName&&((e=s.extendDeep({},e)).src=e.src.src),JSON.stringify(e)},hashVideo:function(e,t){return function(e,t){var n,i,r,s=t.getAttribute(\"id\");if(s)return s;for(i=\"\",r=e||{},n=0;n\u003Ct.attributes.length;n++)r[t.attributes[n].name]=t.attributes[n].value;return Object.keys(r).sort().forEach((function(e){i+=e+\":\"+r[e]+\";\"})),i}(e,t)},registerMaterial:function(e){this.materials[e.uuid]=e},unregisterMaterial:function(e){delete this.materials[e.uuid];var t=this.textureCounts;Object.keys(e).filter((function(t){return e[t]&&e[t].isTexture})).forEach((function(n){t[e[n].uuid]--,t[e[n].uuid]\u003C=0&&e[n].dispose()}))},updateMaterials:function(e){var t=this.materials;Object.keys(t).forEach((function(e){t[e].needsUpdate=!0}))},onMaterialTextureLoaded:function(e){this.textureCounts[e.detail.texture.uuid]||(this.textureCounts[e.detail.texture.uuid]=0),this.textureCounts[e.detail.texture.uuid]++}})},730:(e,t,n)=>{var i=n(365).registerSystem,r=n(8903),s=n(2666),o=(0,r.debug)(\"components:renderer:warn\");e.exports.System=i(\"renderer\",{schema:{antialias:{default:\"auto\",oneOf:[\"true\",\"false\",\"auto\"]},highRefreshRate:{default:r.device.isOculusBrowser()},logarithmicDepthBuffer:{default:\"auto\",oneOf:[\"true\",\"false\",\"auto\"]},maxCanvasWidth:{default:1920},maxCanvasHeight:{default:1920},physicallyCorrectLights:{default:!1},exposure:{default:1,if:{toneMapping:[\"ACESFilmic\",\"linear\",\"reinhard\",\"cineon\"]}},toneMapping:{default:\"no\",oneOf:[\"no\",\"ACESFilmic\",\"linear\",\"reinhard\",\"cineon\"]},precision:{default:\"high\",oneOf:[\"high\",\"medium\",\"low\"]},sortObjects:{default:!1},colorManagement:{default:!1},gammaOutput:{default:!1},alpha:{default:!0},foveationLevel:{default:1}},init:function(){var e=this.data,t=this.el,n=this.data.toneMapping.charAt(0).toUpperCase()+this.data.toneMapping.slice(1),i=t.renderer;i.sortObjects=e.sortObjects,i.physicallyCorrectLights=e.physicallyCorrectLights,i.toneMapping=s[n+\"ToneMapping\"],(e.colorManagement||e.gammaOutput)&&(i.outputEncoding=s.sRGBEncoding,e.gammaOutput&&o('Property `gammaOutput` is deprecated. Use `renderer=\"colorManagement: true;\"` instead.')),t.hasAttribute(\"antialias\")&&o('Component `antialias` is deprecated. Use `renderer=\"antialias: true\"` instead.'),t.hasAttribute(\"logarithmicDepthBuffer\")&&o('Component `logarithmicDepthBuffer` is deprecated. Use `renderer=\"logarithmicDepthBuffer: true\"` instead.')},update:function(){var e=this.data,t=this.el.renderer,n=this.data.toneMapping.charAt(0).toUpperCase()+this.data.toneMapping.slice(1);t.toneMapping=s[n+\"ToneMapping\"],t.toneMappingExposure=e.exposure,t.xr.setFoveation(e.foveationLevel)},applyColorCorrection:function(e){this.data.colorManagement&&e&&(e.isColor?e.convertSRGBToLinear():e.isTexture&&(e.encoding=s.sRGBEncoding))}})},2908:(e,t,n)=>{var i=n(365).registerSystem,r=n(2666),s={basic:r.BasicShadowMap,pcf:r.PCFShadowMap,pcfsoft:r.PCFSoftShadowMap};e.exports.System=i(\"shadow\",{schema:{enabled:{default:!0},autoUpdate:{default:!0},type:{default:\"pcf\",oneOf:[\"basic\",\"pcf\",\"pcfsoft\"]}},init:function(){var e=this.sceneEl,t=this.data;this.shadowMapEnabled=!1,e.renderer&&(e.renderer.shadowMap.type=s[t.type],e.renderer.shadowMap.autoUpdate=t.autoUpdate,this.setShadowMapEnabled(this.shadowMapEnabled))},update:function(e){e.enabled!==this.data.enabled&&this.setShadowMapEnabled(this.data.enabled)},setShadowMapEnabled:function(e){var t=this.sceneEl.renderer;this.shadowMapEnabled=this.data.enabled&&e,t&&(t.shadowMap.enabled=this.shadowMapEnabled)}})},7644:(e,t,n)=>{var i=n(365).registerSystem,r=n(8903),s=r.device.isWebXRAvailable;e.exports.System=i(\"tracked-controls-webvr\",{init:function(){var e=this;this.controllers=[],this.isChrome=-1!==navigator.userAgent.indexOf(\"Chrome\"),this.updateControllerList(),this.throttledUpdateControllerList=r.throttle(this.updateControllerList,500,this),s||navigator.getVRDisplays&&this.sceneEl.addEventListener(\"enter-vr\",(function(){navigator.getVRDisplays().then((function(t){t.length&&(e.vrDisplay=t[0])}))}))},tick:function(){this.isChrome?this.updateControllerList():this.throttledUpdateControllerList()},updateControllerList:function(){var e,t,n,i,r=this.controllers;if(t=navigator.getGamepads&&navigator.getGamepads()){for(i=r.length,r.length=0,n=0;n\u003Ct.length;++n)(e=t[n])&&e.pose&&r.push(e);r.length!==i&&this.el.emit(\"controllersupdated\",void 0,!1)}}})},9060:(e,t,n)=>{var i=n(365).registerSystem,r=n(8903);e.exports.System=i(\"tracked-controls-webxr\",{init:function(){this.controllers=[],this.oldControllers=[],this.oldControllersLength=0,this.throttledUpdateControllerList=r.throttle(this.updateControllerList,500,this),this.updateReferenceSpace=this.updateReferenceSpace.bind(this),this.el.addEventListener(\"enter-vr\",this.updateReferenceSpace),this.el.addEventListener(\"exit-vr\",this.updateReferenceSpace)},tick:function(){this.throttledUpdateControllerList()},updateReferenceSpace:function(){var e=this,t=this.el.xrSession;if(!t)return this.referenceSpace=void 0,this.controllers=[],void(this.oldControllersLength>0&&(this.oldControllersLength=0,this.el.emit(\"controllersupdated\",void 0,!1)));var n=e.el.sceneEl.systems.webxr.sessionReferenceSpaceType;t.requestReferenceSpace(n).then((function(t){e.referenceSpace=t})).catch((function(t){throw e.el.sceneEl.systems.webxr.warnIfFeatureNotRequested(n,'tracked-controls-webxr uses reference space \"'+n+'\".'),t}))},updateControllerList:function(){var e,t=this.el.xrSession,n=this.oldControllers;if(!t){if(0===this.oldControllersLength)return;return this.oldControllersLength=0,this.controllers=[],void this.el.emit(\"controllersupdated\",void 0,!1)}if(t.inputSources){if(this.controllers=t.inputSources,this.oldControllersLength===this.controllers.length){var i=!0;for(e=0;e\u003Cthis.controllers.length;++e)if(this.controllers[e]!==n[e]||this.controllers[e].gamepad!==n[e].gamepad){i=!1;break}if(i)return}for(n.length=0,e=0;e\u003Cthis.controllers.length;e++)n.push(this.controllers[e]);this.oldControllersLength=this.controllers.length,this.el.emit(\"controllersupdated\",void 0,!1)}}})},2602:(e,t,n)=>{var i=n(365).registerSystem,r=n(8903).debug(\"systems:webxr:warn\");e.exports.System=i(\"webxr\",{schema:{referenceSpaceType:{type:\"string\",default:\"local-floor\"},requiredFeatures:{type:\"array\",default:[\"local-floor\"]},optionalFeatures:{type:\"array\",default:[\"bounded-floor\"]},overlayElement:{type:\"selector\"}},update:function(){var e=this.data;this.sessionConfiguration={requiredFeatures:e.requiredFeatures,optionalFeatures:e.optionalFeatures},this.sessionReferenceSpaceType=e.referenceSpaceType,e.overlayElement&&(e.overlayElement.classList.remove(\"a-dom-overlay\"),e.optionalFeatures.includes(\"dom-overlay\")||(e.optionalFeatures.push(\"dom-overlay\"),this.el.setAttribute(\"webxr\",e)),this.warnIfFeatureNotRequested(\"dom-overlay\"),this.sessionConfiguration.domOverlay={root:e.overlayElement},e.overlayElement.classList.add(\"a-dom-overlay\"))},wasFeatureRequested:function(e){return\"viewer\"===e||\"local\"===e||!(!this.sessionConfiguration.requiredFeatures.includes(e)&&!this.sessionConfiguration.optionalFeatures.includes(e))},warnIfFeatureNotRequested:function(e,t){this.wasFeatureRequested(e)||r((t?t+\" \":\"\")+'Please add the feature \"'+e+\"\\\" to a-scene's webxr system options in requiredFeatures/optionalFeatures.\")}})},7629:e=>{e.exports=function(e,t){return n=Array.prototype.slice.call(arguments,2),function(){var i=n.concat(Array.prototype.slice.call(arguments,0));return e.apply(t,i)};var n}},395:(e,t,n)=>{var i=n(4219),r=n(7347),s=i(\"utils:coordinates:warn\"),o=[\"x\",\"y\",\"z\",\"w\"],a=/^\\s*((-?\\d*\\.{0,1}\\d+(e-?\\d+)?)\\s+){2,3}(-?\\d*\\.{0,1}\\d+(e-?\\d+)?)\\s*$/;e.exports.regex=a;var l=\"object\",c=/\\s+/g;function h(e){return a.test(e)}function u(e){return null!=e&&e.constructor===String?parseFloat(e,10):e}e.exports.parse=function(e,t){var n,i,s,a,h,d,p,A,f;if(e&&e instanceof Object)return d=void 0===e.x?t&&t.x:e.x,p=void 0===e.y?t&&t.y:e.y,A=void 0===e.z?t&&t.z:e.z,f=void 0===e.w?t&&t.w:e.w,null!=d&&(e.x=u(d)),null!=p&&(e.y=u(p)),null!=A&&(e.z=u(A)),null!=f&&(e.w=u(f)),e;if(null==e)return typeof t===l?r({},t):t;for(n=e.trim().split(c),h={},a=0;a\u003Co.length;a++)if(s=o[a],n[a])h[s]=parseFloat(n[a],10);else{if(void 0===(i=t&&t[s]))continue;h[s]=u(i)}return h},e.exports.stringify=function(e){var t;return typeof e!==l?e:(t=e.x+\" \"+e.y,null!=e.z&&(t+=\" \"+e.z),null!=e.w&&(t+=\" \"+e.w),t)},e.exports.isCoordinates=h,e.exports.isCoordinate=function(e){return s(\"`AFRAME.utils.isCoordinate` has been renamed to `AFRAME.utils.isCoordinates`\"),h(e)},e.exports.toVector3=function(e){return new THREE.Vector3(e.x,e.y,e.z)}},4219:(e,t,n)=>{var i=n(2790),r=n(695),s=n(7347),o={colors:{debug:\"gray\",error:\"red\",info:\"gray\",warn:\"orange\"}},a=function(e){var t=r(e);return t.color=function(e){var t=function(e){var t=e.split(\":\");return t[t.length-1]}(e);return o.colors&&o.colors[t]||null}(e),t};s(a,r);var l=function(){try{return window.localStorage}catch(e){}}();l&&(parseInt(l.logs,10)||\"true\"===l.logs)?a.enable(\"*\"):a.enable(\"*:error,*:info,*:warn\"),i.browser&&(window.logs=a),e.exports=a},879:(e,t,n)=>{var i,r=n(2790),s=n(695)(\"device:error\"),o=!1,a=!1,l=e.exports.isWebXRAvailable=!window.debug&&void 0!==navigator.xr;if(window.addEventListener(\"vrdisplayactivate\",(function(e){var t;l||(t=document.createElement(\"canvas\"),i=e.display,t.getContext(\"webgl\",{}),i.requestPresent([{source:t}]).then((function(){}),(function(){})))})),l){var c=function(){var e=document.querySelector(\"a-scene\");e?e.hasLoaded?e.components[\"vr-mode-ui\"].updateEnterInterfaces():e.addEventListener(\"loaded\",c):window.addEventListener(\"DOMContentLoaded\",c)},h=function(e){s(\"WebXR session support error: \"+e.message)};navigator.xr.isSessionSupported?(navigator.xr.isSessionSupported(\"immersive-vr\").then((function(e){o=e,c()})).catch(h),navigator.xr.isSessionSupported(\"immersive-ar\").then((function(e){a=e,c()})).catch((function(){}))):navigator.xr.supportsSession?(navigator.xr.supportsSession(\"immersive-vr\").then((function(){o=!0,c()})).catch(h),navigator.xr.supportsSession(\"immersive-ar\").then((function(){a=!0,c()})).catch((function(){}))):s(\"WebXR has neither isSessionSupported or supportsSession?!\")}else navigator.getVRDisplays&&navigator.getVRDisplays().then((function(e){var t=document.querySelector(\"a-scene\");i=e.length&&e[0],t&&t.emit(\"displayconnected\",{vrDisplay:i})}));function u(){return i}e.exports.getVRDisplay=u,e.exports.checkHeadsetConnected=function(){return o||a||!!u()},e.exports.checkARSupport=function(){return a},e.exports.checkVRSupport=function(){return o};var d,p,A=(p=!1,d=window.navigator.userAgent||window.navigator.vendor||window.opera,(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(d)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(d.substr(0,4)))&&(p=!0),(m()||f()||E())&&(p=!0),y()&&(p=!1),function(){return p});function f(e){var t=e||window.navigator.userAgent;return/ipad|Nexus (7|9)|xoom|sch-i800|playbook|tablet|kindle/i.test(t)}function m(){return/iPad|iPhone|iPod/.test(window.navigator.platform)}function g(){return/(OculusBrowser)/i.test(window.navigator.userAgent)}function v(){return/(Mobile VR)/i.test(window.navigator.userAgent)}function y(){return g()||v()}function E(){return/R7 Build/.test(window.navigator.userAgent)}e.exports.isMobile=A,e.exports.isTablet=f,e.exports.isIOS=m,e.exports.isMobileDeviceRequestingDesktopSite=function(){return!A()&&!y()&&void 0!==window.orientation},e.exports.isOculusBrowser=g,e.exports.isFirefoxReality=v,e.exports.isMobileVR=y,e.exports.isR7=E,e.exports.isLandscape=function(){var e=window.orientation;return E()&&(e+=90),90===e||-90===e},e.exports.isBrowserEnvironment=!(r&&!r.browser),e.exports.isNodeEnvironment=!e.exports.isBrowserEnvironment},126:e=>{var t={};function n(e,n){return t[n=n||\".\"]||(t[n]={}),-1!==e.indexOf(n)?t[n][e]=e.split(n):t[n][e]=e,t[n][e]}e.exports.getComponentPropertyPath=n,e.exports.propertyPathCache=t,e.exports.getComponentProperty=function(e,t,i){var r;return i=i||\".\",-1!==t.indexOf(i)?(r=n(t,i)).constructor===String?e.getAttribute(r):e.getAttribute(r[0])[r[1]]:e.getAttribute(t)},e.exports.setComponentProperty=function(e,t,i,r){var s;r=r||\".\",-1===t.indexOf(r)?e.setAttribute(t,i):(s=n(t,r)).constructor===String?e.setAttribute(s,i):e.setAttribute(s[0],s[1],i)}},5607:e=>{e.exports=function(e){var t=e.style.width,n=e.style.height;e.style.width=parseInt(t,10)+1+\"px\",e.style.height=parseInt(n,10)+1+\"px\",setTimeout((function(){e.style.width=t,e.style.height=n}),200)}},8903:(e,t,n)=>{var i=n(4219),r=n(1900),s=n(879),o=n(7347),a=n(3940),l=i(\"utils:warn\");e.exports.bind=n(7629),e.exports.coordinates=n(395),e.exports.debug=i,e.exports.device=s,e.exports.entity=n(126),e.exports.forceCanvasResizeSafariMobile=n(5607),e.exports.isIE11=n(8302),e.exports.material=n(819),e.exports.objectPool=a,e.exports.split=n(3836).split,e.exports.styleParser=n(2498),e.exports.trackedControls=n(6600),e.exports.checkHeadsetConnected=function(){return l(\"`utils.checkHeadsetConnected` has moved to `utils.device.checkHeadsetConnected`\"),s.checkHeadsetConnected(arguments)},e.exports.isGearVR=e.exports.device.isGearVR=function(){l(\"`utils.isGearVR` has been deprecated, use `utils.device.isMobileVR`\")},e.exports.isIOS=function(){return l(\"`utils.isIOS` has moved to `utils.device.isIOS`\"),s.isIOS(arguments)},e.exports.isOculusGo=e.exports.device.isOculusGo=function(){l(\"`utils.isOculusGo` has been deprecated, use `utils.device.isMobileVR`\")},e.exports.isMobile=function(){return l(\"`utils.isMobile has moved to `utils.device.isMobile`\"),s.isMobile(arguments)},e.exports.throttle=function(t,n,i){var r;return i&&(t=e.exports.bind(t,i)),function(){var e=Date.now(),i=void 0===r?n:e-r;(void 0===r||i>=n)&&(r=e,t.apply(null,arguments))}},e.exports.throttleLeadingAndTrailing=function(t,n,i){var r,s;return i&&(t=e.exports.bind(t,i)),function(){var e=Date.now(),i=void 0===r?n:e-r,o=arguments;void 0===r||i>=n?(clearTimeout(s),r=e,t.apply(null,o)):(clearTimeout(s),s=setTimeout((function(){r=Date.now(),t.apply(this,o)}),n-i))}},e.exports.throttleTick=function(t,n,i){var r;return i&&(t=e.exports.bind(t,i)),function(e,i){var s=void 0===r?i:e-r;(void 0===r||s>=n)&&(r=e,t(e,s))}},e.exports.debounce=function(e,t,n){var i;return function(){var r=this,s=arguments,o=function(){i=null,n||e.apply(r,s)},a=n&&!i;clearTimeout(i),i=setTimeout(o,t),a&&e.apply(r,s)}},e.exports.extend=o,e.exports.extendDeep=r,e.exports.clone=function(e){return JSON.parse(JSON.stringify(e))};var c,h,u=(c=a.createPool((function(){return[]})),function(e,t){var n,i,r,s,o,a;if(void 0===e||void 0===t||null===e||null===t||!(e&&t&&e.constructor===Object&&t.constructor===Object||e.constructor===Array&&t.constructor===Array))return e===t;for(n in i=c.use(),r=c.use(),i.length=0,r.length=0,e)i.push(n);for(n in t)r.push(n);if(i.length!==r.length)return c.recycle(i),c.recycle(r),!1;for(s=0;s\u003Ci.length;++s)if(o=e[i[s]],a=t[i[s]],\"object\"==typeof o||\"object\"==typeof a||Array.isArray(o)&&Array.isArray(a)){if(o===a)continue;if(!u(o,a))return c.recycle(i),c.recycle(r),!1}else if(o!==a)return c.recycle(i),c.recycle(r),!1;return c.recycle(i),c.recycle(r),!0});e.exports.deepEqual=u,e.exports.diff=(h=[],function(e,t,n){var i,r,s,o,a,l,c;for(a in o=n||{},h.length=0,e)h.push(a);if(!t)return o;for(s in t)-1===h.indexOf(s)&&h.push(s);for(l=0;l\u003Ch.length;l++)i=e[a=h[l]],r=t[a],((c=i&&r&&i.constructor===Object&&r.constructor===Object)&&!u(i,r)||!c&&i!==r)&&(o[a]=r);return o}),e.exports.shouldCaptureKeyEvent=function(e){return!e.metaKey&&document.activeElement===document.body},e.exports.splitString=function(e,t){void 0===t&&(t=\" \");var n=new RegExp(t,\"g\");return(e=(e||\"\").replace(n,t)).split(t)},e.exports.getElData=function(e,t){t=t||{};var n={};return Object.keys(t).forEach((function(t){e.hasAttribute(t)&&(n[t]=e.getAttribute(t))})),n},e.exports.getUrlParameter=function(e){e=e.replace(/[\\[]/,\"\\\\[\").replace(/[\\]]/,\"\\\\]\");var t=new RegExp(\"[\\\\?&]\"+e+\"=([^]*)\").exec(location.search);return null===t?\"\":decodeURIComponent(t[1].replace(/\\+/g,\" \"))},e.exports.isIframed=function(){return window.top!==window.self},e.exports.findAllScenes=function(e){for(var t=[],n=e.getElementsByTagName(\"*\"),i=0,r=n.length;i\u003Cr;i++)n[i].isScene&&t.push(n[i]);return t},e.exports.srcLoader=n(6375)},9609:()=>{window.addEventListener(\"orientationchange\",(function(){document.documentElement.style.height=\"initial\",setTimeout((function(){document.documentElement.style.height=\"100%\",setTimeout((function(){window.scrollTo(0,1)}),500)}),500)}))},8302:e=>{var t,n;e.exports=11===(t=-1,n=navigator.userAgent,\"Microsoft Internet Explorer\"===navigator.appName?null!=new RegExp(\"MSIE ([0-9]{1,}[\\\\.0-9]{0,})\").exec(n)&&(t=parseFloat(RegExp.$1)):\"Netscape\"===navigator.appName&&null!=new RegExp(\"Trident/.*rv:([0-9]{1,}[\\\\.0-9]{0,})\").exec(n)&&(t=parseFloat(RegExp.$1)),t)},6818:e=>{e.exports=function(e){return/(iphone|ipod|ipad).*os.(7_|8_|9_)/i.test(e)}},819:(e,t,n)=>{var i=n(2666),r=[\"application/x-mpegurl\",\"application/vnd.apple.mpegurl\"],s=new Set([\"emissiveMap\",\"envMap\",\"map\",\"specularMap\"]);function o(e,t){var n=t.offset||{x:0,y:0},r=t.repeat||{x:1,y:1};!!t.npot&&(e.wrapS=i.ClampToEdgeWrapping,e.wrapT=i.ClampToEdgeWrapping,e.magFilter=i.LinearFilter,e.minFilter=i.LinearFilter),1===r.x&&1===r.y||(e.wrapS=i.RepeatWrapping,e.wrapT=i.RepeatWrapping,e.repeat.set(r.x,r.y)),0===n.x&&0===n.y||e.offset.set(n.x,n.y)}function a(e,t){t&&(e.emit(\"materialtextureloaded\",{src:t.image,texture:t}),t.image&&\"VIDEO\"===t.image.tagName&&(t.image.addEventListener(\"loadeddata\",(function(){e.components&&e.components.material&&(t.needsCorrectionBGRA&&t.needsCorrectionFlipY&&-1!==[\"standard\",\"flat\"].indexOf(e.components.material.data.shader)&&e.setAttribute(\"material\",\"shader\",\"ios10hls\"),e.emit(\"materialvideoloadeddata\",{src:t.image,texture:t}))})),t.image.addEventListener(\"ended\",(function(){e.emit(\"materialvideoended\",{src:t.image,texture:t})}))))}e.exports.setTextureProperties=o,e.exports.updateMapMaterialFromData=function(e,t,n,r){var l=n.el,c=n.material,h=l.sceneEl.systems.renderer,u=r[t];if(n.materialSrcs||(n.materialSrcs={}),!u)return delete n.materialSrcs[e],void d(null);function d(t){c[e]=t,t&&s.has(e)&&h.applyColorCorrection(t),c.needsUpdate=!0,a(l,t)}u===n.materialSrcs[e]&&c[e]?o(c[e],r):(n.materialSrcs[e]=u,u instanceof i.Texture?d(u):l.sceneEl.systems.material.loadTexture(u,{src:u,repeat:r.repeat,offset:r.offset,npot:r.npot},(function(t){n.materialSrcs[e]===u&&d(t)})))},e.exports.updateMap=function(t,n){return e.exports.updateMapMaterialFromData(\"map\",\"src\",t,n)},e.exports.updateDistortionMap=function(e,t,n){var i=e;\"ambientOcclusion\"===e&&(i=\"ao\");var r=t.el,l=t.material,c=r.sceneEl.systems.renderer,h=n[e+\"Map\"],u={};if(u.src=h,u.offset=n[e+\"TextureOffset\"],u.repeat=n[e+\"TextureRepeat\"],u.wrap=n[e+\"TextureWrap\"],h){if(h===t[e+\"TextureSrc\"])return;return t[e+\"TextureSrc\"]=h,void r.sceneEl.systems.material.loadTexture(h,u,d)}function d(e){var t=i+\"Map\";l[t]=e,e&&s.has(t)&&c.applyColorCorrection(e),e&&o(e,n),l.needsUpdate=!0,a(r,e)}l.map&&d(null)},e.exports.handleTextureEvents=a,e.exports.isHLS=function(e,t){return!(!t||!r.includes(t.toLowerCase()))||!!(e&&e.toLowerCase().indexOf(\".m3u8\")>0)}},3437:e=>{function t(e,t,n){return(t.dot(e)-t.dot(n))/t.length()}e.exports.distanceOfPointFromPlane=t,e.exports.nearestPointInPlane=function(e,n,i,r){var s=t(e,n,i);return r.copy(n),r.multiplyScalar(s),r.add(i),r}},3940:e=>{var t=Object.freeze(Object.create(null));function n(){return{}}function i(e){var t;if(e&&e.constructor===Object)for(t in e)e[t]=void 0}e.exports.createPool=function(e){var r=[],s=null;function o(t){var n,i;if((t=void 0===t?r.length:t)>0&&null==s&&(s=0),t>0)for(n=r.length,r.length+=Number(t),i=n;i\u003Cr.length;i++)r[i]=e();return r.length}return e=e||n,{grow:o,pool:r,recycle:function(e){e instanceof Object&&(null!==s&&-1!==s?r[--s]=e:r[r.length]=e)},size:function(){return r.length},use:function(){var e;return null!==s&&s!==r.length||o(r.length||5),e=r[s],r[s++]=t,i(e),e}}},e.exports.clearObject=i,e.exports.removeUnusedKeys=function(e,t){var n;if(e&&e.constructor===Object)for(n in e)n in t||delete e[n]}},3836:e=>{var t;e.exports.split=(t={},function(e,n){return n in t||(t[n]={}),e in t[n]||(t[n][e]=e.split(n)),t[n][e]})},6375:(e,t,n)=>{var i=n(4219)(\"utils:src-loader:warn\");function r(e,t,n){!function(e,t){var n;e.tagName?t(\"IMG\"===e.tagName):((n=new XMLHttpRequest).open(\"HEAD\",e),n.addEventListener(\"load\",(function(i){var r;n.status>=200&&n.status\u003C300?null==(r=n.getResponseHeader(\"Content-Type\"))?o(e,t):r.startsWith(\"image\")?t(!0):t(!1):o(e,t),n.abort()})),n.send())}(e,(function(i){i?t(e):n(e)}))}function s(e){var t=e.match(/\\url\\((.+)\\)/);if(t)return t[1]}function o(e,t){var n=new Image;n.addEventListener(\"load\",(function(){t(!0)})),n.addEventListener(\"error\",(function(){t(!1)})),n.src=e}e.exports={parseUrl:s,validateSrc:r,validateCubemapSrc:function(e,t){var n,o,a,l=\"\",c=[];for(o=0;o\u003C5;o++)l+=\"(url\\\\((?:[^\\\\)]+)\\\\),\\\\s*)\";function h(e){c.push(e),6===c.length&&t(c)}if(l+=\"(url\\\\((?:[^\\\\)]+)\\\\)\\\\s*)\",a=e.match(new RegExp(l)))for(o=1;o\u003C7;o++)r(s(a[o]),h);else if(n=function(e){try{var t=document.querySelector(e);return t||i('No element was found matching the selector: \"%s\"',e),t}catch(t){return void i('\"%s\" is not a valid selector',e)}}(e))return\"A-CUBEMAP\"===n.tagName&&n.srcs?t(n.srcs):void i('Selector \"%s\" does not point to \u003Ca-cubemap>',e)}}},2498:e=>{var t=/-([a-z])/g;function n(e){return e.replace(t,a)}function i(e){var t,i;for(i in e)i!==(t=n(i))&&(e[t]=e[i],delete e[i]);return e}e.exports.parse=function(e,t){var n;return\"string\"!=typeof e?e:(n=function(e,t){var n,i,r,s,a,l;for(t=t||{},n=o(e),i=0;i\u003Cn.length;i++)(r=n[i])&&(s=r.indexOf(\":\"),a=r.substr(0,s).trim(),l=r.substr(s+1).trim(),t[a]=l);return t}(e,t),n[\"\"]?e:i(n))},e.exports.stringify=function(e){return\"string\"==typeof e?e:function(e){var t,n=0,i=0,r=\"\";for(t in e)n++;for(t in e)r+=t+\": \"+e[t],i\u003Cn-1&&(r+=\"; \"),i++;return r}(e)},e.exports.toCamelCase=n,e.exports.transformKeysToCamelCase=i;var r,s,o=(r=[],s=/url\\([^)]+$/,function(e){var t,n=\"\",i=0;for(r.length=0;i\u003Ce.length;)-1===(t=e.indexOf(\";\",i))&&(t=e.length),n+=e.substring(i,t),s.test(n)?(n+=\";\",i=t+1):(r.push(n.trim()),n=\"\",i=t+1);return r});function a(e){return e[1].toUpperCase()}},6600:(e,t,n)=>{var i=n(8309).DEFAULT_HANDEDNESS,r=[\"x\",\"y\",\"z\",\"w\"];function s(e,t,n){var i,r,s=e.el.sceneEl,o=n.index||0;return!!(t&&(r=s&&s.systems[\"tracked-controls-webvr\"])&&(i=r.controllers).length&&a(i,null,t,n.hand,o))}function o(e,t,n){var i,r=e.el.sceneEl,s=r&&r.systems[\"tracked-controls-webxr\"];return!!s&&!(!(i=s.controllers)||!i.length)&&l(i,t,n.hand,n.index,n.iterateControllerProfiles,n.handTracking)}function a(e,t,n,r,s){var o,a,l=0;for(a=0;a\u003Ce.length;a++)if(o=e[a],(!n||o.id.startsWith(n))&&(n||o.id===t)&&(!r||!o.hand||r===o.hand)){if(!r||o.hand)return o;if(l===2*s+(r===i?0:1))return o;++l}}function l(e,t,n,i,r,s){var o,a,l,c,h=!1;for(o=0;o\u003Ce.length;o++){if(c=(l=e[o]).profiles,s)h=l.hand;else if(r)for(a=0;a\u003Cc.length&&!(h=c[a].startsWith(t));a++);else h=c.length>0&&c[0].startsWith(t);if(h)if(\"right\"===l.handedness||\"left\"===l.handedness){if(l.handedness===n)return e[o]}else if(o===i)return e[o]}}e.exports.checkControllerPresentAndSetup=function(e,t,n){var i,r,a=e.el,l=a.sceneEl.hasWebXR;if(r=!!(i=(l?o:s)(e,t,n)),!e.controllerPresent||e.controllerEventsActive||l||e.addEventListeners(),r===e.controllerPresent)return r;e.controllerPresent=r,r?(e.addEventListeners(),e.injectTrackedControls(i),a.emit(\"controllerconnected\",{name:e.name,component:e})):(e.removeEventListeners(),a.emit(\"controllerdisconnected\",{name:e.name,component:e}))},e.exports.isControllerPresentWebVR=s,e.exports.isControllerPresentWebXR=o,e.exports.findMatchingControllerWebVR=a,e.exports.findMatchingControllerWebXR=l,e.exports.emitIfAxesChanged=function(e,t,n){var i,s,o,a,l;for(s in t){for(i=t[s],o=!1,l=0;l\u003Ci.length;l++)n.detail.changed[i[l]]&&(o=!0);if(o){for(a={},l=0;l\u003Ci.length;l++)a[r[l]]=n.detail.axis[i[l]];e.el.emit(s+\"moved\",a)}}},e.exports.onButtonEvent=function(e,t,n,i){var r=(i?n.mapping[i]:n.mapping).buttons[e];n.el.emit(r+t),n.updateModel&&n.updateModel(r,t)}},6898:()=>{THREE.DeviceOrientationControls=function(e){var t=this;this.object=e,this.object.rotation.reorder(\"YXZ\"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0,this.alphaOffset=0;var n,i,r,s,o=function(e){t.deviceOrientation=e},a=function(){t.screenOrientation=window.orientation||0},l=(n=new THREE.Vector3(0,0,1),i=new THREE.Euler,r=new THREE.Quaternion,s=new THREE.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5)),function(e,t,o,a,l){i.set(o,t,-a,\"YXZ\"),e.setFromEuler(i),e.multiply(s),e.multiply(r.setFromAxisAngle(n,-l))});this.connect=function(){a(),window.addEventListener(\"orientationchange\",a,!1),window.addEventListener(\"deviceorientation\",o,!1),t.enabled=!0},this.disconnect=function(){window.removeEventListener(\"orientationchange\",a,!1),window.removeEventListener(\"deviceorientation\",o,!1),t.enabled=!1},this.update=function(){if(!1!==t.enabled){var e=t.deviceOrientation;if(e){var n=e.alpha?THREE.MathUtils.degToRad(e.alpha)+t.alphaOffset:0,i=e.beta?THREE.MathUtils.degToRad(e.beta):0,r=e.gamma?THREE.MathUtils.degToRad(e.gamma):0,s=t.screenOrientation?THREE.MathUtils.degToRad(t.screenOrientation):0;l(t.object.quaternion,n,i,r,s)}}},this.dispose=function(){t.disconnect()},this.connect()}},9625:e=>{window.glStats=function(){var e=null,t=0,n=0,i=0,r=0,s=0,o=0,a=0;function l(e,t){return function(){t.apply(this,arguments),e.apply(this,arguments)}}return WebGLRenderingContext.prototype.drawArrays=l(WebGLRenderingContext.prototype.drawArrays,(function(){t++,arguments[0]==this.POINTS?o+=arguments[2]:s+=arguments[2]})),WebGLRenderingContext.prototype.drawElements=l(WebGLRenderingContext.prototype.drawElements,(function(){n++,r+=arguments[1]/3,s+=arguments[1]})),WebGLRenderingContext.prototype.useProgram=l(WebGLRenderingContext.prototype.useProgram,(function(){i++})),WebGLRenderingContext.prototype.bindTexture=l(WebGLRenderingContext.prototype.bindTexture,(function(){a++})),{update:function(){e(\"allcalls\").set(t+n),e(\"drawElements\").set(n),e(\"drawArrays\").set(t),e(\"bindTexture\").set(a),e(\"useProgram\").set(i),e(\"glfaces\").set(r),e(\"glvertices\").set(s),e(\"glpoints\").set(o)},start:function(){t=0,n=0,i=0,r=0,s=0,o=0,a=0},end:function(){},attach:function(t){e=t},values:{allcalls:{over:3e3,caption:\"Calls (hook)\"},drawelements:{caption:\"drawElements (hook)\"},drawarrays:{caption:\"drawArrays (hook)\"}},groups:[{caption:\"WebGL\",values:[\"allcalls\",\"drawelements\",\"drawarrays\",\"useprogram\",\"bindtexture\",\"glfaces\",\"glvertices\",\"glpoints\"]}],fractions:[{base:\"allcalls\",steps:[\"drawelements\",\"drawarrays\"]}]}},window.threeStats=function(e){var t=null;return{update:function(){t(\"renderer.info.memory.geometries\").set(e.info.memory.geometries),t(\"renderer.info.programs\").set(e.info.programs.length),t(\"renderer.info.memory.textures\").set(e.info.memory.textures),t(\"renderer.info.render.calls\").set(e.info.render.calls),t(\"renderer.info.render.triangles\").set(e.info.render.triangles),t(\"renderer.info.render.points\").set(e.info.render.points)},start:function(){},end:function(){},attach:function(e){t=e},values:{\"renderer.info.memory.geometries\":{caption:\"Geometries\"},\"renderer.info.memory.textures\":{caption:\"Textures\"},\"renderer.info.programs\":{caption:\"Programs\"},\"renderer.info.render.calls\":{caption:\"Calls\"},\"renderer.info.render.triangles\":{caption:\"Triangles\",over:1e3},\"renderer.info.render.points\":{caption:\"Points\"}},groups:[{caption:\"Three.js - Memory\",values:[\"renderer.info.memory.geometries\",\"renderer.info.programs\",\"renderer.info.memory.textures\"]},{caption:\"Three.js - Render\",values:[\"renderer.info.render.calls\",\"renderer.info.render.triangles\",\"renderer.info.render.points\"]}],fractions:[]}},window.BrowserStats=function(){var e=null,t=0,n=0;window.performance&&!performance.memory&&(performance.memory={usedJSHeapSize:0,totalJSHeapSize:0}),0===performance.memory.totalJSHeapSize&&console.warn(\"totalJSHeapSize === 0... performance.memory is only available in Chrome .\");var i=Math.log(1024);function r(e){var t=Math.floor(Math.log(e)/i);return Math.round(100*e/Math.pow(1024,t))/100}return{update:function(){t=r(performance.memory.usedJSHeapSize),n=r(performance.memory.totalJSHeapSize),e(\"memory\").set(t),e(\"total\").set(n)},start:function(){t=0},end:function(){},attach:function(t){e=t},values:{memory:{caption:\"Used Memory\",average:!0,avgMs:1e3,over:22},total:{caption:\"Total Memory\"}},groups:[{caption:\"Browser\",values:[\"memory\",\"total\"]}],fractions:[{base:\"total\",steps:[\"memory\"]}]}},e.exports={glStats:window.glStats,threeStats:window.threeStats,BrowserStats:window.BrowserStats}},1326:e=>{\"use strict\";!function(){\"performance\"in window==0&&(window.performance={});var e=window.performance;if(\"now\"in e==0){var t=Date.now();e.timing&&e.timing.navigationStart&&(t=e.timing.navigationStart),e.now=function(){return Date.now()-t}}e.mark||(e.mark=function(){}),e.measure||(e.measure=function(){})}(),window.rStats=function(e){function t(e,t){for(var n=Object.keys(e),i=0,r=n.length;i\u003Cr;i++)t(n[i])}var n=e||{},i=n.colours||[\"#850700\",\"#c74900\",\"#fcb300\",\"#284280\",\"#4c7c0c\"],r=(n.CSSPath?n.CSSPath:\"\")+\"rStats.css\";(n.css||[\"https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700,300\",r]).forEach((function(e){var t,n;t=e,(n=document.createElement(\"link\")).href=t,n.rel=\"stylesheet\",n.type=\"text/css\",document.getElementsByTagName(\"head\")[0].appendChild(n)})),n.values||(n.values={});var s,o,a=10,l={};function c(e,t,n){var i=n||{},r=document.createElement(\"canvas\"),s=r.getContext(\"2d\"),o=0,l=0,c=i.color?i.color:\"#666666\",h=document.createElement(\"canvas\"),u=h.getContext(\"2d\");h.width=1,h.height=20,u.fillStyle=\"#444444\",u.fillRect(0,0,1,20),u.fillStyle=c,u.fillRect(0,a,1,a),u.fillStyle=\"#ffffff\",u.globalAlpha=.5,u.fillRect(0,a,1,1),u.globalAlpha=1;var d=document.createElement(\"canvas\"),p=d.getContext(\"2d\");return d.width=1,d.height=20,p.fillStyle=\"#444444\",p.fillRect(0,0,1,20),p.fillStyle=\"#b70000\",p.fillRect(0,a,1,a),p.globalAlpha=.5,p.fillStyle=\"#ffffff\",p.fillRect(0,a,1,1),p.globalAlpha=1,r.width=200,r.height=a,r.style.width=r.width+\"px\",r.style.height=r.height+\"px\",r.className=\"rs-canvas\",e.appendChild(r),s.fillStyle=\"#444444\",s.fillRect(0,0,r.width,r.height),{draw:function(e,t){(l+=.1*(e-l))>(o*=.99)&&(o=l),s.drawImage(r,1,0,r.width-1,r.height,0,0,r.width-1,r.height),t?s.drawImage(d,r.width-1,r.height-l*r.height/o-a):s.drawImage(h,r.width-1,r.height-l*r.height/o-a)}}}function h(e,n){var r=document.createElement(\"canvas\"),s=r.getContext(\"2d\");return r.width=200,r.height=a*n,r.style.width=r.width+\"px\",r.style.height=r.height+\"px\",r.className=\"rs-canvas\",e.appendChild(r),s.fillStyle=\"#444444\",s.fillRect(0,0,r.width,r.height),{draw:function(e){s.drawImage(r,1,0,r.width-1,r.height,0,0,r.width-1,r.height);var n=0;t(e,(function(t){var o=e[t]*r.height;s.fillStyle=i[t],s.fillRect(r.width-1,n,1,o),n+=o}))}}}function u(e,t){var i,r=e,s=0,a=0,l=0,h=0,u=performance.now(),d=0,p=document.createElement(\"div\"),A=document.createElement(\"span\"),f=document.createElement(\"div\"),m=document.createTextNode(\"\"),g=n?n.values[r.toLowerCase()]:null,v=new c(p,r,g),y=!1;function E(e){if(g&&g.average){h+=e,d++;var t=performance.now();t-u>=(g.avgMs||1e3)&&(l=h/d,h=0,u=t,d=0)}}function b(){i=performance.now(),n.userTimingAPI&&performance.mark(r+\"-start\"),y=!0}function x(){s=performance.now()-i,n.userTimingAPI&&(performance.mark(r+\"-end\"),y&&performance.measure(r,r+\"-start\",r+\"-end\")),E(s)}return A.className=\"rs-counter-id\",A.textContent=g&&g.caption?g.caption:r,f.className=\"rs-counter-value\",f.appendChild(m),p.appendChild(A),p.appendChild(f),t?t.div.appendChild(p):o.appendChild(p),i=performance.now(),{set:function(e){E(s=e)},start:b,tick:function(){x(),b()},end:x,frame:function(){var e=performance.now(),t=e-i;a++,t>1e3&&(s=g&&!1===g.interpolate?a:1e3*a/t,a=0,i=e,E(s))},value:function(){return s},draw:function(){var e=g&&g.average?l:s;m.nodeValue=Math.round(100*e)/100;var t=g&&(g.below&&s\u003Cg.below||g.over&&s>g.over);v.draw(s,t),p.className=t?\"rs-counter-base alarm\":\"rs-counter-base\"}}}function d(e){var i=e.toLowerCase();if(void 0===i&&(i=\"default\"),l[i])return l[i];var r=null;n&&n.groups&&t(n.groups,(function(e){var t=n.groups[parseInt(e,10)];r||-1===t.values.indexOf(i.toLowerCase())||(r=t)}));var s=new u(i,r);return l[i]=s,s}function p(){t(n.plugins,(function(e){n.plugins[e].update()})),t(l,(function(e){l[e].draw()})),n&&n.fractions&&t(n.fractions,(function(e){var i=n.fractions[parseInt(e,10)],r=[],s=l[i.base.toLowerCase()];s&&(s=s.value(),t(n.fractions[e].steps,(function(t){var i=n.fractions[e].steps[parseInt(t,10)].toLowerCase(),o=l[i];o&&r.push(o.value()/s)}))),i.graph.draw(r)}))}return function(){if(n.plugins){n.values||(n.values={}),n.groups||(n.groups=[]),n.fractions||(n.fractions=[]);for(var e=0;e\u003Cn.plugins.length;e++)n.plugins[e].attach(d),t(n.plugins[e].values,(function(t){n.values[t]=n.plugins[e].values[t]})),n.groups=n.groups.concat(n.plugins[e].groups),n.fractions=n.fractions.concat(n.plugins[e].fractions)}else n.plugins={};(s=document.createElement(\"div\")).className=\"rs-base\",(o=document.createElement(\"div\")).className=\"rs-container\",o.style.height=\"auto\",s.appendChild(o),document.body.appendChild(s),n&&(n.groups&&t(n.groups,(function(e){var t=n.groups[parseInt(e,10)],i=document.createElement(\"div\");i.className=\"rs-group\",t.div=i;var r=document.createElement(\"h1\");r.textContent=t.caption,r.addEventListener(\"click\",function(e){this.classList.toggle(\"hidden\"),e.preventDefault()}.bind(i)),o.appendChild(r),o.appendChild(i)})),n.fractions&&t(n.fractions,(function(e){var r=n.fractions[parseInt(e,10)],s=document.createElement(\"div\");s.className=\"rs-fraction\";var l=document.createElement(\"div\");l.className=\"rs-legend\";var c=0;t(n.fractions[e].steps,(function(t){var r=document.createElement(\"p\");r.textContent=n.fractions[e].steps[t],r.style.color=i[c],l.appendChild(r),c++})),s.appendChild(l),s.style.height=c*a+\"px\",r.div=s;var u=new h(s,c);r.graph=u,o.appendChild(s)})))}(),function(e){return e?d(e):{element:s,update:p}}},e.exports=window.rStats},8332:()=>{String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e})},1347:e=>{var t={base64:function(e,t){return\"data:\"+e+\";base64,\"+t},isMobile:function(){var e,t=!1;return e=navigator.userAgent||navigator.vendor||window.opera,(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(e.substr(0,4)))&&(t=!0),t},isIOS:function(){return/(iPad|iPhone|iPod)/g.test(navigator.userAgent)},isIFrame:function(){try{return window.self!==window.top}catch(e){return!0}},appendQueryParameter:function(e,t,n){var i=e.indexOf(\"?\")\u003C0?\"?\":\"&\";return e+(i+t+\"=\")+n},getQueryParameter:function(e){e=e.replace(/[\\[]/,\"\\\\[\").replace(/[\\]]/,\"\\\\]\");var t=new RegExp(\"[\\\\?&]\"+e+\"=([^]*)\").exec(location.search);return null===t?\"\":decodeURIComponent(t[1].replace(/\\+/g,\" \"))},isLandscapeMode:function(){return 90==window.orientation||-90==window.orientation}};e.exports=t},4630:(e,t,n)=>{var i,r=n(1347);e.exports=(i=navigator.userAgent||navigator.vendor||window.opera).match(/iPhone/i)||i.match(/iPod/i)?function(){var e=null;this.request=function(){e||(e=setInterval((function(){window.location.href=\"/\",setTimeout(window.stop,0)}),15e3))},this.release=function(){e&&(clearInterval(e),e=null)}}:function(){var e=document.createElement(\"video\");e.addEventListener(\"ended\",(function(){e.play()})),this.request=function(){e.paused&&(e.src=r.base64(\"video/webm\",\"GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4ECQoWBAhhTgGcBAAAAAAAH4xFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsggfG7AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU2LjQwLjEwMVdBjUxhdmY1Ni40MC4xMDFzpJAGSJTMbsLpDt/ySkipgX1fRImIQO1MAAAAAAAWVK5rAQAAAAAAADuuAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDmDgQEj44OEO5rKAOABAAAAAAAABrCBsLqBkB9DtnUBAAAAAAAAo+eBAKOmgQAAgKJJg0IAAV4BHsAHBIODCoAACmH2MAAAZxgz4dPSTFi5JACjloED6ACmAECSnABMQAADYAAAWi0quoCjloEH0ACmAECSnABNwAADYAAAWi0quoCjloELuACmAECSnABNgAADYAAAWi0quoCjloEPoACmAECSnABNYAADYAAAWi0quoCjloETiACmAECSnABNIAADYAAAWi0quoAfQ7Z1AQAAAAAAAJTnghdwo5aBAAAApgBAkpwATOAAA2AAAFotKrqAo5aBA+gApgBAkpwATMAAA2AAAFotKrqAo5aBB9AApgBAkpwATIAAA2AAAFotKrqAo5aBC7gApgBAkpwATEAAA2AAAFotKrqAo5aBD6AApgDAkpwAQ2AAA2AAAFotKrqAo5aBE4gApgBAkpwATCAAA2AAAFotKrqAH0O2dQEAAAAAAACU54Iu4KOWgQAAAKYAQJKcAEvAAANgAABaLSq6gKOWgQPoAKYAQJKcAEtgAANgAABaLSq6gKOWgQfQAKYAQJKcAEsAAANgAABaLSq6gKOWgQu4AKYAQJKcAEqAAANgAABaLSq6gKOWgQ+gAKYAQJKcAEogAANgAABaLSq6gKOWgROIAKYAQJKcAEnAAANgAABaLSq6gB9DtnUBAAAAAAAAlOeCRlCjloEAAACmAECSnABJgAADYAAAWi0quoCjloED6ACmAECSnABJIAADYAAAWi0quoCjloEH0ACmAMCSnABDYAADYAAAWi0quoCjloELuACmAECSnABI4AADYAAAWi0quoCjloEPoACmAECSnABIoAADYAAAWi0quoCjloETiACmAECSnABIYAADYAAAWi0quoAfQ7Z1AQAAAAAAAJTngl3Ao5aBAAAApgBAkpwASCAAA2AAAFotKrqAo5aBA+gApgBAkpwASAAAA2AAAFotKrqAo5aBB9AApgBAkpwAR8AAA2AAAFotKrqAo5aBC7gApgBAkpwAR4AAA2AAAFotKrqAo5aBD6AApgBAkpwAR2AAA2AAAFotKrqAo5aBE4gApgBAkpwARyAAA2AAAFotKrqAH0O2dQEAAAAAAACU54J1MKOWgQAAAKYAwJKcAENgAANgAABaLSq6gKOWgQPoAKYAQJKcAEbgAANgAABaLSq6gKOWgQfQAKYAQJKcAEagAANgAABaLSq6gKOWgQu4AKYAQJKcAEaAAANgAABaLSq6gKOWgQ+gAKYAQJKcAEZAAANgAABaLSq6gKOWgROIAKYAQJKcAEYAAANgAABaLSq6gB9DtnUBAAAAAAAAlOeCjKCjloEAAACmAECSnABF4AADYAAAWi0quoCjloED6ACmAECSnABFwAADYAAAWi0quoCjloEH0ACmAECSnABFoAADYAAAWi0quoCjloELuACmAECSnABFgAADYAAAWi0quoCjloEPoACmAMCSnABDYAADYAAAWi0quoCjloETiACmAECSnABFYAADYAAAWi0quoAfQ7Z1AQAAAAAAAJTngqQQo5aBAAAApgBAkpwARUAAA2AAAFotKrqAo5aBA+gApgBAkpwARSAAA2AAAFotKrqAo5aBB9AApgBAkpwARQAAA2AAAFotKrqAo5aBC7gApgBAkpwARQAAA2AAAFotKrqAo5aBD6AApgBAkpwAROAAA2AAAFotKrqAo5aBE4gApgBAkpwARMAAA2AAAFotKrqAH0O2dQEAAAAAAACU54K7gKOWgQAAAKYAQJKcAESgAANgAABaLSq6gKOWgQPoAKYAQJKcAESAAANgAABaLSq6gKOWgQfQAKYAwJKcAENgAANgAABaLSq6gKOWgQu4AKYAQJKcAERgAANgAABaLSq6gKOWgQ+gAKYAQJKcAERAAANgAABaLSq6gKOWgROIAKYAQJKcAEQgAANgAABaLSq6gB9DtnUBAAAAAAAAlOeC0vCjloEAAACmAECSnABEIAADYAAAWi0quoCjloED6ACmAECSnABEAAADYAAAWi0quoCjloEH0ACmAECSnABD4AADYAAAWi0quoCjloELuACmAECSnABDwAADYAAAWi0quoCjloEPoACmAECSnABDoAADYAAAWi0quoCjloETiACmAECSnABDgAADYAAAWi0quoAcU7trAQAAAAAAABG7j7OBALeK94EB8YIBd/CBAw==\"),e.play())},this.release=function(){e.pause(),e.src=\"\"}}},1248:(e,t,n)=>{\"use strict\";n.d(t,{Z:()=>E});var i=n(4216),r=n.n(i),s=n(7705),o=n.n(s),a=n(6742),l=n.n(a),c=new URL(n(3646),n.b),h=new URL(n(7513),n.b),u=new URL(n(5059),n.b),d=new URL(n(576),n.b),p=new URL(n(5581),n.b),A=o()(r()),f=l()(c),m=l()(h),g=l()(u),v=l()(d),y=l()(p);A.push([e.id,\"/* .a-fullscreen means not embedded. */\\nhtml.a-fullscreen {\\n bottom: 0;\\n left: 0;\\n position: fixed;\\n right: 0;\\n top: 0;\\n}\\n\\nhtml.a-fullscreen body {\\n height: 100%;\\n margin: 0;\\n overflow: hidden;\\n padding: 0;\\n width: 100%;\\n}\\n\\n/* Class is removed when doing \u003Ca-scene embedded>. */\\nhtml.a-fullscreen .a-canvas {\\n width: 100% !important;\\n height: 100% !important;\\n top: 0 !important;\\n left: 0 !important;\\n right: 0 !important;\\n bottom: 0 !important;\\n position: fixed !important;\\n}\\n\\nhtml:not(.a-fullscreen) .a-enter-vr,\\nhtml:not(.a-fullscreen) .a-enter-ar {\\n right: 5px;\\n bottom: 5px;\\n}\\n\\nhtml:not(.a-fullscreen) .a-enter-ar {\\n right: 60px;\\n}\\n\\n/* In chrome mobile the user agent stylesheet set it to white */\\n:-webkit-full-screen {\\n background-color: transparent;\\n}\\n\\n.a-hidden {\\n display: none !important;\\n}\\n\\n.a-canvas {\\n height: 100%;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n}\\n\\n.a-canvas.a-grab-cursor:hover {\\n cursor: grab;\\n cursor: -moz-grab;\\n cursor: -webkit-grab;\\n}\\n\\ncanvas.a-canvas.a-mouse-cursor-hover:hover {\\n cursor: pointer;\\n}\\n\\n.a-inspector-loader {\\n background-color: #ed3160;\\n position: fixed;\\n left: 3px;\\n top: 3px;\\n padding: 6px 10px;\\n color: #fff;\\n text-decoration: none;\\n font-size: 12px;\\n font-family: Roboto,sans-serif;\\n text-align: center;\\n z-index: 99999;\\n width: 204px;\\n}\\n\\n/* Inspector loader animation */\\n@keyframes dots-1 { from { opacity: 0; } 25% { opacity: 1; } }\\n@keyframes dots-2 { from { opacity: 0; } 50% { opacity: 1; } }\\n@keyframes dots-3 { from { opacity: 0; } 75% { opacity: 1; } }\\n@-webkit-keyframes dots-1 { from { opacity: 0; } 25% { opacity: 1; } }\\n@-webkit-keyframes dots-2 { from { opacity: 0; } 50% { opacity: 1; } }\\n@-webkit-keyframes dots-3 { from { opacity: 0; } 75% { opacity: 1; } }\\n\\n.a-inspector-loader .dots span {\\n animation: dots-1 2s infinite steps(1);\\n -webkit-animation: dots-1 2s infinite steps(1);\\n}\\n\\n.a-inspector-loader .dots span:first-child + span {\\n animation-name: dots-2;\\n -webkit-animation-name: dots-2;\\n}\\n\\n.a-inspector-loader .dots span:first-child + span + span {\\n animation-name: dots-3;\\n -webkit-animation-name: dots-3;\\n}\\n\\na-scene {\\n display: block;\\n position: relative;\\n height: 100%;\\n width: 100%;\\n}\\n\\na-assets,\\na-scene video,\\na-scene img,\\na-scene audio {\\n display: none;\\n}\\n\\n.a-enter-vr-modal,\\n.a-orientation-modal {\\n font-family: Consolas, Andale Mono, Courier New, monospace;\\n}\\n\\n.a-enter-vr-modal a {\\n border-bottom: 1px solid #fff;\\n padding: 2px 0;\\n text-decoration: none;\\n transition: .1s color ease-in;\\n}\\n\\n.a-enter-vr-modal a:hover {\\n background-color: #fff;\\n color: #111;\\n padding: 2px 4px;\\n position: relative;\\n left: -4px;\\n}\\n\\n.a-enter-vr,\\n.a-enter-ar {\\n font-family: sans-serif, monospace;\\n font-size: 13px;\\n width: 100%;\\n font-weight: 200;\\n line-height: 16px;\\n position: absolute;\\n right: 20px;\\n bottom: 20px;\\n}\\n\\n.a-enter-ar {\\n right: 80px;\\n}\\n\\n.a-enter-vr-button,\\n.a-enter-vr-modal,\\n.a-enter-vr-modal a {\\n color: #fff;\\n user-select: none;\\n outline: none;\\n}\\n\\n.a-enter-vr-button {\\n background: rgba(0, 0, 0, 0.35) url(\"+f+\") 50% 50% no-repeat;\\n}\\n\\n.a-enter-ar-button {\\n background: rgba(0, 0, 0, 0.20) url(\"+m+\") 50% 50% no-repeat;\\n}\\n\\n.a-enter-vr.fullscreen .a-enter-vr-button {\\n background-image: url(\"+g+\");\\n}\\n\\n.a-enter-vr-button,\\n.a-enter-ar-button {\\n background-size: 90% 90%;\\n border: 0;\\n bottom: 0;\\n cursor: pointer;\\n min-width: 58px;\\n min-height: 34px;\\n /* 1.74418604651 */\\n /*\\n In order to keep the aspect ratio when resizing\\n padding-top percentages are relative to the containing block's width.\\n http://stackoverflow.com/questions/12121090/responsively-change-div-size-keeping-aspect-ratio\\n */\\n padding-right: 0;\\n padding-top: 0;\\n position: absolute;\\n right: 0;\\n transition: background-color .05s ease;\\n -webkit-transition: background-color .05s ease;\\n z-index: 9999;\\n border-radius: 8px;\\n touch-action: manipulation; /* Prevent iOS double tap zoom on the button */\\n}\\n\\n.a-enter-ar-button {\\n background-size: 100% 90%;\\n margin-right: 10px;\\n border-radius: 7px;\\n}\\n\\n.a-enter-ar-button:active,\\n.a-enter-ar-button:hover,\\n.a-enter-vr-button:active,\\n.a-enter-vr-button:hover {\\n background-color: #ef2d5e;\\n}\\n\\n.a-enter-vr-button.resethover {\\n background-color: rgba(0, 0, 0, 0.35);\\n}\\n\\n\\n.a-enter-vr-modal {\\n background-color: #666;\\n border-radius: 0;\\n display: none;\\n min-height: 32px;\\n margin-right: 70px;\\n padding: 9px;\\n width: 280px;\\n right: 2%;\\n position: absolute;\\n}\\n\\n.a-enter-vr-modal:after {\\n border-bottom: 10px solid transparent;\\n border-left: 10px solid #666;\\n border-top: 10px solid transparent;\\n display: inline-block;\\n content: '';\\n position: absolute;\\n right: -5px;\\n top: 5px;\\n width: 0;\\n height: 0;\\n}\\n\\n.a-enter-vr-modal p,\\n.a-enter-vr-modal a {\\n display: inline;\\n}\\n\\n.a-enter-vr-modal p {\\n margin: 0;\\n}\\n\\n.a-enter-vr-modal p:after {\\n content: ' ';\\n}\\n\\n.a-orientation-modal {\\n background: rgba(244, 244, 244, 1) url(\"+v+') center no-repeat;\\n background-size: 50% 50%;\\n bottom: 0;\\n font-size: 14px;\\n font-weight: 600;\\n left: 0;\\n line-height: 20px;\\n right: 0;\\n position: fixed;\\n top: 0;\\n z-index: 9999999;\\n}\\n\\n.a-orientation-modal:after {\\n color: #666;\\n content: \"Insert phone into Cardboard holder.\";\\n display: block;\\n position: absolute;\\n text-align: center;\\n top: 70%;\\n transform: translateY(-70%);\\n width: 100%;\\n}\\n\\n.a-orientation-modal button {\\n background: url('+y+\") no-repeat;\\n border: none;\\n height: 50px;\\n text-indent: -9999px;\\n width: 50px;\\n}\\n\\n.a-loader-title {\\n background-color: rgba(0, 0, 0, 0.6);\\n font-family: sans-serif, monospace;\\n text-align: center;\\n font-size: 20px;\\n height: 50px;\\n font-weight: 300;\\n line-height: 50px;\\n position: absolute;\\n right: 0px;\\n left: 0px;\\n top: 0px;\\n color: white;\\n}\\n\\n.a-modal {\\n position: absolute;\\n background: rgba(0, 0, 0, 0.60);\\n background-size: 50% 50%;\\n bottom: 0;\\n font-size: 14px;\\n font-weight: 600;\\n left: 0;\\n line-height: 20px;\\n right: 0;\\n position: fixed;\\n top: 0;\\n z-index: 9999999;\\n}\\n\\n.a-dialog {\\n position: relative;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n z-index: 199995;\\n width: 300px;\\n height: 200px;\\n background-size: contain;\\n background-color: white;\\n font-family: sans-serif, monospace;\\n font-size: 20px;\\n border-radius: 3px;\\n padding: 6px;\\n}\\n\\n.a-dialog-text-container {\\n width: 100%;\\n height: 70%;\\n align-self: flex-start;\\n display: flex;\\n justify-content: center;\\n align-content: center;\\n flex-direction: column;\\n}\\n\\n.a-dialog-text {\\n display: inline-block;\\n font-weight: normal;\\n font-size: 14pt;\\n margin: 8px;\\n}\\n\\n.a-dialog-buttons-container {\\n display: inline-flex;\\n align-self: flex-end;\\n width: 100%;\\n height: 30%;\\n}\\n\\n.a-dialog-button {\\n cursor: pointer;\\n align-self: center;\\n opacity: 0.9;\\n height: 80%;\\n width: 50%;\\n font-size: 12pt;\\n margin: 4px;\\n border-radius: 2px;\\n text-align:center;\\n border: none;\\n display: inline-block;\\n -webkit-transition: all 0.25s ease-in-out;\\n transition: all 0.25s ease-in-out;\\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.10), 0 1px 2px rgba(0, 0, 0, 0.20);\\n user-select: none;\\n}\\n\\n.a-dialog-permission-button:hover {\\n box-shadow: 0 7px 14px rgba(0,0,0,0.20), 0 2px 2px rgba(0,0,0,0.20);\\n}\\n\\n.a-dialog-allow-button {\\n background-color: #00ceff;\\n}\\n\\n.a-dialog-deny-button {\\n background-color: #ff005b;\\n}\\n\\n.a-dialog-ok-button {\\n background-color: #00ceff;\\n width: 100%;\\n}\\n\\n.a-dom-overlay:not(.a-no-style) {\\n overflow: hidden;\\n position: absolute;\\n pointer-events: none;\\n box-sizing: border-box;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n top: 0;\\n padding: 1em;\\n}\\n\\n.a-dom-overlay:not(.a-no-style)>* {\\n pointer-events: auto;\\n}\\n\",\"\",{version:3,sources:[\"webpack://./src/style/aframe.css\"],names:[],mappings:\"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\",sourcesContent:[\"/* .a-fullscreen means not embedded. */\\nhtml.a-fullscreen {\\n bottom: 0;\\n left: 0;\\n position: fixed;\\n right: 0;\\n top: 0;\\n}\\n\\nhtml.a-fullscreen body {\\n height: 100%;\\n margin: 0;\\n overflow: hidden;\\n padding: 0;\\n width: 100%;\\n}\\n\\n/* Class is removed when doing \u003Ca-scene embedded>. */\\nhtml.a-fullscreen .a-canvas {\\n width: 100% !important;\\n height: 100% !important;\\n top: 0 !important;\\n left: 0 !important;\\n right: 0 !important;\\n bottom: 0 !important;\\n position: fixed !important;\\n}\\n\\nhtml:not(.a-fullscreen) .a-enter-vr,\\nhtml:not(.a-fullscreen) .a-enter-ar {\\n right: 5px;\\n bottom: 5px;\\n}\\n\\nhtml:not(.a-fullscreen) .a-enter-ar {\\n right: 60px;\\n}\\n\\n/* In chrome mobile the user agent stylesheet set it to white */\\n:-webkit-full-screen {\\n background-color: transparent;\\n}\\n\\n.a-hidden {\\n display: none !important;\\n}\\n\\n.a-canvas {\\n height: 100%;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n}\\n\\n.a-canvas.a-grab-cursor:hover {\\n cursor: grab;\\n cursor: -moz-grab;\\n cursor: -webkit-grab;\\n}\\n\\ncanvas.a-canvas.a-mouse-cursor-hover:hover {\\n cursor: pointer;\\n}\\n\\n.a-inspector-loader {\\n background-color: #ed3160;\\n position: fixed;\\n left: 3px;\\n top: 3px;\\n padding: 6px 10px;\\n color: #fff;\\n text-decoration: none;\\n font-size: 12px;\\n font-family: Roboto,sans-serif;\\n text-align: center;\\n z-index: 99999;\\n width: 204px;\\n}\\n\\n/* Inspector loader animation */\\n@keyframes dots-1 { from { opacity: 0; } 25% { opacity: 1; } }\\n@keyframes dots-2 { from { opacity: 0; } 50% { opacity: 1; } }\\n@keyframes dots-3 { from { opacity: 0; } 75% { opacity: 1; } }\\n@-webkit-keyframes dots-1 { from { opacity: 0; } 25% { opacity: 1; } }\\n@-webkit-keyframes dots-2 { from { opacity: 0; } 50% { opacity: 1; } }\\n@-webkit-keyframes dots-3 { from { opacity: 0; } 75% { opacity: 1; } }\\n\\n.a-inspector-loader .dots span {\\n animation: dots-1 2s infinite steps(1);\\n -webkit-animation: dots-1 2s infinite steps(1);\\n}\\n\\n.a-inspector-loader .dots span:first-child + span {\\n animation-name: dots-2;\\n -webkit-animation-name: dots-2;\\n}\\n\\n.a-inspector-loader .dots span:first-child + span + span {\\n animation-name: dots-3;\\n -webkit-animation-name: dots-3;\\n}\\n\\na-scene {\\n display: block;\\n position: relative;\\n height: 100%;\\n width: 100%;\\n}\\n\\na-assets,\\na-scene video,\\na-scene img,\\na-scene audio {\\n display: none;\\n}\\n\\n.a-enter-vr-modal,\\n.a-orientation-modal {\\n font-family: Consolas, Andale Mono, Courier New, monospace;\\n}\\n\\n.a-enter-vr-modal a {\\n border-bottom: 1px solid #fff;\\n padding: 2px 0;\\n text-decoration: none;\\n transition: .1s color ease-in;\\n}\\n\\n.a-enter-vr-modal a:hover {\\n background-color: #fff;\\n color: #111;\\n padding: 2px 4px;\\n position: relative;\\n left: -4px;\\n}\\n\\n.a-enter-vr,\\n.a-enter-ar {\\n font-family: sans-serif, monospace;\\n font-size: 13px;\\n width: 100%;\\n font-weight: 200;\\n line-height: 16px;\\n position: absolute;\\n right: 20px;\\n bottom: 20px;\\n}\\n\\n.a-enter-ar {\\n right: 80px;\\n}\\n\\n.a-enter-vr-button,\\n.a-enter-vr-modal,\\n.a-enter-vr-modal a {\\n color: #fff;\\n user-select: none;\\n outline: none;\\n}\\n\\n.a-enter-vr-button {\\n background: rgba(0, 0, 0, 0.35) url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='108' height='62' viewBox='0 0 108 62'%3E%3Ctitle%3Eaframe-vrmode-noborder-reduced-tracking%3C/title%3E%3Cpath d='M68.81,21.56H64.23v8.27h4.58a4.13,4.13,0,0,0,3.1-1.09,4.2,4.2,0,0,0,1-3,4.24,4.24,0,0,0-1-3A4.05,4.05,0,0,0,68.81,21.56Z' fill='%23fff'/%3E%3Cpath d='M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0ZM41.9,46H34L24,16h8l6,21.84,6-21.84H52Zm39.29,0H73.44L68.15,35.39H64.23V46H57V16H68.81q5.32,0,8.34,2.37a8,8,0,0,1,3,6.69,9.68,9.68,0,0,1-1.27,5.18,8.9,8.9,0,0,1-4,3.34l6.26,12.11Z' fill='%23fff'/%3E%3C/svg%3E\\\") 50% 50% no-repeat;\\n}\\n\\n.a-enter-ar-button {\\n background: rgba(0, 0, 0, 0.20) url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='108' height='62' viewBox='0 0 108 62'%3E%3Ctitle%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d='M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0Zm8,50a8,8,0,0,1-8,8H12a8,8,0,0,1-8-8V12a8,8,0,0,1,8-8H96a8,8,0,0,1,8,8Z' fill='%23fff'/%3E%3Cpath d='M43.35,39.82H32.51L30.45,46H23.88L35,16h5.73L52,46H45.43Zm-9.17-5h7.5L37.91,23.58Z' fill='%23fff'/%3E%3Cpath d='M68.11,35H63.18V46H57V16H68.15q5.31,0,8.2,2.37a8.18,8.18,0,0,1,2.88,6.7,9.22,9.22,0,0,1-1.33,5.12,9.09,9.09,0,0,1-4,3.26l6.49,12.26V46H73.73Zm-4.93-5h5a5.09,5.09,0,0,0,3.6-1.18,4.21,4.21,0,0,0,1.28-3.27,4.56,4.56,0,0,0-1.2-3.34A5,5,0,0,0,68.15,21h-5Z' fill='%23fff'/%3E%3C/svg%3E\\\") 50% 50% no-repeat;\\n}\\n\\n.a-enter-vr.fullscreen .a-enter-vr-button {\\n background-image: url(\\\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8' standalone='no'%3F%3E%3Csvg width='108' height='62' viewBox='0 0 108 62' version='1.1' id='svg320' sodipodi:docname='fullscreen-aframe.svg' xml:space='preserve' inkscape:version='1.2.1 (9c6d41e 2022-07-14)' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23' xmlns:cc='http://creativecommons.org/ns%23' xmlns:dc='http://purl.org/dc/elements/1.1/'%3E%3Cdefs id='defs324' /%3E%3Csodipodi:namedview id='namedview322' pagecolor='%23ffffff' bordercolor='%23000000' borderopacity='0.25' inkscape:showpageshadow='2' inkscape:pageopacity='0.0' inkscape:pagecheckerboard='0' inkscape:deskcolor='%23d1d1d1' showgrid='false' inkscape:zoom='3.8064516' inkscape:cx='91.423729' inkscape:cy='-1.4449153' inkscape:window-width='1440' inkscape:window-height='847' inkscape:window-x='32' inkscape:window-y='25' inkscape:window-maximized='0' inkscape:current-layer='svg320' /%3E%3Ctitle id='title312'%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d='M96 0H12A12 12 0 0 0 0 12V50A12 12 0 0 0 12 62H96a12 12 0 0 0 12-12V12A12 12 0 0 0 96 0Zm8 50a8 8 0 0 1-8 8H12a8 8 0 0 1-8-8V12a8 8 0 0 1 8-8H96a8 8 0 0 1 8 8Z' fill='%23fff' id='path314' style='fill:%23ffffff' /%3E%3Cg id='g356' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g358' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g360' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g362' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g364' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g366' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g368' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g370' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g372' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g374' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g376' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g378' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g380' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g382' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g384' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cmetadata id='metadata561'%3E%3Crdf:RDF%3E%3Ccc:Work rdf:about=''%3E%3Cdc:title%3Eaframe-armode-noborder-reduced-tracking%3C/dc:title%3E%3C/cc:Work%3E%3C/rdf:RDF%3E%3C/metadata%3E%3Cpath d='m 98.168511 40.083649 c 0 -1.303681 -0.998788 -2.358041 -2.239389 -2.358041 -1.230088 0.0031 -2.240892 1.05436 -2.240892 2.358041 v 4.881296 l -9.041661 -9.041662 c -0.874129 -0.875631 -2.288954 -0.875631 -3.16308 0 -0.874129 0.874126 -0.874129 2.293459 0 3.167585 l 8.995101 8.992101 h -4.858767 c -1.323206 0.0031 -2.389583 1.004796 -2.389583 2.239386 0 1.237598 1.066377 2.237888 2.389583 2.237888 h 10.154599 c 1.323206 0 2.388082 -0.998789 2.392587 -2.237888 -0.0044 -0.03305 -0.009 -0.05858 -0.0134 -0.09161 0.0046 -0.04207 0.0134 -0.08712 0.0134 -0.13066 V 40.085172 h -1.52e-4' id='path596' style='fill:%23ffffff%3Bstroke-width:1.50194' /%3E%3Cpath d='m 23.091002 35.921781 -9.026643 9.041662 v -4.881296 c 0 -1.303681 -1.009302 -2.355037 -2.242393 -2.358041 -1.237598 0 -2.237888 1.05436 -2.237888 2.358041 l -0.0031 10.016421 c 0 0.04356 0.01211 0.08862 0.0015 0.130659 -0.0031 0.03153 -0.009 0.05709 -0.01211 0.09161 0.0031 1.239099 1.069379 2.237888 2.391085 2.237888 h 10.156101 c 1.320202 0 2.388079 -1.000291 2.388079 -2.237888 0 -1.234591 -1.067877 -2.236383 -2.388079 -2.239387 h -4.858767 l 8.995101 -8.9921 c 0.871126 -0.874127 0.871126 -2.293459 0 -3.167586 -0.875628 -0.877132 -2.291957 -0.877132 -3.169087 -1.52e-4' id='path598' style='fill:%23ffffff%3Bstroke-width:1.50194' /%3E%3Cpath d='m 84.649572 25.978033 9.041662 -9.041664 v 4.881298 c 0 1.299176 1.010806 2.350532 2.240891 2.355037 1.240601 0 2.23939 -1.055861 2.23939 -2.355037 V 11.798242 c 0 -0.04356 -0.009 -0.08862 -0.0134 -0.127671 0.0044 -0.03153 0.009 -0.06157 0.0134 -0.09313 -0.0044 -1.240598 -1.069379 -2.2393873 -2.391085 -2.2393873 h -10.1546 c -1.323205 0 -2.38958 0.9987893 -2.38958 2.2393873 0 1.233091 1.066375 2.237887 2.38958 2.240891 h 4.858768 l -8.995102 8.9921 c -0.874129 0.872625 -0.874129 2.288954 0 3.161578 0.874127 0.880137 2.288951 0.880137 3.16308 1.5e-4' id='path600' style='fill:%23ffffff%3Bstroke-width:1.50194' /%3E%3Cpath d='m 17.264988 13.822853 h 4.857265 c 1.320202 -0.0031 2.388079 -1.0078 2.388079 -2.240889 0 -1.240601 -1.067877 -2.2393893 -2.388079 -2.2393893 H 11.967654 c -1.321707 0 -2.388082 0.9987883 -2.391085 2.2393893 0.0031 0.03153 0.009 0.06157 0.01211 0.09313 -0.0031 0.03905 -0.0015 0.08262 -0.0015 0.127671 l 0.0031 10.020926 c 0 1.299176 1.00029 2.355038 2.237887 2.355038 1.233092 -0.0044 2.242393 -1.055862 2.242393 -2.355038 v -4.881295 l 9.026644 9.041661 c 0.877132 0.878635 2.293459 0.878635 3.169087 0 0.871125 -0.872624 0.871125 -2.288953 0 -3.161577 l -8.995282 -8.993616' id='path602' style='fill:%23ffffff%3Bstroke-width:1.50194' /%3E%3C/svg%3E\\\");\\n}\\n\\n.a-enter-vr-button,\\n.a-enter-ar-button {\\n background-size: 90% 90%;\\n border: 0;\\n bottom: 0;\\n cursor: pointer;\\n min-width: 58px;\\n min-height: 34px;\\n /* 1.74418604651 */\\n /*\\n In order to keep the aspect ratio when resizing\\n padding-top percentages are relative to the containing block's width.\\n http://stackoverflow.com/questions/12121090/responsively-change-div-size-keeping-aspect-ratio\\n */\\n padding-right: 0;\\n padding-top: 0;\\n position: absolute;\\n right: 0;\\n transition: background-color .05s ease;\\n -webkit-transition: background-color .05s ease;\\n z-index: 9999;\\n border-radius: 8px;\\n touch-action: manipulation; /* Prevent iOS double tap zoom on the button */\\n}\\n\\n.a-enter-ar-button {\\n background-size: 100% 90%;\\n margin-right: 10px;\\n border-radius: 7px;\\n}\\n\\n.a-enter-ar-button:active,\\n.a-enter-ar-button:hover,\\n.a-enter-vr-button:active,\\n.a-enter-vr-button:hover {\\n background-color: #ef2d5e;\\n}\\n\\n.a-enter-vr-button.resethover {\\n background-color: rgba(0, 0, 0, 0.35);\\n}\\n\\n\\n.a-enter-vr-modal {\\n background-color: #666;\\n border-radius: 0;\\n display: none;\\n min-height: 32px;\\n margin-right: 70px;\\n padding: 9px;\\n width: 280px;\\n right: 2%;\\n position: absolute;\\n}\\n\\n.a-enter-vr-modal:after {\\n border-bottom: 10px solid transparent;\\n border-left: 10px solid #666;\\n border-top: 10px solid transparent;\\n display: inline-block;\\n content: '';\\n position: absolute;\\n right: -5px;\\n top: 5px;\\n width: 0;\\n height: 0;\\n}\\n\\n.a-enter-vr-modal p,\\n.a-enter-vr-modal a {\\n display: inline;\\n}\\n\\n.a-enter-vr-modal p {\\n margin: 0;\\n}\\n\\n.a-enter-vr-modal p:after {\\n content: ' ';\\n}\\n\\n.a-orientation-modal {\\n background: rgba(244, 244, 244, 1) url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2090%2090%22%20enable-background%3D%22new%200%200%2090%2090%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%220%2C0%200%2C0%200%2C0%20%22%3E%3C/polygon%3E%3Cg%3E%3Cpath%20d%3D%22M71.545%2C48.145h-31.98V20.743c0-2.627-2.138-4.765-4.765-4.765H18.456c-2.628%2C0-4.767%2C2.138-4.767%2C4.765v42.789%20%20%20c0%2C2.628%2C2.138%2C4.766%2C4.767%2C4.766h5.535v0.959c0%2C2.628%2C2.138%2C4.765%2C4.766%2C4.765h42.788c2.628%2C0%2C4.766-2.137%2C4.766-4.765V52.914%20%20%20C76.311%2C50.284%2C74.173%2C48.145%2C71.545%2C48.145z%20M18.455%2C16.935h16.344c2.1%2C0%2C3.808%2C1.708%2C3.808%2C3.808v27.401H37.25V22.636%20%20%20c0-0.264-0.215-0.478-0.479-0.478H16.482c-0.264%2C0-0.479%2C0.214-0.479%2C0.478v36.585c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h7.507v7.644%20%20%20h-5.534c-2.101%2C0-3.81-1.709-3.81-3.81V20.743C14.645%2C18.643%2C16.354%2C16.935%2C18.455%2C16.935z%20M16.96%2C23.116h19.331v25.031h-7.535%20%20%20c-2.628%2C0-4.766%2C2.139-4.766%2C4.768v5.828h-7.03V23.116z%20M71.545%2C73.064H28.757c-2.101%2C0-3.81-1.708-3.81-3.808V52.914%20%20%20c0-2.102%2C1.709-3.812%2C3.81-3.812h42.788c2.1%2C0%2C3.809%2C1.71%2C3.809%2C3.812v16.343C75.354%2C71.356%2C73.645%2C73.064%2C71.545%2C73.064z%22%3E%3C/path%3E%3Cpath%20d%3D%22M28.919%2C58.424c-1.466%2C0-2.659%2C1.193-2.659%2C2.66c0%2C1.466%2C1.193%2C2.658%2C2.659%2C2.658c1.468%2C0%2C2.662-1.192%2C2.662-2.658%20%20%20C31.581%2C59.617%2C30.387%2C58.424%2C28.919%2C58.424z%20M28.919%2C62.786c-0.939%2C0-1.703-0.764-1.703-1.702c0-0.939%2C0.764-1.704%2C1.703-1.704%20%20%20c0.94%2C0%2C1.705%2C0.765%2C1.705%2C1.704C30.623%2C62.022%2C29.858%2C62.786%2C28.919%2C62.786z%22%3E%3C/path%3E%3Cpath%20d%3D%22M69.654%2C50.461H33.069c-0.264%2C0-0.479%2C0.215-0.479%2C0.479v20.288c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h36.585%20%20%20c0.263%2C0%2C0.477-0.214%2C0.477-0.478V50.939C70.131%2C50.676%2C69.917%2C50.461%2C69.654%2C50.461z%20M69.174%2C51.417V70.75H33.548V51.417H69.174z%22%3E%3C/path%3E%3Cpath%20d%3D%22M45.201%2C30.296c6.651%2C0%2C12.233%2C5.351%2C12.551%2C11.977l-3.033-2.638c-0.193-0.165-0.507-0.142-0.675%2C0.048%20%20%20c-0.174%2C0.198-0.153%2C0.501%2C0.045%2C0.676l3.883%2C3.375c0.09%2C0.075%2C0.198%2C0.115%2C0.312%2C0.115c0.141%2C0%2C0.273-0.061%2C0.362-0.166%20%20%20l3.371-3.877c0.173-0.2%2C0.151-0.502-0.047-0.675c-0.194-0.166-0.508-0.144-0.676%2C0.048l-2.592%2C2.979%20%20%20c-0.18-3.417-1.629-6.605-4.099-9.001c-2.538-2.461-5.877-3.817-9.404-3.817c-0.264%2C0-0.479%2C0.215-0.479%2C0.479%20%20%20C44.72%2C30.083%2C44.936%2C30.296%2C45.201%2C30.296z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E) center no-repeat;\\n background-size: 50% 50%;\\n bottom: 0;\\n font-size: 14px;\\n font-weight: 600;\\n left: 0;\\n line-height: 20px;\\n right: 0;\\n position: fixed;\\n top: 0;\\n z-index: 9999999;\\n}\\n\\n.a-orientation-modal:after {\\n color: #666;\\n content: \\\"Insert phone into Cardboard holder.\\\";\\n display: block;\\n position: absolute;\\n text-align: center;\\n top: 70%;\\n transform: translateY(-70%);\\n width: 100%;\\n}\\n\\n.a-orientation-modal button {\\n background: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%20100%20100%22%20enable-background%3D%22new%200%200%20100%20100%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M55.209%2C50l17.803-17.803c1.416-1.416%2C1.416-3.713%2C0-5.129c-1.416-1.417-3.713-1.417-5.129%2C0L50.08%2C44.872%20%20L32.278%2C27.069c-1.416-1.417-3.714-1.417-5.129%2C0c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129L44.951%2C50L27.149%2C67.803%20%20c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129c0.708%2C0.708%2C1.636%2C1.062%2C2.564%2C1.062c0.928%2C0%2C1.856-0.354%2C2.564-1.062L50.08%2C55.13l17.803%2C17.802%20%20c0.708%2C0.708%2C1.637%2C1.062%2C2.564%2C1.062s1.856-0.354%2C2.564-1.062c1.416-1.416%2C1.416-3.713%2C0-5.129L55.209%2C50z%22%3E%3C/path%3E%3C/svg%3E) no-repeat;\\n border: none;\\n height: 50px;\\n text-indent: -9999px;\\n width: 50px;\\n}\\n\\n.a-loader-title {\\n background-color: rgba(0, 0, 0, 0.6);\\n font-family: sans-serif, monospace;\\n text-align: center;\\n font-size: 20px;\\n height: 50px;\\n font-weight: 300;\\n line-height: 50px;\\n position: absolute;\\n right: 0px;\\n left: 0px;\\n top: 0px;\\n color: white;\\n}\\n\\n.a-modal {\\n position: absolute;\\n background: rgba(0, 0, 0, 0.60);\\n background-size: 50% 50%;\\n bottom: 0;\\n font-size: 14px;\\n font-weight: 600;\\n left: 0;\\n line-height: 20px;\\n right: 0;\\n position: fixed;\\n top: 0;\\n z-index: 9999999;\\n}\\n\\n.a-dialog {\\n position: relative;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n z-index: 199995;\\n width: 300px;\\n height: 200px;\\n background-size: contain;\\n background-color: white;\\n font-family: sans-serif, monospace;\\n font-size: 20px;\\n border-radius: 3px;\\n padding: 6px;\\n}\\n\\n.a-dialog-text-container {\\n width: 100%;\\n height: 70%;\\n align-self: flex-start;\\n display: flex;\\n justify-content: center;\\n align-content: center;\\n flex-direction: column;\\n}\\n\\n.a-dialog-text {\\n display: inline-block;\\n font-weight: normal;\\n font-size: 14pt;\\n margin: 8px;\\n}\\n\\n.a-dialog-buttons-container {\\n display: inline-flex;\\n align-self: flex-end;\\n width: 100%;\\n height: 30%;\\n}\\n\\n.a-dialog-button {\\n cursor: pointer;\\n align-self: center;\\n opacity: 0.9;\\n height: 80%;\\n width: 50%;\\n font-size: 12pt;\\n margin: 4px;\\n border-radius: 2px;\\n text-align:center;\\n border: none;\\n display: inline-block;\\n -webkit-transition: all 0.25s ease-in-out;\\n transition: all 0.25s ease-in-out;\\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.10), 0 1px 2px rgba(0, 0, 0, 0.20);\\n user-select: none;\\n}\\n\\n.a-dialog-permission-button:hover {\\n box-shadow: 0 7px 14px rgba(0,0,0,0.20), 0 2px 2px rgba(0,0,0,0.20);\\n}\\n\\n.a-dialog-allow-button {\\n background-color: #00ceff;\\n}\\n\\n.a-dialog-deny-button {\\n background-color: #ff005b;\\n}\\n\\n.a-dialog-ok-button {\\n background-color: #00ceff;\\n width: 100%;\\n}\\n\\n.a-dom-overlay:not(.a-no-style) {\\n overflow: hidden;\\n position: absolute;\\n pointer-events: none;\\n box-sizing: border-box;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n top: 0;\\n padding: 1em;\\n}\\n\\n.a-dom-overlay:not(.a-no-style)>* {\\n pointer-events: auto;\\n}\\n\"],sourceRoot:\"\"}]);const E=A},7098:(e,t,n)=>{\"use strict\";n.d(t,{Z:()=>a});var i=n(4216),r=n.n(i),s=n(7705),o=n.n(s)()(r());o.push([e.id,\".rs-base {\\n background-color: #333;\\n color: #fafafa;\\n border-radius: 0;\\n font: 10px monospace;\\n left: 5px;\\n line-height: 1em;\\n opacity: 0.85;\\n overflow: hidden;\\n padding: 10px;\\n position: fixed;\\n top: 5px;\\n width: 300px;\\n z-index: 10000;\\n}\\n\\n.rs-base div.hidden {\\n display: none;\\n}\\n\\n.rs-base h1 {\\n color: #fff;\\n cursor: pointer;\\n font-size: 1.4em;\\n font-weight: 300;\\n margin: 0 0 5px;\\n padding: 0;\\n}\\n\\n.rs-group {\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: flex;\\n -webkit-flex-direction: column-reverse;\\n flex-direction: column-reverse;\\n margin-bottom: 5px;\\n}\\n\\n.rs-group:last-child {\\n margin-bottom: 0;\\n}\\n\\n.rs-counter-base {\\n align-items: center;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: flex;\\n height: 10px;\\n -webkit-justify-content: space-between;\\n justify-content: space-between;\\n margin: 2px 0;\\n}\\n\\n.rs-counter-base.alarm {\\n color: #b70000;\\n text-shadow: 0 0 0 #b70000,\\n 0 0 1px #fff,\\n 0 0 1px #fff,\\n 0 0 2px #fff,\\n 0 0 2px #fff,\\n 0 0 3px #fff,\\n 0 0 3px #fff,\\n 0 0 4px #fff,\\n 0 0 4px #fff;\\n}\\n\\n.rs-counter-id {\\n font-weight: 300;\\n -webkit-box-ordinal-group: 0;\\n -webkit-order: 0;\\n order: 0;\\n width: 54px;\\n}\\n\\n.rs-counter-value {\\n font-weight: 300;\\n -webkit-box-ordinal-group: 1;\\n -webkit-order: 1;\\n order: 1;\\n text-align: right;\\n width: 35px;\\n}\\n\\n.rs-canvas {\\n -webkit-box-ordinal-group: 2;\\n -webkit-order: 2;\\n order: 2;\\n}\\n\\n@media (min-width: 480px) {\\n .rs-base {\\n left: 20px;\\n top: 20px;\\n }\\n}\\n\",\"\",{version:3,sources:[\"webpack://./src/style/rStats.css\"],names:[],mappings:\"AAAA;EACE,sBAAsB;EACtB,cAAc;EACd,gBAAgB;EAChB,oBAAoB;EACpB,SAAS;EACT,gBAAgB;EAChB,aAAa;EACb,gBAAgB;EAChB,aAAa;EACb,eAAe;EACf,QAAQ;EACR,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,WAAW;EACX,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,eAAe;EACf,UAAU;AACZ;;AAEA;EACE,oBAAoB;EACpB,qBAAqB;EACrB,aAAa;EACb,sCAAsC;EACtC,8BAA8B;EAC9B,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,mBAAmB;EACnB,oBAAoB;EACpB,qBAAqB;EACrB,aAAa;EACb,YAAY;EACZ,sCAAsC;EACtC,8BAA8B;EAC9B,aAAa;AACf;;AAEA;EACE,cAAc;EACd;;;;;;;;2BAQyB;AAC3B;;AAEA;EACE,gBAAgB;EAChB,4BAA4B;EAC5B,gBAAgB;EAChB,QAAQ;EACR,WAAW;AACb;;AAEA;EACE,gBAAgB;EAChB,4BAA4B;EAC5B,gBAAgB;EAChB,QAAQ;EACR,iBAAiB;EACjB,WAAW;AACb;;AAEA;EACE,4BAA4B;EAC5B,gBAAgB;EAChB,QAAQ;AACV;;AAEA;EACE;IACE,UAAU;IACV,SAAS;EACX;AACF\",sourcesContent:[\".rs-base {\\n background-color: #333;\\n color: #fafafa;\\n border-radius: 0;\\n font: 10px monospace;\\n left: 5px;\\n line-height: 1em;\\n opacity: 0.85;\\n overflow: hidden;\\n padding: 10px;\\n position: fixed;\\n top: 5px;\\n width: 300px;\\n z-index: 10000;\\n}\\n\\n.rs-base div.hidden {\\n display: none;\\n}\\n\\n.rs-base h1 {\\n color: #fff;\\n cursor: pointer;\\n font-size: 1.4em;\\n font-weight: 300;\\n margin: 0 0 5px;\\n padding: 0;\\n}\\n\\n.rs-group {\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: flex;\\n -webkit-flex-direction: column-reverse;\\n flex-direction: column-reverse;\\n margin-bottom: 5px;\\n}\\n\\n.rs-group:last-child {\\n margin-bottom: 0;\\n}\\n\\n.rs-counter-base {\\n align-items: center;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: flex;\\n height: 10px;\\n -webkit-justify-content: space-between;\\n justify-content: space-between;\\n margin: 2px 0;\\n}\\n\\n.rs-counter-base.alarm {\\n color: #b70000;\\n text-shadow: 0 0 0 #b70000,\\n 0 0 1px #fff,\\n 0 0 1px #fff,\\n 0 0 2px #fff,\\n 0 0 2px #fff,\\n 0 0 3px #fff,\\n 0 0 3px #fff,\\n 0 0 4px #fff,\\n 0 0 4px #fff;\\n}\\n\\n.rs-counter-id {\\n font-weight: 300;\\n -webkit-box-ordinal-group: 0;\\n -webkit-order: 0;\\n order: 0;\\n width: 54px;\\n}\\n\\n.rs-counter-value {\\n font-weight: 300;\\n -webkit-box-ordinal-group: 1;\\n -webkit-order: 1;\\n order: 1;\\n text-align: right;\\n width: 35px;\\n}\\n\\n.rs-canvas {\\n -webkit-box-ordinal-group: 2;\\n -webkit-order: 2;\\n order: 2;\\n}\\n\\n@media (min-width: 480px) {\\n .rs-base {\\n left: 20px;\\n top: 20px;\\n }\\n}\\n\"],sourceRoot:\"\"}]);const a=o},6924:(e,t,n)=>{\"use strict\";n.r(t),n.d(t,{default:()=>g});var i=n(3379),r=n.n(i),s=n(7795),o=n.n(s),a=n(569),l=n.n(a),c=n(3565),h=n.n(c),u=n(9216),d=n.n(u),p=n(4589),A=n.n(p),f=n(1248),m={};m.styleTagTransform=A(),m.setAttributes=h(),m.insert=l().bind(null,\"head\"),m.domAPI=o(),m.insertStyleElement=d(),r()(f.Z,m);const g=f.Z&&f.Z.locals?f.Z.locals:void 0},1353:(e,t,n)=>{\"use strict\";n.r(t),n.d(t,{default:()=>g});var i=n(3379),r=n.n(i),s=n(7795),o=n.n(s),a=n(569),l=n.n(a),c=n(3565),h=n.n(c),u=n(9216),d=n.n(u),p=n(4589),A=n.n(p),f=n(7098),m={};m.styleTagTransform=A(),m.setAttributes=h(),m.insert=l().bind(null,\"head\"),m.domAPI=o(),m.insertStyleElement=d(),r()(f.Z,m);const g=f.Z&&f.Z.locals?f.Z.locals:void 0},3379:e=>{\"use strict\";var t=[];function n(e){for(var n=-1,i=0;i\u003Ct.length;i++)if(t[i].identifier===e){n=i;break}return n}function i(e,i){for(var s={},o=[],a=0;a\u003Ce.length;a++){var l=e[a],c=i.base?l[0]+i.base:l[0],h=s[c]||0,u=\"\".concat(c,\" \").concat(h);s[c]=h+1;var d=n(u),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==d)t[d].references++,t[d].updater(p);else{var A=r(p,i);i.byIndex=a,t.splice(a,0,{identifier:u,updater:A,references:1})}o.push(u)}return o}function r(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,r){var s=i(e=e||[],r=r||{});return function(e){e=e||[];for(var o=0;o\u003Cs.length;o++){var a=n(s[o]);t[a].references--}for(var l=i(e,r),c=0;c\u003Cs.length;c++){var h=n(s[c]);0===t[h].references&&(t[h].updater(),t.splice(h,1))}s=l}}},569:e=>{\"use strict\";var t={};e.exports=function(e,n){var i=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!i)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");i.appendChild(n)}},9216:e=>{\"use strict\";e.exports=function(e){var t=document.createElement(\"style\");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,n)=>{\"use strict\";e.exports=function(e){var t=n.nc;t&&e.setAttribute(\"nonce\",t)}},7795:e=>{\"use strict\";e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var i=\"\";n.supports&&(i+=\"@supports (\".concat(n.supports,\") {\")),n.media&&(i+=\"@media \".concat(n.media,\" {\"));var r=void 0!==n.layer;r&&(i+=\"@layer\".concat(n.layer.length>0?\" \".concat(n.layer):\"\",\" {\")),i+=n.css,r&&(i+=\"}\"),n.media&&(i+=\"}\"),n.supports&&(i+=\"}\");var s=n.sourceMap;s&&\"undefined\"!=typeof btoa&&(i+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s)))),\" */\")),t.styleTagTransform(i,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{\"use strict\";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},5059:e=>{\"use strict\";e.exports=\"data:image/svg+xml,%3C%3Fxml version=%271.0%27 encoding=%27UTF-8%27 standalone=%27no%27%3F%3E%3Csvg width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27 version=%271.1%27 id=%27svg320%27 sodipodi:docname=%27fullscreen-aframe.svg%27 xml:space=%27preserve%27 inkscape:version=%271.2.1 %289c6d41e 2022-07-14%29%27 xmlns:inkscape=%27http://www.inkscape.org/namespaces/inkscape%27 xmlns:sodipodi=%27http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:svg=%27http://www.w3.org/2000/svg%27 xmlns:rdf=%27http://www.w3.org/1999/02/22-rdf-syntax-ns%23%27 xmlns:cc=%27http://creativecommons.org/ns%23%27 xmlns:dc=%27http://purl.org/dc/elements/1.1/%27%3E%3Cdefs id=%27defs324%27 /%3E%3Csodipodi:namedview id=%27namedview322%27 pagecolor=%27%23ffffff%27 bordercolor=%27%23000000%27 borderopacity=%270.25%27 inkscape:showpageshadow=%272%27 inkscape:pageopacity=%270.0%27 inkscape:pagecheckerboard=%270%27 inkscape:deskcolor=%27%23d1d1d1%27 showgrid=%27false%27 inkscape:zoom=%273.8064516%27 inkscape:cx=%2791.423729%27 inkscape:cy=%27-1.4449153%27 inkscape:window-width=%271440%27 inkscape:window-height=%27847%27 inkscape:window-x=%2732%27 inkscape:window-y=%2725%27 inkscape:window-maximized=%270%27 inkscape:current-layer=%27svg320%27 /%3E%3Ctitle id=%27title312%27%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M96 0H12A12 12 0 0 0 0 12V50A12 12 0 0 0 12 62H96a12 12 0 0 0 12-12V12A12 12 0 0 0 96 0Zm8 50a8 8 0 0 1-8 8H12a8 8 0 0 1-8-8V12a8 8 0 0 1 8-8H96a8 8 0 0 1 8 8Z%27 fill=%27%23fff%27 id=%27path314%27 style=%27fill:%23ffffff%27 /%3E%3Cg id=%27g356%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g358%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g360%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g362%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g364%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g366%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g368%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g370%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g372%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g374%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g376%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g378%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g380%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g382%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g384%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cmetadata id=%27metadata561%27%3E%3Crdf:RDF%3E%3Ccc:Work rdf:about=%27%27%3E%3Cdc:title%3Eaframe-armode-noborder-reduced-tracking%3C/dc:title%3E%3C/cc:Work%3E%3C/rdf:RDF%3E%3C/metadata%3E%3Cpath d=%27m 98.168511 40.083649 c 0 -1.303681 -0.998788 -2.358041 -2.239389 -2.358041 -1.230088 0.0031 -2.240892 1.05436 -2.240892 2.358041 v 4.881296 l -9.041661 -9.041662 c -0.874129 -0.875631 -2.288954 -0.875631 -3.16308 0 -0.874129 0.874126 -0.874129 2.293459 0 3.167585 l 8.995101 8.992101 h -4.858767 c -1.323206 0.0031 -2.389583 1.004796 -2.389583 2.239386 0 1.237598 1.066377 2.237888 2.389583 2.237888 h 10.154599 c 1.323206 0 2.388082 -0.998789 2.392587 -2.237888 -0.0044 -0.03305 -0.009 -0.05858 -0.0134 -0.09161 0.0046 -0.04207 0.0134 -0.08712 0.0134 -0.13066 V 40.085172 h -1.52e-4%27 id=%27path596%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 23.091002 35.921781 -9.026643 9.041662 v -4.881296 c 0 -1.303681 -1.009302 -2.355037 -2.242393 -2.358041 -1.237598 0 -2.237888 1.05436 -2.237888 2.358041 l -0.0031 10.016421 c 0 0.04356 0.01211 0.08862 0.0015 0.130659 -0.0031 0.03153 -0.009 0.05709 -0.01211 0.09161 0.0031 1.239099 1.069379 2.237888 2.391085 2.237888 h 10.156101 c 1.320202 0 2.388079 -1.000291 2.388079 -2.237888 0 -1.234591 -1.067877 -2.236383 -2.388079 -2.239387 h -4.858767 l 8.995101 -8.9921 c 0.871126 -0.874127 0.871126 -2.293459 0 -3.167586 -0.875628 -0.877132 -2.291957 -0.877132 -3.169087 -1.52e-4%27 id=%27path598%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 84.649572 25.978033 9.041662 -9.041664 v 4.881298 c 0 1.299176 1.010806 2.350532 2.240891 2.355037 1.240601 0 2.23939 -1.055861 2.23939 -2.355037 V 11.798242 c 0 -0.04356 -0.009 -0.08862 -0.0134 -0.127671 0.0044 -0.03153 0.009 -0.06157 0.0134 -0.09313 -0.0044 -1.240598 -1.069379 -2.2393873 -2.391085 -2.2393873 h -10.1546 c -1.323205 0 -2.38958 0.9987893 -2.38958 2.2393873 0 1.233091 1.066375 2.237887 2.38958 2.240891 h 4.858768 l -8.995102 8.9921 c -0.874129 0.872625 -0.874129 2.288954 0 3.161578 0.874127 0.880137 2.288951 0.880137 3.16308 1.5e-4%27 id=%27path600%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 17.264988 13.822853 h 4.857265 c 1.320202 -0.0031 2.388079 -1.0078 2.388079 -2.240889 0 -1.240601 -1.067877 -2.2393893 -2.388079 -2.2393893 H 11.967654 c -1.321707 0 -2.388082 0.9987883 -2.391085 2.2393893 0.0031 0.03153 0.009 0.06157 0.01211 0.09313 -0.0031 0.03905 -0.0015 0.08262 -0.0015 0.127671 l 0.0031 10.020926 c 0 1.299176 1.00029 2.355038 2.237887 2.355038 1.233092 -0.0044 2.242393 -1.055862 2.242393 -2.355038 v -4.881295 l 9.026644 9.041661 c 0.877132 0.878635 2.293459 0.878635 3.169087 0 0.871125 -0.872624 0.871125 -2.288953 0 -3.161577 l -8.995282 -8.993616%27 id=%27path602%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3C/svg%3E\"},7513:e=>{\"use strict\";e.exports=\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27%3E%3Ctitle%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0Zm8,50a8,8,0,0,1-8,8H12a8,8,0,0,1-8-8V12a8,8,0,0,1,8-8H96a8,8,0,0,1,8,8Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M43.35,39.82H32.51L30.45,46H23.88L35,16h5.73L52,46H45.43Zm-9.17-5h7.5L37.91,23.58Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M68.11,35H63.18V46H57V16H68.15q5.31,0,8.2,2.37a8.18,8.18,0,0,1,2.88,6.7,9.22,9.22,0,0,1-1.33,5.12,9.09,9.09,0,0,1-4,3.26l6.49,12.26V46H73.73Zm-4.93-5h5a5.09,5.09,0,0,0,3.6-1.18,4.21,4.21,0,0,0,1.28-3.27,4.56,4.56,0,0,0-1.2-3.34A5,5,0,0,0,68.15,21h-5Z%27 fill=%27%23fff%27/%3E%3C/svg%3E\"},3646:e=>{\"use strict\";e.exports=\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27%3E%3Ctitle%3Eaframe-vrmode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M68.81,21.56H64.23v8.27h4.58a4.13,4.13,0,0,0,3.1-1.09,4.2,4.2,0,0,0,1-3,4.24,4.24,0,0,0-1-3A4.05,4.05,0,0,0,68.81,21.56Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0ZM41.9,46H34L24,16h8l6,21.84,6-21.84H52Zm39.29,0H73.44L68.15,35.39H64.23V46H57V16H68.81q5.32,0,8.34,2.37a8,8,0,0,1,3,6.69,9.68,9.68,0,0,1-1.27,5.18,8.9,8.9,0,0,1-4,3.34l6.26,12.11Z%27 fill=%27%23fff%27/%3E%3C/svg%3E\"},5581:e=>{\"use strict\";e.exports=\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%20100%20100%22%20enable-background%3D%22new%200%200%20100%20100%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M55.209%2C50l17.803-17.803c1.416-1.416%2C1.416-3.713%2C0-5.129c-1.416-1.417-3.713-1.417-5.129%2C0L50.08%2C44.872%20%20L32.278%2C27.069c-1.416-1.417-3.714-1.417-5.129%2C0c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129L44.951%2C50L27.149%2C67.803%20%20c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129c0.708%2C0.708%2C1.636%2C1.062%2C2.564%2C1.062c0.928%2C0%2C1.856-0.354%2C2.564-1.062L50.08%2C55.13l17.803%2C17.802%20%20c0.708%2C0.708%2C1.637%2C1.062%2C2.564%2C1.062s1.856-0.354%2C2.564-1.062c1.416-1.416%2C1.416-3.713%2C0-5.129L55.209%2C50z%22%3E%3C/path%3E%3C/svg%3E\"},576:e=>{\"use strict\";e.exports=\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2090%2090%22%20enable-background%3D%22new%200%200%2090%2090%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%220%2C0%200%2C0%200%2C0%20%22%3E%3C/polygon%3E%3Cg%3E%3Cpath%20d%3D%22M71.545%2C48.145h-31.98V20.743c0-2.627-2.138-4.765-4.765-4.765H18.456c-2.628%2C0-4.767%2C2.138-4.767%2C4.765v42.789%20%20%20c0%2C2.628%2C2.138%2C4.766%2C4.767%2C4.766h5.535v0.959c0%2C2.628%2C2.138%2C4.765%2C4.766%2C4.765h42.788c2.628%2C0%2C4.766-2.137%2C4.766-4.765V52.914%20%20%20C76.311%2C50.284%2C74.173%2C48.145%2C71.545%2C48.145z%20M18.455%2C16.935h16.344c2.1%2C0%2C3.808%2C1.708%2C3.808%2C3.808v27.401H37.25V22.636%20%20%20c0-0.264-0.215-0.478-0.479-0.478H16.482c-0.264%2C0-0.479%2C0.214-0.479%2C0.478v36.585c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h7.507v7.644%20%20%20h-5.534c-2.101%2C0-3.81-1.709-3.81-3.81V20.743C14.645%2C18.643%2C16.354%2C16.935%2C18.455%2C16.935z%20M16.96%2C23.116h19.331v25.031h-7.535%20%20%20c-2.628%2C0-4.766%2C2.139-4.766%2C4.768v5.828h-7.03V23.116z%20M71.545%2C73.064H28.757c-2.101%2C0-3.81-1.708-3.81-3.808V52.914%20%20%20c0-2.102%2C1.709-3.812%2C3.81-3.812h42.788c2.1%2C0%2C3.809%2C1.71%2C3.809%2C3.812v16.343C75.354%2C71.356%2C73.645%2C73.064%2C71.545%2C73.064z%22%3E%3C/path%3E%3Cpath%20d%3D%22M28.919%2C58.424c-1.466%2C0-2.659%2C1.193-2.659%2C2.66c0%2C1.466%2C1.193%2C2.658%2C2.659%2C2.658c1.468%2C0%2C2.662-1.192%2C2.662-2.658%20%20%20C31.581%2C59.617%2C30.387%2C58.424%2C28.919%2C58.424z%20M28.919%2C62.786c-0.939%2C0-1.703-0.764-1.703-1.702c0-0.939%2C0.764-1.704%2C1.703-1.704%20%20%20c0.94%2C0%2C1.705%2C0.765%2C1.705%2C1.704C30.623%2C62.022%2C29.858%2C62.786%2C28.919%2C62.786z%22%3E%3C/path%3E%3Cpath%20d%3D%22M69.654%2C50.461H33.069c-0.264%2C0-0.479%2C0.215-0.479%2C0.479v20.288c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h36.585%20%20%20c0.263%2C0%2C0.477-0.214%2C0.477-0.478V50.939C70.131%2C50.676%2C69.917%2C50.461%2C69.654%2C50.461z%20M69.174%2C51.417V70.75H33.548V51.417H69.174z%22%3E%3C/path%3E%3Cpath%20d%3D%22M45.201%2C30.296c6.651%2C0%2C12.233%2C5.351%2C12.551%2C11.977l-3.033-2.638c-0.193-0.165-0.507-0.142-0.675%2C0.048%20%20%20c-0.174%2C0.198-0.153%2C0.501%2C0.045%2C0.676l3.883%2C3.375c0.09%2C0.075%2C0.198%2C0.115%2C0.312%2C0.115c0.141%2C0%2C0.273-0.061%2C0.362-0.166%20%20%20l3.371-3.877c0.173-0.2%2C0.151-0.502-0.047-0.675c-0.194-0.166-0.508-0.144-0.676%2C0.048l-2.592%2C2.979%20%20%20c-0.18-3.417-1.629-6.605-4.099-9.001c-2.538-2.461-5.877-3.817-9.404-3.817c-0.264%2C0-0.479%2C0.215-0.479%2C0.479%20%20%20C44.72%2C30.083%2C44.936%2C30.296%2C45.201%2C30.296z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E\"},4147:e=>{\"use strict\";e.exports=JSON.parse('{\"name\":\"aframe\",\"version\":\"1.4.0\",\"description\":\"A web framework for building virtual reality experiences.\",\"homepage\":\"https://aframe.io/\",\"main\":\"dist/aframe-master.js\",\"scripts\":{\"dev\":\"cross-env INSPECTOR_VERSION=dev webpack serve --port 8080\",\"dist\":\"node scripts/updateVersionLog.js && npm run dist:min && npm run dist:max\",\"dist:max\":\"webpack --config webpack.config.js\",\"dist:min\":\"webpack --config webpack.prod.config.js\",\"docs\":\"markserv --dir docs --port 9001\",\"preghpages\":\"node ./scripts/preghpages.js\",\"ghpages\":\"ghpages -p gh-pages/\",\"lint\":\"semistandard -v | snazzy\",\"lint:fix\":\"semistandard --fix\",\"precommit\":\"npm run lint\",\"prepush\":\"node scripts/testOnlyCheck.js\",\"prerelease\":\"node scripts/release.js 1.3.0 1.4.0\",\"start\":\"npm run dev\",\"start:https\":\"npm run dev -- --server-type https\",\"test\":\"karma start ./tests/karma.conf.js\",\"test:docs\":\"node scripts/docsLint.js\",\"test:firefox\":\"npm test -- --browsers Firefox\",\"test:chrome\":\"npm test -- --browsers Chrome\",\"test:nobrowser\":\"NO_BROWSER=true npm test\",\"test:node\":\"mocha --ui tdd tests/node\"},\"repository\":\"aframevr/aframe\",\"license\":\"MIT\",\"files\":[\"dist/*\",\"docs/**/*\",\"src/**/*\",\"vendor/**/*\"],\"dependencies\":{\"buffer\":\"^6.0.3\",\"custom-event-polyfill\":\"^1.0.6\",\"debug\":\"ngokevin/debug#noTimestamp\",\"deep-assign\":\"^2.0.0\",\"@ungap/custom-elements\":\"^1.1.0\",\"load-bmfont\":\"^1.2.3\",\"object-assign\":\"^4.0.1\",\"present\":\"0.0.6\",\"promise-polyfill\":\"^3.1.0\",\"super-animejs\":\"^3.1.0\",\"super-three\":\"^0.147.0\",\"three-bmfont-text\":\"dmarcos/three-bmfont-text#21d017046216e318362c48abd1a48bddfb6e0733\",\"webvr-polyfill\":\"^0.10.12\"},\"devDependencies\":{\"@babel/core\":\"^7.17.10\",\"babel-loader\":\"^8.2.5\",\"babel-plugin-istanbul\":\"^6.1.1\",\"chai\":\"^4.3.6\",\"chai-shallow-deep-equal\":\"^1.4.0\",\"chalk\":\"^1.1.3\",\"cross-env\":\"^7.0.3\",\"css-loader\":\"^6.7.1\",\"ghpages\":\"0.0.8\",\"git-rev\":\"^0.2.1\",\"glob\":\"^8.0.3\",\"husky\":\"^0.11.7\",\"jsdom\":\"^20.0.0\",\"karma\":\"^6.4.0\",\"karma-chai-shallow-deep-equal\":\"0.0.4\",\"karma-chrome-launcher\":\"^3.1.1\",\"karma-coverage\":\"^2.2.0\",\"karma-env-preprocessor\":\"^0.1.1\",\"karma-firefox-launcher\":\"^2.1.2\",\"karma-mocha\":\"^2.0.1\",\"karma-mocha-reporter\":\"^2.2.5\",\"karma-sinon-chai\":\"^2.0.2\",\"karma-webpack\":\"^5.0.0\",\"markserv\":\"github:sukima/markserv#feature/fix-broken-websoketio-link\",\"mocha\":\"^10.0.0\",\"replace-in-file\":\"^2.5.3\",\"semistandard\":\"^9.0.0\",\"shelljs\":\"^0.7.7\",\"shx\":\"^0.2.2\",\"sinon\":\"\u003C12.0.0\",\"sinon-chai\":\"^3.7.0\",\"snazzy\":\"^5.0.0\",\"style-loader\":\"^3.3.1\",\"too-wordy\":\"ngokevin/too-wordy\",\"webpack\":\"^5.73.0\",\"webpack-cli\":\"^4.10.0\",\"webpack-dev-server\":\"^4.11.0\",\"webpack-merge\":\"^5.8.0\",\"write-good\":\"^1.0.8\"},\"link\":true,\"semistandard\":{\"ignore\":[\"build/**\",\"dist/**\",\"examples/**/shaders/*.js\",\"**/vendor/**\"]},\"keywords\":[\"3d\",\"aframe\",\"cardboard\",\"components\",\"oculus\",\"three\",\"three.js\",\"rift\",\"vive\",\"vr\",\"web-components\",\"webvr\"],\"engines\":{\"node\":\">= 4.6.0\",\"npm\":\">= 2.15.9\"}}')}},t={};function n(i){var r=t[i];if(void 0!==r)return r.exports;var s=t[i]={id:i,exports:{}};return e[i].call(s.exports,s,s.exports,n),s.exports}return n.m=e,n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.b=document.baseURI||self.location.href,n.nc=void 0,n(5579)})()));\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/aframe.min.js","modified":"20230426064613869"},
-{"created":"20230423163601005","text":"code{\n\tfont-size:12px;\n}\n\n.video-js{\n\tbackground:#FFF;\n}\n\n.nc-sidebar h1.tc-site-title {\n margin: 0;\n text-indent: 113px;\n font-size: 15px !important;\n vertical-align: bottom;\n display: block;\n margin-top: 11px;\n}\n\nh1.tc-site-title::before {\n display: block;\n position: absolute;\n content: \"\";\n width: 99px;\n height: 100px;\n background: url(./example/assets/logo.png) no-repeat;\n background-size: contain;\n transform: translate(0px,-11px);\n}\n\n.nc-sidebar .section.open .label {\n background: linear-gradient(45deg,#7f4bca, #08F, #7f4bca)\n}\n\nbody.tc-body,\n.nc-bar.nc-topbar{\n background: #FFF;\n}\n\n.tc-site-title {\n color: #0a81FF;\n}\n\n.tc-story-river{\n width:100% !important;\n} \n\ntable tr td {\n\ttext-align:left;\n}\n\na,\na:visited,\na:focus-visible{\n color:#0a81FF\n}\na:hover{\n opacity:0.8;\n}\n\n\n.nc-sidebar{\n box-shadow: 0px 0px 0px 15px 0px 0px #0006;\n}\n\n.tc-tiddler-preview-preview iframe{\n width:100%;\n height:50vh;\n max-height:380px;\n}\n\n.tc-tiddler-preview-preview {\n border:none;\n overflow-y:auto;\n}\n\n@media only screen and (max-width: 500px) {\n .tc-tiddler-body > embed, \n .tc-tiddler-body > iframe {\n max-height:300px;\n }\n}\n\n\n.tc-tiddler-body, iframe{\n border-radius:7px;\n}\n\n.tc-tiddler-frame{\n\tborder:none;\n\tbox-shadow:none !important;\n}\n\n.nc-bar input[type=\"search\"]{\n background:#EEE;\n}\n.nc-bar {\n height:47px;\n}\n\n.CodeMirror {\n font-size:13px;\n}\n\nshader-doodle,\n.scene{\n width:100%;\n height:50vh; \n max-height:365px;\n}\n\n.scene canvas {\n border-radius:6px;\n}\n\n.scene pre {\n margin-top:0;\n}\n\npre.result::before {\n display: block;\n position: absolute;\n width: 51px;\n height: 20px;\n background: #FFF;\n content: \"output\";\n transform: translate(-13px,-25px);\n color: #FFFF;\n background: #555;\n text-indent: 5px;\n border-radius: 4px 4px 0px 0px;\n font-weight: bold;\n font-size: 11px;\n}\n\npre.result {\n background: #555;\n color: #ccc;\n margin: 0;\n border: 0;\n padding: 5px;\n border-radius: 0px 0px 6px 6px;\n vertical-align: top;\n padding-left: 13px;\n\t\tborder-top: 1px solid #ff02b5\n}\ntextarea.sandboxify.noresult {\n border-radius: 6px 6px 6px 6px;\n}\ntextarea.sandboxify {\n padding: 13px 13px 26px 13px;\n font-family: \"Fira Mono\",\"Liberation Mono\",Menlo,Courier,monospace;\n color: #ddddff;\n background: #333;\n border-radius: 6px 6px 0px 0px;\n vertical-align: top;\n min-height: 50px;\n white-space: nowrap;\n}\ntextarea.sandboxify, pre.result {\n width: 100%;\n max-width: 485px;\n min-width: 350px;\n display: inline-block;\n font-size: 13px;\n display: inline-block;\n box-sizing: border-box;\n\t\theight:14vh;\n\t\toverflow-y:auto\n}\n\n.border{\n border: 1px solid #ccc;\n box-shadow: 0px 0px 10px #0004;\n}\n\n/* hide admin buttons */\nbody#p .nc-sidebar .tc-reveal:nth-child(6),\nbody#p .nc-sidebar .tc-reveal:nth-child(8),\nbody#p .nc-sidebar .tc-reveal:nth-child(10),\nbody#p .nc-sidebar .tc-reveal:nth-child(12),\nbody#p .nc-sidebar .tc-reveal:nth-child(14){\n\tdisplay:none\n}\n\n.st, .dn, .se, .rr { color:#FFF; display:inline-block; padding:0px 3px; border-radius:5px; font-size:12px;margin:0px 5px 0px 0px} \n.st { background:#FA0;}\n.dn { background:#F0A;}\n.se { background:#0FA;}\n.rr { background:#0AF;}\n.st > .dn,\n.st > .rr { margin-left:5px;display:inline;}\n\n .jumbo { \n\t font-size:120px; \n\t\tfont-weight: bold;\n\t\tline-height:170px;\n\t\tdisplay:inline-block;\n\t}\n .big { \n\t font-size:40px;\n\t font-weight:bold;\n\t}\n .hi1 { color:#F0F;}\n\t.hi2 { color:#999;}\n\t.hi3 { color:#0dd;}\n\n","tags":"$:/tags/Stylesheet","title":"$:/webxr-notebook/boot.css","modified":"20230808120015069","type":"text/css"},
+{"created":"20230423163601005","text":"code{\n\tfont-size:12px;\n}\n\n.video-js{\n\tbackground:#FFF;\n}\n\n.nc-sidebar h1.tc-site-title {\n margin: 0;\n text-indent: 113px;\n font-size: 15px !important;\n vertical-align: bottom;\n display: block;\n margin-top: 11px;\n}\n\nh1.tc-site-title::before {\n display: block;\n position: absolute;\n content: \"\";\n width: 99px;\n height: 100px;\n background: url(./example/assets/logo.png) no-repeat;\n background-size: contain;\n transform: translate(0px,-11px);\n}\n\n.nc-sidebar .section.open .label {\n background: linear-gradient(45deg,#7f4bca, #08F, #7f4bca)\n}\n\nbody.tc-body,\n.nc-bar.nc-topbar{\n background: #FFF;\n}\n\n.tc-site-title {\n color: #0a81FF;\n}\n\n.tc-story-river{\n width:100% !important;\n} \n\ntable tr td {\n\ttext-align:left;\n}\n\na,\na:visited,\na:focus-visible{\n color:#0a81FF\n}\na:hover{\n opacity:0.8;\n}\n\n\n.nc-sidebar{\n box-shadow: 0px 0px 0px 15px 0px 0px #0006;\n}\n\n.tc-tiddler-preview-preview iframe{\n width:100%;\n height:50vh;\n max-height:380px;\n}\n\n.tc-tiddler-preview-preview {\n border:none;\n overflow-y:auto;\n}\n\n@media only screen and (max-width: 500px) {\n .tc-tiddler-body > embed, \n .tc-tiddler-body > iframe {\n max-height:300px;\n }\n}\n\n\n.tc-tiddler-body, iframe{\n border-radius:7px;\n}\n\n.tc-tiddler-frame{\n\tborder:none;\n\tbox-shadow:none !important;\n}\n\n.nc-bar input[type=\"search\"]{\n background:#EEE;\n}\n.nc-bar {\n height:47px;\n}\n\n.CodeMirror {\n font-size:13px;\n}\n\nshader-doodle,\n.scene{\n width:100%;\n height:50vh; \n max-height:365px;\n}\n\n.scene canvas {\n border-radius:6px;\n}\n\n.scene pre {\n margin-top:0;\n}\n\npre.result::before {\n display: block;\n position: absolute;\n width: 51px;\n height: 20px;\n background: #FFF;\n content: \"output\";\n transform: translate(-13px,-25px);\n color: #FFFF;\n background: #555;\n text-indent: 5px;\n border-radius: 4px 4px 0px 0px;\n font-weight: bold;\n font-size: 11px;\n}\n\npre.result {\n background: #555;\n color: #ccc;\n margin: 0;\n border: 0;\n padding: 5px;\n border-radius: 0px 0px 6px 6px;\n vertical-align: top;\n padding-left: 13px;\n\t\tborder-top: 1px solid #ff02b5\n}\ntextarea.sandboxify.noresult {\n border-radius: 6px 6px 6px 6px;\n}\ntextarea.sandboxify {\n padding: 13px 13px 26px 13px;\n font-family: \"Fira Mono\",\"Liberation Mono\",Menlo,Courier,monospace;\n color: #ddddff;\n background: #333;\n border-radius: 6px 6px 0px 0px;\n vertical-align: top;\n min-height: 50px;\n white-space: nowrap;\n}\ntextarea.sandboxify, pre.result {\n width: 100%;\n max-width: 485px;\n min-width: 350px;\n display: inline-block;\n font-size: 13px;\n display: inline-block;\n box-sizing: border-box;\n\t\theight:14vh;\n\t\toverflow-y:auto\n}\n\n.border{\n border: 1px solid #ccc;\n box-shadow: 0px 0px 10px #0004;\n}\n\n/* hide admin buttons */\nbody#p .nc-sidebar .tc-reveal:nth-child(6),\nbody#p .nc-sidebar .tc-reveal:nth-child(8),\nbody#p .nc-sidebar .tc-reveal:nth-child(10),\nbody#p .nc-sidebar .tc-reveal:nth-child(12),\nbody#p .nc-sidebar .tc-reveal:nth-child(14){\n\tdisplay:none\n}\n\n.st, .dn, .se, .rr { color:#FFF; display:inline-block; padding:0px 3px; border-radius:5px; font-size:12px;margin:0px 5px 0px 0px} \n.st { background:#FA0;}\n.dn { background:#F0A;}\n.se { background:#0FA;}\n.rr { background:#0AF;}\n.st > .dn,\n.st > .rr { margin-left:5px;display:inline;}\n\n .jumbo { \n\t font-size:120px; \n\t\tfont-weight: bold;\n\t\tline-height:170px;\n\t\tdisplay:inline-block;\n\t}\n .big { \n\t font-size:40px;\n\t font-weight:bold;\n\t}\n .hi1 { color:#F0F;}\n\t.hi2 { color:#999;}\n\t.hi3 { color:#0dd;}\n\n\niframe.spec{\n\twidth:100%;\n\theight:50vh;\n\tmax-width:1000px;\n\tborder: 1px solid #DDD;\n\tpadding: 20px 0px 20px 0px;\n\tbackground: #F7f7f7;\n}\n\t\n","tags":"$:/tags/Stylesheet","title":"$:/webxr-notebook/boot.css","modified":"20230918085841974","type":"text/css"},
{"created":"20230425145424360","text":"\u003Cscript>\nwindow.onerror=null\nif( typeof $tw != 'undefined' ) $tw.config.htmlUnsafeElements = [];\n\u003C/script>\n\n\u003C!-- browser console -->\n\u003Cscript>\n(function(){\n\t$ = (s) => document.querySelector(s)\n\twindow.errcolor = '#000c'\n \n let isLocalHost = () => document.location.hostname == 'localhost'\n if( !isLocalHost() ) setTimeout( () => window.document.body.id = \"p\",50) \n\n\twindow.log = (str,line,bgcolor) => {\n\t\tline = line || 0\n\t\t$scene = $('.scene')\n\t\t$console = $('.console')\n\t\tif( !$scene ) return;\n\t\t$scene.style.position = 'relative'\n\t\tif( !$console ){\n\t\t\tlet el = $console = document.createElement(\"pre\")\n\t\t\tel.className = \"console\"\n\t\t\tel.style.position = 'absolute';\n\t\t\tel.style.top = el.style.left = el.style.bottom = el.style.right = '0'\n\t\t\tel.style.zIndex = 1000;\n\t\t\tel.style.fontSize = '12px'\n\t\t\tel.style.padding = '10px'\n\t\t\tel.style.color = '#0CF'\n\t\t\tel.style.pointerEvents = 'none'\n\t\t\t$scene.appendChild($console)\n\t\t}\n\t\t$console.style.background = bgcolor ? bgcolor : 'transparent'\n\t\tlet lines = String($console.innerHTML).split(\"\\n\")\n\t\t\tlines[line] = str\n\t\t$console.innerHTML = lines.join(\"\\n\")\n\t}\n\n\tvar error = (event, source, lineno, colno, error) => {\n\t\tlog(lineno+\":\"+colno+\" \"+error, errcolor)\n\t}\n\twindow.onerror = log\n\tconsole.error = (s) => log(\"error: \"+s.toString(),errcolor)\n\n})()\n\u003C/script>\n\n\u003C!-- PWA service worker -->\n\u003Cscript>\n(function(){\n let isLocalHost = () => document.location.hostname == 'localhost'\n\n\t\t\tconst registerServiceWorker = async () => {\n if( isLocalHost() ) return\n\t\t\t\tif ('serviceWorker' in navigator) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst registration = await navigator.serviceWorker.register(\n\t\t\t\t\t\t\t\"./sw.js\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tscope: './',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (registration.installing) {\n\t\t\t\t\t\t\tconsole.log('Service worker installing');\n\t\t\t\t\t\t} else if (registration.waiting) {\n\t\t\t\t\t\t\tconsole.log('Service worker installed');\n\t\t\t\t\t\t} else if (registration.active) {\n\t\t\t\t\t\t\tconsole.log('Service worker active');\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error(\"Registration failed with \"+error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n if (document.readyState === 'complete') registerServiceWorker();\n else document.addEventListener(\"DOMContentLoaded\", registerServiceWorker);\n\n if ( !isLocalHost() && \"serviceWorker\" in navigator) { \n window.addEventListener(\"load\", async () => {\n try {\n const registration = await navigator.serviceWorker.register(\"./sw.js\");\n } catch (e) { console.error(e) }\n });\n window.addEventListener(\"beforeinstallprompt\", function (e) {\n e.userChoice.then(function (choiceResult) {\n if (choiceResult.outcome == \"dismissed\") {\n console.log(\"User cancelled home screen install\");\n } else console.log(\"User added to home screen\");\n });\n });\n }\n\t\t\t\n})()\n\u003C/script>\n","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/boot.html","modified":"20230428151719616"},
{"created":"20230427081708927","text":"\u003C!-- sandboxify textareas with class 'sandboxify' -->\n\u003Cscript>\n\nfunction sandboxify() { \n let run = (t) => {\n let $res = t.parentElement.children[1]\n function log(res){\n\t\t if( !$res ) return\n $res.innerHTML = typeof res == 'string' ? res : JSON.stringify(res,null,2)\n }\n let _log = console.log\n console.log = log\n try{\n eval(t.value); \n }catch(e){ log(e) }finally{ console.log = _log }\n } \n const textareas = document.querySelectorAll(\"textarea.sandboxify\");\n textareas.forEach(t => {\n t.addEventListener(\"input\", function (event) {\n\t\t if( String(t.className).match(/noresult/) ) return\n try {\n run(t)\n } catch (error) {\n console.error(error);\n }\n });\n run(t)\n }); \n}\n\n// call sandboxify once on page load\nsandboxify();\n\n// set up a MutationObserver to call sandboxify on any new textareas added to the DOM\nconst observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.addedNodes && mutation.addedNodes.length > 0) {\n const addedNodes = mutation.addedNodes;\n addedNodes.forEach(addedNode => {\n if (addedNode.tagName === \"TEXTAREA\" && addedNode.classList.contains(\"sandboxify\")) {\n sandboxify();\n }\n });\n }\n });\n});\n\nobserver.observe(document, { childList: true, subtree: true });\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/sandboxify.js","modified":"20230627100108337"},
{"created":"20230427072514129","text":"\u003C!-- scriptie-talkie-embed.js -->\n\u003Cscript>\n\n(function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=\"function\"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw Error(\"Cannot find module '\"+n+\"'\")}var u=t[n]={exports:{}};e[n][0](function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}for(var r=\"function\"==typeof require&&require,s=0;n.length>s;s++)i(n[s]);return i})({1:[function(require){\"use strict\";var scriptieTalkieEmbed=require(\"../../\");scriptieTalkieEmbed()},{\"../../\":2}],3:[function(require,module,exports){\"use strict\";module.exports=function(textarea){var opts={},data=textarea.getAttribute(\"data-scriptie-talkie\");if(!data)return opts;try{opts=eval(\"(\"+data+\")\")}catch(e){console.error(e)}finally{return opts}}},{}],4:[function(require,module){\"use strict\";function trimEmpty(lines){for(;lines.length&&!lines[0].trim().length;)lines.shift();for(;lines.length&&!lines[lines.length-1].trim().length;)lines.length--}function leftAlign(lines){var indent=-1;if(lines.filter(function(line){return line.trim().length}).forEach(function(line){for(var lineIndent=0,col=0;\" \"===line.charAt(col++);)lineIndent++;indent=-1===indent?lineIndent:Math.min(indent,lineIndent)}),!indent)return lines;for(var i=0;lines.length>i;i++)lines[i]=lines[i].slice(indent)}module.exports=function(textarea,addRows){addRows=addRows||0;var lines=textarea.textContent.split(\"\\n\");return trimEmpty(lines),leftAlign(lines),textarea.rows=Math.max(lines.length+addRows,1),textarea.textContent=lines.join(\"\\n\"),lines}},{}],5:[function(require,module){\"use strict\";function replaceElement(replaceEl,withEl){replaceEl.parentNode.replaceChild(withEl,replaceEl)}var format=require(\"util\").format;module.exports=function(textarea,opts){opts=opts||{};var minHeight=opts.minHeight||150,maxHeight=opts.maxHeight||600,minWidth=opts.minWidth||600,textareaWidth=textarea.clientWidth,width=Math.max(minWidth,textareaWidth),height=textarea.clientHeight+50;height=Math.max(minHeight,height),height=Math.min(maxHeight,height);var container=document.createElement(\"div\");return container.setAttribute(\"class\",\"scriptie-talkie-container\"),container.setAttribute(\"style\",format(\"width: %spx; height: %spx\",width,height)),replaceElement(textarea,container),container}},{util:6}],7:[function(require,module){\"use strict\";module.exports=function(container){var link=document.createElement(\"a\");return link.setAttribute(\"class\",\"scriptie-talkie-link\"),window.link=link,container.appendChild(link),link.textContent=\"full view\",link}},{}],8:[function(require,module){\"use script\";module.exports=function(){var head=document.getElementsByTagName(\"head\")[0],style=document.createElement(\"style\");style.type=\"text/css\",style.styleSheet?style.styleSheet.cssText=css:style.appendChild(document.createTextNode(css)),head.appendChild(style)};var css=[\"textarea.scriptie-talkie {\",\" visibility: hidden;\",\" display : block;\",\"}\",\".scriptie-talkie-container {\",\" position: relative; \",\" margin: 10px 0px;\",\"}\",\".scriptie-talkie-editor,\",\".scriptie-talkie-terminal {\",\" position: absolute;\",\" top: 0;\",\" bottom: 0;\",\" height: 100%;\",\" width: 50%;\",\"}\",\".scriptie-talkie-editor {\",\" left: 0;\",\" right: 50%;\",\"}\",\".scriptie-talkie-link {\",\" position : absolute;\",\" bottom : 1px;\",\" right : 4px;\",\" font-size : 14px;\",\" color : yellowgreen;\",\" z-index : 1;\",\"}\",\"textarea.scriptie-talkie, \",\".scriptie-talkie-terminal,\",\".scriptie-talkie-editor {\",\" /* text area needs same font to determine editor size correctly */\",\" font-size : 14px;\",\" font-family : Terminus,Consolas,Profont,Monaco,Inconsolata,Inconsolata-g,\",' Unifont,Lime,\"ClearlyU PUA\",Clean,\"DejaVu Sans Mono\",\"Lucida Console\",',' \"Bitstream Vera Sans Mono\",Freemono,\"Liberation Mono\",Dina,Anka,Droid Sans Mono,',' Anonymous Pro,Proggy fonts,Envy Code R,Gamow,Courier,\"Courier New\",Terminal,monospace;',\"}\",\".scriptie-talkie-terminal {\",\" background : black;\",\" right: 0;\",\" left: 50%;\",\" overflow: auto\",\"}\",\"/* tweak the ace editor a bit since we will never have >99 lines and need to save space */\",\".scriptie-talkie-editor .ace_gutter-cell ,\",\".scriptie-talkie-editor .ace_folding-enabled > .ace_gutter-cell { \",\" padding-left: 20px;\",\" padding-right: 5px;\",\"}\"].join(\"\\n\")},{}],9:[function(require,module){\"use strict\";var qs=require(\"querystring\"),scriptieTalkieUrl=\"http://thlorenz.github.io/scriptie-talkie\";module.exports=function(code){return scriptieTalkieUrl+\"?\"+qs.stringify({code:code})}},{querystring:10}],2:[function(require,module){\"use strict\";function harvest(scripties){for(var textarea,res=[],len=scripties.length,i=0;len>i;i++)textarea=scripties.item(i),res.push(textarea);return res}function sizeTerminalToRowsAndAdjust(container,lines){var evaluatedLines=evaluateScript(lines.join(\"\\n\")),term=createTerminal(container,{lines:evaluatedLines});return container.style.height=term.height+\"px\",term}function talkify(textareas){loadStyles(),textareas.forEach(function(textarea){function evaluate(){var code=editor.getValue();terminal.reset(),link.setAttribute(\"href\",linkTo(code)),evaluateScript(code,terminal.writeln.bind(terminal))}var term,lines=prepareTextarea(textarea,-3),config=getTextareaConfig(textarea),container=createContainer(textarea),link=createLink(container);term=config.sizeToEditor?createTerminal(container):sizeTerminalToRowsAndAdjust(container,lines);var edit=createEditor(container,textarea.textContent,config),terminal=term.terminal,editor=edit.editor;editor.on(\"change\",debounce(evaluate,400,!1)),editor.clearSelection(),evaluate()})}var debounce=require(\"debounce\"),getTextareaConfig=require(\"./lib/get-textarea-config\"),prepareTextarea=require(\"./lib/prepare-textarea\"),createContainer=require(\"./lib/create-container\"),createEditor=require(\"./lib/create-editor\"),createTerminal=require(\"./lib/create-terminal\"),createLink=require(\"./lib/create-link\"),evaluateScript=require(\"./lib/evaluate-script\"),loadStyles=require(\"./lib/load-styles\"),linkTo=require(\"./lib/link-to\");module.exports=function(){var wantScripties=document.getElementsByClassName(\"scriptie-talkie\"),textareas=harvest(wantScripties);textareas.length&&talkify(textareas)},window.scriptieTalkieEmbed=module.exports},{\"./lib/get-textarea-config\":3,\"./lib/prepare-textarea\":4,\"./lib/create-container\":5,\"./lib/create-editor\":11,\"./lib/create-terminal\":12,\"./lib/create-link\":7,\"./lib/evaluate-script\":13,\"./lib/load-styles\":8,\"./lib/link-to\":9,debounce:14}],6:[function(require,module,exports){function isArray(ar){return ar instanceof Array||Array.isArray(ar)||ar&&ar!==Object.prototype&&isArray(ar.__proto__)}function isRegExp(re){return re instanceof RegExp||\"object\"==typeof re&&\"[object RegExp]\"===Object.prototype.toString.call(re)}function isDate(d){if(d instanceof Date)return!0;if(\"object\"!=typeof d)return!1;var properties=Date.prototype&&Object_getOwnPropertyNames(Date.prototype),proto=d.__proto__&&Object_getOwnPropertyNames(d.__proto__);return JSON.stringify(proto)===JSON.stringify(properties)}require(\"events\"),exports.isArray=isArray,exports.isDate=function(obj){return\"[object Date]\"===Object.prototype.toString.call(obj)},exports.isRegExp=function(obj){return\"[object RegExp]\"===Object.prototype.toString.call(obj)},exports.print=function(){},exports.puts=function(){},exports.debug=function(){},exports.inspect=function(obj,showHidden,depth,colors){function format(value,recurseTimes){if(value&&\"function\"==typeof value.inspect&&value!==exports&&(!value.constructor||value.constructor.prototype!==value))return value.inspect(recurseTimes);switch(typeof value){case\"undefined\":return stylize(\"undefined\",\"undefined\");case\"string\":var simple=\"'\"+JSON.stringify(value).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return stylize(simple,\"string\");case\"number\":return stylize(\"\"+value,\"number\");case\"boolean\":return stylize(\"\"+value,\"boolean\")}if(null===value)return stylize(\"null\",\"null\");var visible_keys=Object_keys(value),keys=showHidden?Object_getOwnPropertyNames(value):visible_keys;if(\"function\"==typeof value&&0===keys.length){if(isRegExp(value))return stylize(\"\"+value,\"regexp\");var name=value.name?\": \"+value.name:\"\";return stylize(\"[Function\"+name+\"]\",\"special\")}if(isDate(value)&&0===keys.length)return stylize(value.toUTCString(),\"date\");var base,type,braces;if(isArray(value)?(type=\"Array\",braces=[\"[\",\"]\"]):(type=\"Object\",braces=[\"{\",\"}\"]),\"function\"==typeof value){var n=value.name?\": \"+value.name:\"\";base=isRegExp(value)?\" \"+value:\" [Function\"+n+\"]\"}else base=\"\";if(isDate(value)&&(base=\" \"+value.toUTCString()),0===keys.length)return braces[0]+base+braces[1];if(0>recurseTimes)return isRegExp(value)?stylize(\"\"+value,\"regexp\"):stylize(\"[Object]\",\"special\");seen.push(value);var output=keys.map(function(key){var name,str;if(value.__lookupGetter__&&(value.__lookupGetter__(key)?str=value.__lookupSetter__(key)?stylize(\"[Getter/Setter]\",\"special\"):stylize(\"[Getter]\",\"special\"):value.__lookupSetter__(key)&&(str=stylize(\"[Setter]\",\"special\"))),0>visible_keys.indexOf(key)&&(name=\"[\"+key+\"]\"),str||(0>seen.indexOf(value[key])?(str=null===recurseTimes?format(value[key]):format(value[key],recurseTimes-1),str.indexOf(\"\\n\")>-1&&(str=isArray(value)?str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\").substr(2):\"\\n\"+str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\"))):str=stylize(\"[Circular]\",\"special\")),name===void 0){if(\"Array\"===type&&key.match(/^\\d+$/))return str;name=JSON.stringify(\"\"+key),name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(name=name.substr(1,name.length-2),name=stylize(name,\"name\")):(name=name.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),name=stylize(name,\"string\"))}return name+\": \"+str});seen.pop();var numLinesEst=0,length=output.reduce(function(prev,cur){return numLinesEst++,cur.indexOf(\"\\n\")>=0&&numLinesEst++,prev+cur.length+1},0);return output=length>50?braces[0]+(\"\"===base?\"\":base+\"\\n \")+\" \"+output.join(\",\\n \")+\" \"+braces[1]:braces[0]+base+\" \"+output.join(\", \")+\" \"+braces[1]}var seen=[],stylize=function(str,styleType){var styles={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},style={special:\"cyan\",number:\"blue\",\"boolean\":\"yellow\",undefined:\"grey\",\"null\":\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"}[styleType];return style?\"\u001b[\"+styles[style][0]+\"m\"+str+\"\u001b[\"+styles[style][1]+\"m\":str};return colors||(stylize=function(str){return str}),format(obj,depth===void 0?2:depth)},exports.log=function(){},exports.pump=null;var Object_keys=Object.keys||function(obj){var res=[];for(var key in obj)res.push(key);return res},Object_getOwnPropertyNames=Object.getOwnPropertyNames||function(obj){var res=[];for(var key in obj)Object.hasOwnProperty.call(obj,key)&&res.push(key);return res},Object_create=Object.create||function(prototype,properties){var object;if(null===prototype)object={__proto__:null};else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return properties!==void 0&&Object.defineProperties&&Object.defineProperties(object,properties),object};exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object_create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})};var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(\"string\"!=typeof f){for(var objects=[],i=0;arguments.length>i;i++)objects.push(exports.inspect(arguments[i]));return objects.join(\" \")}for(var i=1,args=arguments,len=args.length,str=(f+\"\").replace(formatRegExp,function(x){if(\"%%\"===x)return\"%\";if(i>=len)return x;switch(x){case\"%s\":return args[i++]+\"\";case\"%d\":return Number(args[i++]);case\"%j\":return JSON.stringify(args[i++]);default:return x}}),x=args[i];len>i;x=args[++i])str+=null===x||\"object\"!=typeof x?\" \"+x:\" \"+exports.inspect(x);return str}},{events:15}],10:[function(require,module,exports){function stringifyString(str,prefix){if(!prefix)throw new TypeError(\"stringify expects an object\");return prefix+\"=\"+encodeURIComponent(str)}function stringifyArray(arr,prefix){var ret=[];if(!prefix)throw new TypeError(\"stringify expects an object\");for(var i=0;arr.length>i;i++)ret.push(stringify(arr[i],prefix+\"[]\"));return ret.join(\"&\")}function stringifyObject(obj,prefix){for(var key,ret=[],keys=objectKeys(obj),i=0,len=keys.length;len>i;++i)key=keys[i],ret.push(stringify(obj[key],prefix?prefix+\"[\"+encodeURIComponent(key)+\"]\":encodeURIComponent(key)));return ret.join(\"&\")}function set(obj,key,val){var v=obj[key];void 0===v?obj[key]=val:isArray(v)?v.push(val):obj[key]=[v,val]}function lastBraceInKey(str){for(var brace,c,len=str.length,i=0;len>i;++i)if(c=str[i],\"]\"==c&&(brace=!1),\"[\"==c&&(brace=!0),\"=\"==c&&!brace)return i}var isArray=\"function\"==typeof Array.isArray?Array.isArray:function(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},objectKeys=Object.keys||function objectKeys(object){if(object!==Object(object))throw new TypeError(\"Invalid object\");var keys=[];for(var key in object)object.hasOwnProperty(key)&&(keys[keys.length]=key);return keys};exports.version=\"0.3.1\";var toString=Object.prototype.toString,notint=/[^0-9]/;exports.parse=function(str){function promote(parent,key){if(0==parent[key].length)return parent[key]={};var t={};for(var i in parent[key])t[i]=parent[key][i];return parent[key]=t,t}return null==str||\"\"==str?{}:(str+\"\").split(\"&\").reduce(function(ret,pair){function parse(parts,parent,key){var part=parts.shift();part?(obj=parent[key]=parent[key]||[],\"]\"==part?isArray(obj)?\"\"!=val&&obj.push(val):\"object\"==typeof obj?obj[objectKeys(obj).length]=val:obj=parent[key]=[parent[key],val]:~part.indexOf(\"]\")?(part=part.substr(0,part.length-1),notint.test(part)&&isArray(obj)&&(obj=promote(parent,key)),parse(parts,obj,part)):(notint.test(part)&&isArray(obj)&&(obj=promote(parent,key)),parse(parts,obj,part))):isArray(parent[key])?parent[key].push(val):parent[key]=\"object\"==typeof parent[key]?val:parent[key]===void 0?val:[parent[key],val]}try{pair=decodeURIComponent(pair.replace(/\\+/g,\" \"))}catch(e){}var eql=pair.indexOf(\"=\"),brace=lastBraceInKey(pair),key=pair.substr(0,brace||eql),val=pair.substr(brace||eql,pair.length),val=val.substr(val.indexOf(\"=\")+1,val.length),parent=ret;if(\"\"==key&&(key=pair,val=\"\"),~key.indexOf(\"]\")){var parts=key.split(\"[\");parts.length,parse(parts,parent,\"base\")}else{if(notint.test(key)&&isArray(parent.base)){var t={};for(var k in parent.base)t[k]=parent.base[k];parent.base=t}set(parent.base,key,val)}return ret},{base:{}}).base};var stringify=exports.stringify=function(obj,prefix){return isArray(obj)?stringifyArray(obj,prefix):\"[object Object]\"==toString.call(obj)?stringifyObject(obj,prefix):\"string\"==typeof obj?stringifyString(obj,prefix):prefix}},{}],14:[function(require,module){module.exports=function(func,threshold,execAsap){var timeout;return!1!==execAsap&&(execAsap=!0),function(){function delayed(){execAsap||func.apply(obj,args),timeout=null}var obj=this,args=arguments;timeout?clearTimeout(timeout):execAsap&&func.apply(obj,args),timeout=setTimeout(delayed,threshold||100)}}},{}],16:[function(require,module){var process=module.exports={};process.nextTick=function(){var canSetImmediate=\"undefined\"!=typeof window&&window.setImmediate,canPost=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(canSetImmediate)return function(f){return window.setImmediate(f)};if(canPost){var queue=[];return window.addEventListener(\"message\",function(ev){if(ev.source===window&&\"process-tick\"===ev.data&&(ev.stopPropagation(),queue.length>0)){var fn=queue.shift();fn()}},!0),function(fn){queue.push(fn),window.postMessage(\"process-tick\",\"*\")}}return function(fn){setTimeout(fn,0)}}(),process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.binding=function(){throw Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(){throw Error(\"process.chdir is not supported\")}},{}],15:[function(require,module,exports){(function(process){function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0;xs.length>i;i++)if(x===xs[i])return i;return-1}process.EventEmitter||(process.EventEmitter=function(){});var EventEmitter=exports.EventEmitter=process.EventEmitter,isArray=\"function\"==typeof Array.isArray?Array.isArray:function(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){this._events||(this._events={}),this._events.maxListeners=n},EventEmitter.prototype.emit=function(type){if(\"error\"===type&&(!this._events||!this._events.error||isArray(this._events.error)&&!this._events.error.length))throw arguments[1]instanceof Error?arguments[1]:Error(\"Uncaught, unspecified 'error' event.\");if(!this._events)return!1;var handler=this._events[type];if(!handler)return!1;if(\"function\"==typeof handler){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:var args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}return!0}if(isArray(handler)){for(var args=Array.prototype.slice.call(arguments,1),listeners=handler.slice(),i=0,l=listeners.length;l>i;i++)listeners[i].apply(this,args);return!0}return!1},EventEmitter.prototype.addListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"addListener only takes instances of Function\");if(this._events||(this._events={}),this.emit(\"newListener\",type,listener),this._events[type])if(isArray(this._events[type])){if(!this._events[type].warned){var m;m=void 0!==this._events.maxListeners?this._events.maxListeners:defaultMaxListeners,m&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[type].length),console.trace())}this._events[type].push(listener)}else this._events[type]=[this._events[type],listener];else this._events[type]=listener;return this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){var self=this;return self.on(type,function g(){self.removeListener(type,g),listener.apply(this,arguments)}),this},EventEmitter.prototype.removeListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"removeListener only takes instances of Function\");if(!this._events||!this._events[type])return this;var list=this._events[type];if(isArray(list)){var i=indexOf(list,listener);if(0>i)return this;list.splice(i,1),0==list.length&&delete this._events[type]}else this._events[type]===listener&&delete this._events[type];return this},EventEmitter.prototype.removeAllListeners=function(type){return 0===arguments.length?(this._events={},this):(type&&this._events&&this._events[type]&&(this._events[type]=null),this)},EventEmitter.prototype.listeners=function(type){return this._events||(this._events={}),this._events[type]||(this._events[type]=[]),isArray(this._events[type])||(this._events[type]=[this._events[type]]),this._events[type]}})(require(\"__browserify_process\"))},{__browserify_process:16}],17:[function(){ace.define(\"ace/theme/monokai\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){exports.isDark=!0,exports.cssClass=\"ace-monokai\",exports.cssText=\".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai .ace_scroller {background-color: #272822}.ace-monokai .ace_text-layer {color: #F8F8F2}.ace-monokai .ace_cursor {border-left: 2px solid #F8F8F0}.ace-monokai .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;border-radius: 2px}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_markup.ace_underline {text-decoration: underline}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ11D6z7Bq1ar/ABCKBG6g04U2AAAAAElFTkSuQmCC) right repeat-y}\";var dom=acequire(\"../lib/dom\");dom.importCssString(exports.cssText,exports.cssClass)})},{}],18:[function(require){(function(){ace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),TextMode=acequire(\"./text\").Mode,Tokenizer=acequire(\"../tokenizer\").Tokenizer,JavaScriptHighlightRules=acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules,MatchingBraceOutdent=acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;acequire(\"../range\").Range;var WorkerClient=acequire(\"../worker/worker_client\").WorkerClient,CstyleBehaviour=acequire(\"./behaviour/cstyle\").CstyleBehaviour,CStyleFoldMode=acequire(\"./folding/cstyle\").FoldMode,Mode=function(){this.$tokenizer=new Tokenizer((new JavaScriptHighlightRules).getRules()),this.$outdent=new MatchingBraceOutdent,this.$behaviour=new CstyleBehaviour,this.foldingRules=new CStyleFoldMode};oop.inherits(Mode,TextMode),function(){this.lineCommentStart=\"//\",this.blockComment={start:\"/*\",end:\"*/\"},this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line),tokenizedLine=this.$tokenizer.getLineTokens(line,state),tokens=tokenizedLine.tokens,endState=tokenizedLine.state;if(tokens.length&&\"comment\"==tokens[tokens.length-1].type)return indent;if(\"start\"==state||\"no_regex\"==state){var match=line.match(/^.*(?:\\bcase\\b.*\\:|[\\{\\(\\[])\\s*$/);match&&(indent+=tab)}else if(\"doc-start\"==state){if(\"start\"==endState||\"no_regex\"==endState)return\"\";var match=line.match(/^\\s*(\\/?)\\*/);match&&(match[1]&&(indent+=\" \"),indent+=\"* \")}return indent},this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input)},this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row)},this.createWorker=function(session){var worker=new WorkerClient([\"ace\"],require(\"../worker/javascript\"),\"JavaScriptWorker\");return worker.attachToDocument(session.getDocument()),worker.on(\"jslint\",function(results){session.setAnnotations(results.data)}),worker.on(\"terminate\",function(){session.clearAnnotations()}),worker}}.call(Mode.prototype),exports.Mode=Mode}),ace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),DocCommentHighlightRules=acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules,TextHighlightRules=acequire(\"./text_highlight_rules\").TextHighlightRules,JavaScriptHighlightRules=function(){var keywordMapper=this.createKeywordMapper({\"variable.language\":\"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document\",keyword:\"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\"storage.type\":\"const|let|var|function\",\"constant.language\":\"null|Infinity|NaN|undefined\",\"support.function\":\"alert\",\"constant.language.boolean\":\"true|false\"},\"identifier\"),kwBeforeRe=\"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\",identifierRe=\"[a-zA-Z\\\\$_¡-][a-zA-Z\\\\d\\\\$_¡-]*\\\\b\",escapedRe=\"\\\\\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\";this.$rules={no_regex:[{token:\"comment\",regex:/\\/\\/.*$/},DocCommentHighlightRules.getStartRule(\"doc-start\"),{token:\"comment\",regex:/\\/\\*/,next:\"comment\"},{token:\"string\",regex:\"'(?=.)\",next:\"qstring\"},{token:\"string\",regex:'\"(?=.)',next:\"qqstring\"},{token:\"constant.numeric\",regex:/0[xX][0-9a-fA-F]+\\b/},{token:\"constant.numeric\",regex:/[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\"],regex:\"(\"+identifierRe+\")(\\\\.)(prototype)(\\\\.)(\"+identifierRe+\")(\\\\s*)(=)\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\.)(\"+identifierRe+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\.)(\"+identifierRe+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(function)(\\\\s+)(\"+identifierRe+\")(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"punctuation.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"text\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:\"keyword\",regex:\"(?:\"+kwBeforeRe+\")\\\\b\",next:\"start\"},{token:[\"punctuation.operator\",\"support.function\"],regex:/(\\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.function.dom\"],regex:/(\\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.constant\"],regex:/(\\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function.firebug\"],regex:/(console)(\\.)(warn|info|log|error|time|timeEnd|assert)\\b/},{token:keywordMapper,regex:identifierRe},{token:\"keyword.operator\",regex:/--|\\+\\+|[!$%&*+\\-~]|===|==|=|!=|!==|\u003C=|>=|\u003C\u003C=|>>=|>>>=|\u003C>|\u003C|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=/,next:\"start\"},{token:\"punctuation.operator\",regex:/\\?|\\:|\\,|\\;|\\./,next:\"start\"},{token:\"paren.lparen\",regex:/[\\[({]/,next:\"start\"},{token:\"paren.rparen\",regex:/[\\])}]/},{token:\"keyword.operator\",regex:/\\/=?/,next:\"start\"},{token:\"comment\",regex:/^#!.*$/}],start:[DocCommentHighlightRules.getStartRule(\"doc-start\"),{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment_regex_allowed\"},{token:\"comment\",regex:\"\\\\/\\\\/.*$\",next:\"start\"},{token:\"string.regexp\",regex:\"\\\\/\",next:\"regex\"},{token:\"text\",regex:\"\\\\s+|^$\",next:\"start\"},{token:\"empty\",regex:\"\",next:\"no_regex\"}],regex:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"string.regexp\",regex:\"/\\\\w*\",next:\"no_regex\"},{token:\"invalid\",regex:/\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/},{token:\"constant.language.escape\",regex:/\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?]/},{token:\"constant.language.delimiter\",regex:/\\|/},{token:\"constant.language.escape\",regex:/\\[\\^?/,next:\"regex_character_class\"},{token:\"empty\",regex:\"$\",next:\"no_regex\"},{defaultToken:\"string.regexp\"}],regex_character_class:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"constant.language.escape\",regex:\"]\",next:\"regex\"},{token:\"constant.language.escape\",regex:\"-\"},{token:\"empty\",regex:\"$\",next:\"no_regex\"},{defaultToken:\"string.regexp.charachterclass\"}],function_arguments:[{token:\"variable.parameter\",regex:identifierRe},{token:\"punctuation.operator\",regex:\"[, ]+\"},{token:\"punctuation.operator\",regex:\"$\"},{token:\"empty\",regex:\"\",next:\"no_regex\"}],comment_regex_allowed:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"start\"},{defaultToken:\"comment\"}],comment:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"no_regex\"},{defaultToken:\"comment\"}],qqstring:[{token:\"constant.language.escape\",regex:escapedRe},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qqstring\"},{token:\"string\",regex:'\"|$',next:\"no_regex\"},{defaultToken:\"string\"}],qstring:[{token:\"constant.language.escape\",regex:escapedRe},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qstring\"},{token:\"string\",regex:\"'|$\",next:\"no_regex\"},{defaultToken:\"string\"}]},this.embedRules(DocCommentHighlightRules,\"doc-\",[DocCommentHighlightRules.getEndRule(\"no_regex\")])\n};oop.inherits(JavaScriptHighlightRules,TextHighlightRules),exports.JavaScriptHighlightRules=JavaScriptHighlightRules}),ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),TextHighlightRules=acequire(\"./text_highlight_rules\").TextHighlightRules,DocCommentHighlightRules=function(){this.$rules={start:[{token:\"comment.doc.tag\",regex:\"@[\\\\w\\\\d_]+\"},{token:\"comment.doc.tag\",regex:\"\\\\bTODO\\\\b\"},{defaultToken:\"comment.doc\"}]}};oop.inherits(DocCommentHighlightRules,TextHighlightRules),DocCommentHighlightRules.getStartRule=function(start){return{token:\"comment.doc\",regex:\"\\\\/\\\\*(?=\\\\*)\",next:start}},DocCommentHighlightRules.getEndRule=function(start){return{token:\"comment.doc\",regex:\"\\\\*\\\\/\",next:start}},exports.DocCommentHighlightRules=DocCommentHighlightRules}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){var Range=acequire(\"../range\").Range,MatchingBraceOutdent=function(){};(function(){this.checkOutdent=function(line,input){return/^\\s+$/.test(line)?/^\\s*\\}/.test(input):!1},this.autoOutdent=function(doc,row){var line=doc.getLine(row),match=line.match(/^(\\s*\\})/);if(!match)return 0;var column=match[1].length,openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent)},this.$getIndent=function(line){return line.match(/^\\s*/)[0]}}).call(MatchingBraceOutdent.prototype),exports.MatchingBraceOutdent=MatchingBraceOutdent}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(acequire,exports){var oop=acequire(\"../../lib/oop\"),Behaviour=acequire(\"../behaviour\").Behaviour,TokenIterator=acequire(\"../../token_iterator\").TokenIterator,lang=acequire(\"../../lib/lang\"),SAFE_INSERT_IN_TOKENS=[\"text\",\"paren.rparen\",\"punctuation.operator\"],SAFE_INSERT_BEFORE_TOKENS=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],autoInsertedBrackets=0,autoInsertedRow=-1,autoInsertedLineEnd=\"\",maybeInsertedBrackets=0,maybeInsertedRow=-1,maybeInsertedLineStart=\"\",maybeInsertedLineEnd=\"\",CstyleBehaviour=function(){CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition(),iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||\"text\",SAFE_INSERT_IN_TOKENS)){var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||\"text\",SAFE_INSERT_IN_TOKENS))return!1}return iterator.stepForward(),iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||\"text\",SAFE_INSERT_BEFORE_TOKENS)},CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1},CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row);this.isAutoInsertedClosing(cursor,line,autoInsertedLineEnd[0])||(autoInsertedBrackets=0),autoInsertedRow=cursor.row,autoInsertedLineEnd=bracket+line.substr(cursor.column),autoInsertedBrackets++},CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row);this.isMaybeInsertedClosing(cursor,line)||(maybeInsertedBrackets=0),maybeInsertedRow=cursor.row,maybeInsertedLineStart=line.substr(0,cursor.column)+bracket,maybeInsertedLineEnd=line.substr(cursor.column),maybeInsertedBrackets++},CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return autoInsertedBrackets>0&&cursor.row===autoInsertedRow&&bracket===autoInsertedLineEnd[0]&&line.substr(cursor.column)===autoInsertedLineEnd},CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return maybeInsertedBrackets>0&&cursor.row===maybeInsertedRow&&line.substr(cursor.column)===maybeInsertedLineEnd&&line.substr(0,cursor.column)==maybeInsertedLineStart},CstyleBehaviour.popAutoInsertedClosing=function(){autoInsertedLineEnd=autoInsertedLineEnd.substr(1),autoInsertedBrackets--},CstyleBehaviour.clearMaybeInsertedClosing=function(){maybeInsertedBrackets=0,maybeInsertedRow=-1},this.add(\"braces\",\"insertion\",function(state,action,editor,session,text){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row);if(\"{\"==text){var selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&\"{\"!==selected&&editor.getWrapBehavioursEnabled())return{text:\"{\"+selected+\"}\",selection:!1};if(CstyleBehaviour.isSaneInsertion(editor,session))return/[\\]\\}\\)]/.test(line[cursor.column])?(CstyleBehaviour.recordAutoInsert(editor,session,\"}\"),{text:\"{}\",selection:[1,1]}):(CstyleBehaviour.recordMaybeInsert(editor,session,\"{\"),{text:\"{\",selection:[1,1]})}else if(\"}\"==text){var rightChar=line.substring(cursor.column,cursor.column+1);if(\"}\"==rightChar){var matching=session.$findOpeningBracket(\"}\",{column:cursor.column+1,row:cursor.row});if(null!==matching&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text))return CstyleBehaviour.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(\"\\n\"==text||\"\\r\\n\"==text){var closing=\"\";CstyleBehaviour.isMaybeInsertedClosing(cursor,line)&&(closing=lang.stringRepeat(\"}\",maybeInsertedBrackets),CstyleBehaviour.clearMaybeInsertedClosing());var rightChar=line.substring(cursor.column,cursor.column+1);if(\"}\"==rightChar||\"\"!==closing){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column},\"}\");if(!openBracePos)return null;var indent=this.getNextLineIndent(state,line.substring(0,cursor.column),session.getTabString()),next_indent=this.$getIndent(line);return{text:\"\\n\"+indent+\"\\n\"+next_indent+closing,selection:[1,indent.length,1,indent.length]}}}}),this.add(\"braces\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&\"{\"==selected){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.end.column,range.end.column+1);if(\"}\"==rightChar)return range.end.column++,range;maybeInsertedBrackets--}}),this.add(\"parens\",\"insertion\",function(state,action,editor,session,text){if(\"(\"==text){var selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&editor.getWrapBehavioursEnabled())return{text:\"(\"+selected+\")\",selection:!1};if(CstyleBehaviour.isSaneInsertion(editor,session))return CstyleBehaviour.recordAutoInsert(editor,session,\")\"),{text:\"()\",selection:[1,1]}}else if(\")\"==text){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row),rightChar=line.substring(cursor.column,cursor.column+1);if(\")\"==rightChar){var matching=session.$findOpeningBracket(\")\",{column:cursor.column+1,row:cursor.row});if(null!==matching&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text))return CstyleBehaviour.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&\"(\"==selected){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.start.column+1,range.start.column+2);if(\")\"==rightChar)return range.end.column++,range}}),this.add(\"brackets\",\"insertion\",function(state,action,editor,session,text){if(\"[\"==text){var selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&editor.getWrapBehavioursEnabled())return{text:\"[\"+selected+\"]\",selection:!1};if(CstyleBehaviour.isSaneInsertion(editor,session))return CstyleBehaviour.recordAutoInsert(editor,session,\"]\"),{text:\"[]\",selection:[1,1]}}else if(\"]\"==text){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row),rightChar=line.substring(cursor.column,cursor.column+1);if(\"]\"==rightChar){var matching=session.$findOpeningBracket(\"]\",{column:cursor.column+1,row:cursor.row});if(null!==matching&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text))return CstyleBehaviour.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&\"[\"==selected){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.start.column+1,range.start.column+2);if(\"]\"==rightChar)return range.end.column++,range}}),this.add(\"string_dquotes\",\"insertion\",function(state,action,editor,session,text){if('\"'==text||\"'\"==text){var quote=text,selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&\"'\"!==selected&&'\"'!=selected&&editor.getWrapBehavioursEnabled())return{text:quote+selected+quote,selection:!1};var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row),leftChar=line.substring(cursor.column-1,cursor.column);if(\"\\\\\"==leftChar)return null;for(var token,tokens=session.getTokens(selection.start.row),col=0,quotepos=-1,x=0;tokens.length>x&&(token=tokens[x],\"string\"==token.type?quotepos=-1:0>quotepos&&(quotepos=token.value.indexOf(quote)),!(token.value.length+col>selection.start.column));x++)col+=tokens[x].value.length;if(!token||0>quotepos&&\"comment\"!==token.type&&(\"string\"!==token.type||selection.start.column!==token.value.length+col-1&&token.value.lastIndexOf(quote)===token.value.length-1)){if(!CstyleBehaviour.isSaneInsertion(editor,session))return;return{text:quote+quote,selection:[1,1]}}if(token&&\"string\"===token.type){var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==quote)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&('\"'==selected||\"'\"==selected)){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected)return range.end.column++,range}})};oop.inherits(CstyleBehaviour,Behaviour),exports.CstyleBehaviour=CstyleBehaviour}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(acequire,exports){var oop=acequire(\"../../lib/oop\");acequire(\"../../range\").Range;var BaseFoldMode=acequire(\"./fold_mode\").FoldMode,FoldMode=exports.FoldMode=function(commentRegex){commentRegex&&(this.foldingStartMarker=RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/,\"|\"+commentRegex.start)),this.foldingStopMarker=RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/,\"|\"+commentRegex.end)))};oop.inherits(FoldMode,BaseFoldMode),function(){this.foldingStartMarker=/(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/,this.getFoldWidgetRange=function(session,foldStyle,row){var line=session.getLine(row),match=line.match(this.foldingStartMarker);if(match){var i=match.index;return match[1]?this.openingBracketBlock(session,match[1],row,i):session.getCommentFoldRange(row,i+match[0].length,1)}if(\"markbeginend\"===foldStyle){var match=line.match(this.foldingStopMarker);if(match){var i=match.index+match[0].length;return match[1]?this.closingBracketBlock(session,match[1],row,i):session.getCommentFoldRange(row,i,-1)}}}}.call(FoldMode.prototype)})})()},{\"../worker/javascript\":19}],11:[function(require,module){\"use strict\";var ace=require(\"brace\");require(\"brace/mode/javascript\"),require(\"brace/theme/monokai\"),module.exports=function(container,src){var editorContainer=document.createElement(\"div\");editorContainer.setAttribute(\"class\",\"scriptie-talkie-editor\"),container.appendChild(editorContainer);var editor=ace.edit(editorContainer),session=editor.getSession();return editor.setTheme(\"ace/theme/monokai\"),session.setMode(\"ace/mode/javascript\"),session.$tabSize=2,editor.$highlightActiveLine=!1,editor.setValue(src),{container:editorContainer,editor:editor}}},{\"brace/mode/javascript\":18,\"brace/theme/monokai\":17,brace:20}],12:[function(require,module){\"use strict\";function appendTerminal(terminalContainer,lines){var terminal=hypernal();return lines&&lines.forEach(function(line){terminal.writeln(line)}),terminal.appendTo(terminalContainer),terminal}function appendTerminalAndGetHeight(terminalContainer,lines){var terminal=appendTerminal(terminalContainer,lines),height=terminal.element.clientHeight;return{terminal:terminal,height:height}}var hypernal=require(\"hypernal\");module.exports=function(container,opts){opts=opts||{};var height,terminal,terminalContainer=document.createElement(\"div\");if(terminalContainer.setAttribute(\"class\",\"scriptie-talkie-terminal\"),container.appendChild(terminalContainer),opts.lines){var appended=appendTerminalAndGetHeight(terminalContainer,opts.lines);terminal=appended.terminal,height=appended.height}else terminal=appendTerminal(terminalContainer);return{container:terminalContainer,terminal:terminal,height:height}}},{hypernal:21}],13:[function(require,module){\"use strict\";var scriptieTalkie=require(\"scriptie-talkie\");module.exports=function(script,writeln){var lines=[];if(writeln=writeln||function(){},!script.trim().length)return lines;try{lines=scriptieTalkie(script),lines.forEach(function(line){writeln(line)})}catch(e){if(console.log(e.stack),console.error(\"\"+e),e instanceof ReferenceError&&/Trying to access object from destroyed plug-in/.test(e.message)){var msg=\"Looks like your iPad Safari browser doesn't like what scriptie talkie is doing.\\nPlease try another device and/or browser, i.e. chrome works everywhere, even on iPad.\";writeln(msg)}else e.inner?(writeln(\"unable to parse the current code, looks like you have an error on: \"),writeln(\"line: \"+e.inner.lineNumber+\" column: \"+e.inner.column)):(writeln(\"\"+e),writeln(e.stack))}return lines}},{\"scriptie-talkie\":22}],19:[function(require,module){(function(){module.exports.id=\"ace/mode/javascript_worker\",module.exports.src='\"no use strict\";(function(window){void 0!==window.window&&window.document||(window.console={log:function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},error:function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})}},window.window=window,window.ace=window,window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return normalizeModule(parentId,chunks[0])+\"!\"+normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=base+\"/\"+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/\\\\/\\\\.\\\\//,\"/\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\"\")}}return moduleName},window.acequire=function(parentId,id){if(!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=normalizeModule(parentId,id);var module=acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;var chunks=id.split(\"/\");chunks[0]=acequire.tlns[chunks[0]]||chunks[0];var path=chunks.join(\"/\")+\".js\";return acequire.id=id,importScripts(path),acequire(parentId,id)},acequire.modules={},acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=acequire.id)):1==arguments.length&&(factory=id,id=acequire.id),0!==id.indexOf(\"text!\")){var req=function(deps,factory){return acequire(id,deps,factory)};acequire.modules[id]={factory:function(){var module={exports:{}},returnExports=factory(req,module.exports,module);return returnExports&&(module.exports=returnExports),module}}}},window.initBaseUrls=function initBaseUrls(topLevelNamespaces){acequire.tlns=topLevelNamespaces},window.initSender=function initSender(){var EventEmitter=acequire(null,\"ace/lib/event_emitter\").EventEmitter,oop=acequire(null,\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender},window.main=null,window.sender=null,window.onmessage=function(e){var msg=e.data;if(msg.command){if(!main[msg.command])throw Error(\"Unknown command:\"+msg.command);main[msg.command].apply(main,msg.args)}else if(msg.init){initBaseUrls(msg.tlns),acequire(null,\"ace/lib/fixoldbrowsers\"),sender=initSender();var clazz=acequire(null,msg.module)[msg.classname];main=new clazz(sender)}else msg.event&&sender&&sender._emit(msg.event,msg.data)})})(this),ace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(acequire){acequire(\"./regexp\"),acequire(\"./es5-shim\")}),ace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(){function getNativeFlags(regex){return(regex.global?\"g\":\"\")+(regex.ignoreCase?\"i\":\"\")+(regex.multiline?\"m\":\"\")+(regex.extended?\"x\":\"\")+(regex.sticky?\"y\":\"\")}function indexOf(array,item,from){if(Array.prototype.indexOf)return array.indexOf(item,from);for(var i=from||0;array.length>i;i++)if(array[i]===item)return i;return-1}var real={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},compliantExecNpcg=void 0===real.exec.call(/()??/,\"\")[1],compliantLastIndexIncrement=function(){var x=/^/g;return real.test.call(x,\"\"),!x.lastIndex}();compliantLastIndexIncrement&&compliantExecNpcg||(RegExp.prototype.exec=function(str){var name,r2,match=real.exec.apply(this,arguments);if(\"string\"==typeof str&&match){if(!compliantExecNpcg&&match.length>1&&indexOf(match,\"\")>-1&&(r2=RegExp(this.source,real.replace.call(getNativeFlags(this),\"g\",\"\")),real.replace.call(str.slice(match.index),r2,function(){for(var i=1;arguments.length-2>i;i++)void 0===arguments[i]&&(match[i]=void 0)})),this._xregexp&&this._xregexp.captureNames)for(var i=1;match.length>i;i++)name=this._xregexp.captureNames[i-1],name&&(match[name]=match[i]);!compliantLastIndexIncrement&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--}return match},compliantLastIndexIncrement||(RegExp.prototype.test=function(str){var match=real.exec.call(this,str);return match&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--,!!match}))}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != \\'object\\'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\\\n\u000b\\\\f\\\\r \\\\u2028\\\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can\\'t convert \"+o+\" to object\");return Object(o)}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault);for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners)for(var i=0;listeners.length>i;i++)listeners[i](e,this)},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){if(this._defaultHandlers=this._defaultHandlers||{},this._defaultHandlers[eventName])throw Error(\"The default handler for \\'\"+eventName+\"\\' is already set\");this._defaultHandlers[eventName]=callback},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.inherits=function(){var tempCtor=function(){};return function(ctor,superCtor){tempCtor.prototype=superCtor.prototype,ctor.super_=superCtor.prototype,ctor.prototype=new tempCtor,ctor.prototype.constructor=ctor}}(),exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/mode/javascript_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/javascript/jshint\"],function(acequire,exports,module){function startRegex(arr){return RegExp(\"^(\"+arr.join(\"|\")+\")\")}var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,lint=acequire(\"./javascript/jshint\").JSHINT,disabledWarningsRe=startRegex([\"Bad for in variable \\'(.+)\\'.\",\\'Missing \"use strict\"\\']),errorsRe=startRegex([\"Unexpected\",\"Expected \",\"Confusing (plus|minus)\",\"\\\\\\\\{a\\\\\\\\} unterminated regular expression\",\"Unclosed \",\"Unmatched \",\"Unbegun comment\",\"Bad invocation\",\"Missing space after\",\"Missing operator at\"]),infoRe=startRegex([\"Expected an assignment\",\"Bad escapement of EOL\",\"Unexpected comma\",\"Unexpected space\",\"Missing radix parameter.\",\"A leading decimal point can\",\"\\\\\\\\[\\'{a}\\'\\\\\\\\] is better written in dot notation.\",\"\\'{a}\\' used out of scope\"]),JavaScriptWorker=exports.JavaScriptWorker=function(sender){Mirror.call(this,sender),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(options){this.options=options||{es5:!0,esnext:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(newOptions){oop.mixin(this.options,newOptions),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval(\"throw 0;\"+str)}catch(e){if(0===e)return!0}return!1},this.onUpdate=function(){var value=this.doc.getValue();if(value=value.replace(/^#!.*\\\\n/,\"\\\\n\"),!value)return this.sender.emit(\"jslint\",[]),void 0;var errors=[],maxErrorLevel=this.isValidJS(value)?\"warning\":\"error\";lint(value,this.options);for(var results=lint.errors,errorAdded=!1,i=0;results.length>i;i++){var error=results[i];if(error){var raw=error.raw,type=\"warning\";if(\"Missing semicolon.\"==raw){var str=error.evidence.substr(error.character);str=str.charAt(str.search(/\\\\S/)),\"error\"==maxErrorLevel&&str&&/[\\\\w\\\\d{([\\'\"]/.test(str)?(error.reason=\\'Missing \";\" before statement\\',type=\"error\"):type=\"info\"}else{if(disabledWarningsRe.test(raw))continue;infoRe.test(raw)?type=\"info\":errorsRe.test(raw)?(errorAdded=!0,type=maxErrorLevel):\"\\'{a}\\' is not defined.\"==raw?type=\"warning\":\"\\'{a}\\' is defined but never used.\"==raw&&(type=\"info\")}errors.push({row:error.line-1,column:error.character-1,text:error.reason,type:type,raw:raw})}}this.sender.emit(\"jslint\",errors)}}.call(JavaScriptWorker.prototype)}),ace.define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){var Document=acequire(\"../document\").Document,lang=acequire(\"../lib/lang\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\"\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\"change\",function(e){doc.applyDeltas([e.data]),deferredUpdate.schedule(_self.$timeout)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){}}).call(Mirror.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(text){this.$lines=[],0==text.length?this.$lines=[\"\"]:Array.isArray(text)?this.insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==\"aaa\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\"\\\\n\").split(\"\\\\n\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\"\\\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\\\r\\\\n\";case\"unix\":return\"\\\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode)},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\\\r\\\\n\"==text||\"\\\\r\"==text||\"\\\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){if(range.start.row==range.end.row)return this.$lines[range.start.row].substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row+1,range.end.row-1);return lines.unshift((this.$lines[range.start.row]||\"\").substring(range.start.column)),lines.push((this.$lines[range.end.row]||\"\").substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this.insertLines(position.row,lines),position=this.insertInLine(position,lastLine||\"\")),position},this.insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};if(lines.length>65535){var end=this.insertLines(row,lines.slice(65535));lines=lines.slice(0,65535)}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:\"insertLines\",range:range,lines:lines};return this._emit(\"change\",{data:delta}),end||range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:text};return this._emit(\"change\",{data:delta}),end},this.remove=function(range){if(range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this.removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:\"removeText\",range:range,text:removed};return this._emit(\"change\",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:\"removeLines\",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._emit(\"change\",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:\"removeText\",range:range,text:this.getNewLineCharacter()};this._emit(\"change\",{data:delta})},this.replace=function(range,text){if(0==text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"insertText\"==delta.action?this.insert(range.start,delta.text):\"removeLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"removeText\"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"insertText\"==delta.action?this.remove(range):\"removeLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"removeText\"==delta.action&&this.insert(range.start,delta.text)}},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length;return index+newlineLength*i+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)\\n},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.document=doc,column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column),this.$onChange=this.onChange.bind(this),doc.on(\"change\",this.$onChange)};(function(){oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;\"insertText\"===delta.action?start.row===row&&column>=start.column?start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):\"insertLines\"===delta.action?row>=start.row&&(row+=end.row-start.row):\"removeText\"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):\"removeLines\"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._emit(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function(obj){if(\"object\"!=typeof obj)return obj;var copy=obj.constructor();for(var key in obj)copy[key]=\"object\"==typeof obj[key]?this.deepCopy(obj[key]):obj[key];return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\"\\\\\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/\\'/g,\"'\").replace(/\u003C/g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)};return _self.delay=_self,_self.schedule=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||0))},_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/mode/javascript/jshint\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var JSHINT=function(){function F(){}function is_own(object,name){return Object.prototype.hasOwnProperty.call(object,name)}function checkOption(name,t){void 0===valOptions[name]&&void 0===boolOptions[name]&&warning(\"Bad option: \\'\"+name+\"\\'.\",t)}function isString(obj){return\"[object String]\"===Object.prototype.toString.call(obj)}function isAlpha(str){return str>=\"a\"&&\"z\">=str||str>=\"A\"&&\"Z\">=str}function isDigit(str){return str>=\"0\"&&\"9\">=str}function isIdentifier(token,value){return token?token.identifier&&token.value===value?!0:!1:!1}function supplant(str,data){return str.replace(/\\\\{([^{}]*)\\\\}/g,function(a,b){var r=data[b];return\"string\"==typeof r||\"number\"==typeof r?r:a})}function combine(t,o){var n;for(n in o)is_own(o,n)&&!is_own(JSHINT.blacklist,n)&&(t[n]=o[n])}function updatePredefined(){Object.keys(JSHINT.blacklist).forEach(function(key){delete predefined[key]})}function assume(){option.couch&&combine(predefined,couch),option.rhino&&combine(predefined,rhino),option.prototypejs&&combine(predefined,prototypejs),option.node&&(combine(predefined,node),option.globalstrict=!0),option.devel&&combine(predefined,devel),option.dojo&&combine(predefined,dojo),option.browser&&combine(predefined,browser),option.nonstandard&&combine(predefined,nonstandard),option.jquery&&combine(predefined,jquery),option.mootools&&combine(predefined,mootools),option.worker&&combine(predefined,worker),option.wsh&&combine(predefined,wsh),option.esnext&&useESNextSyntax(),option.globalstrict&&option.strict!==!1&&(option.strict=!0),option.yui&&combine(predefined,yui)}function quit(message,line,chr){var percentage=Math.floor(100*(line/lines.length));throw{name:\"JSHintError\",line:line,character:chr,message:message+\" (\"+percentage+\"% scanned).\",raw:message}}function isundef(scope,m,t,a){return JSHINT.undefs.push([scope,m,t,a])}function warning(m,t,a,b,c,d){var ch,l,w;return t=t||nexttoken,\"(end)\"===t.id&&(t=token),l=t.line||0,ch=t.from||0,w={id:\"(error)\",raw:m,evidence:lines[l-1]||\"\",line:l,character:ch,scope:JSHINT.scope,a:a,b:b,c:c,d:d},w.reason=supplant(m,w),JSHINT.errors.push(w),option.passfail&&quit(\"Stopping. \",l,ch),warnings+=1,warnings>=option.maxerr&&quit(\"Too many errors.\",l,ch),w}function warningAt(m,l,ch,a,b,c,d){return warning(m,{line:l,from:ch},a,b,c,d)}function error(m,t,a,b,c,d){warning(m,t,a,b,c,d)}function errorAt(m,l,ch,a,b,c,d){return error(m,{line:l,from:ch},a,b,c,d)}function addInternalSrc(elem,src){var i;return i={id:\"(internal)\",elem:elem,value:src},JSHINT.internals.push(i),i}function addlabel(t,type,token){\"hasOwnProperty\"===t&&warning(\"\\'hasOwnProperty\\' is a really bad name.\"),\"exception\"===type&&is_own(funct[\"(context)\"],t)&&(funct[t]===!0||option.node||warning(\"Value of \\'{a}\\' may be overwritten in IE.\",nexttoken,t)),is_own(funct,t)&&!funct[\"(global)\"]&&(funct[t]===!0?option.latedef&&warning(\"\\'{a}\\' was used before it was defined.\",nexttoken,t):option.shadow||\"exception\"===type||warning(\"\\'{a}\\' is already defined.\",nexttoken,t)),funct[t]=type,token&&(funct[\"(tokens)\"][t]=token),funct[\"(global)\"]?(global[t]=funct,is_own(implied,t)&&(option.latedef&&warning(\"\\'{a}\\' was used before it was defined.\",nexttoken,t),delete implied[t])):scope[t]=funct}function doOption(){var b,obj,filter,t,tn,v,minus,nt=nexttoken,o=nt.value,quotmarkValue=option.quotmark,predef={};switch(o){case\"*/\":error(\"Unbegun comment.\");break;case\"/*members\":case\"/*member\":o=\"/*members\",membersOnly||(membersOnly={}),obj=membersOnly,option.quotmark=!1;break;case\"/*jshint\":case\"/*jslint\":obj=option,filter=boolOptions;break;case\"/*global\":obj=predef;break;default:error(\"What?\")}for(t=lex.token();;){minus=!1;for(var breakOuterLoop;;){if(\"special\"===t.type&&\"*/\"===t.value){breakOuterLoop=!0;break}if(\"(endline)\"!==t.id&&\",\"!==t.id)break;t=lex.token()}if(breakOuterLoop)break;if(\"/*global\"===o&&\"-\"===t.value&&(minus=!0,t=lex.token()),\"(string)\"!==t.type&&\"(identifier)\"!==t.type&&\"/*members\"!==o&&error(\"Bad option.\",t),v=lex.token(),\":\"===v.id){v=lex.token(),obj===membersOnly&&error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",t,\"*/\",\":\"),\"/*jshint\"===o&&checkOption(t.value,t);var numericVals=[\"maxstatements\",\"maxparams\",\"maxdepth\",\"maxcomplexity\",\"maxerr\",\"maxlen\",\"indent\"];if(numericVals.indexOf(t.value)>-1&&(\"/*jshint\"===o||\"/*jslint\"===o))b=+v.value,(\"number\"!=typeof b||!isFinite(b)||0>=b||Math.floor(b)!==b)&&error(\"Expected a small integer and instead saw \\'{a}\\'.\",v,v.value),\"indent\"===t.value&&(obj.white=!0),obj[t.value]=b;else if(\"validthis\"===t.value)funct[\"(global)\"]?error(\"Option \\'validthis\\' can\\'t be used in a global scope.\"):\"true\"===v.value||\"false\"===v.value?obj[t.value]=\"true\"===v.value:error(\"Bad option value.\",v);else if(\"quotmark\"===t.value&&\"/*jshint\"===o)switch(v.value){case\"true\":obj.quotmark=!0;break;case\"false\":obj.quotmark=!1;break;case\"double\":case\"single\":obj.quotmark=v.value;break;default:error(\"Bad option value.\",v)}else\"true\"===v.value||\"false\"===v.value?(\"/*jslint\"===o?(tn=renamedOptions[t.value]||t.value,obj[tn]=\"true\"===v.value,void 0!==invertedOptions[tn]&&(obj[tn]=!obj[tn])):obj[t.value]=\"true\"===v.value,\"newcap\"===t.value&&(obj[\"(explicitNewcap)\"]=!0)):error(\"Bad option value.\",v);t=lex.token()}else(\"/*jshint\"===o||\"/*jslint\"===o)&&error(\"Missing option value.\",t),obj[t.value]=!1,\"/*global\"===o&&minus===!0&&(JSHINT.blacklist[t.value]=t.value,updatePredefined()),t=v}\"/*members\"===o&&(option.quotmark=quotmarkValue),combine(predefined,predef);for(var key in predef)is_own(predef,key)&&(declared[key]=nt);filter&&assume()}function peek(p){for(var t,i=p||0,j=0;i>=j;)t=lookahead[j],t||(t=lookahead[j]=lex.token()),j+=1;return t}function advance(id,t){switch(token.id){case\"(number)\":\".\"===nexttoken.id&&warning(\"A dot following a number can be confused with a decimal point.\",token);break;case\"-\":(\"-\"===nexttoken.id||\"--\"===nexttoken.id)&&warning(\"Confusing minusses.\");break;case\"+\":(\"+\"===nexttoken.id||\"++\"===nexttoken.id)&&warning(\"Confusing plusses.\")}for((\"(string)\"===token.type||token.identifier)&&(anonname=token.value),id&&nexttoken.id!==id&&(t?\"(end)\"===nexttoken.id?warning(\"Unmatched \\'{a}\\'.\",t,t.id):warning(\"Expected \\'{a}\\' to match \\'{b}\\' from line {c} and instead saw \\'{d}\\'.\",nexttoken,id,t.id,t.line,nexttoken.value):(\"(identifier)\"!==nexttoken.type||nexttoken.value!==id)&&warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,id,nexttoken.value)),prevtoken=token,token=nexttoken;;){if(nexttoken=lookahead.shift()||lex.token(),\"(end)\"===nexttoken.id||\"(error)\"===nexttoken.id)return;if(\"special\"===nexttoken.type)doOption();else if(\"(endline)\"!==nexttoken.id)break}}function expression(rbp,initial){var left,isArray=!1,isObject=!1;if(\"(end)\"===nexttoken.id&&error(\"Unexpected early end of program.\",token),advance(),initial&&(anonname=\"anonymous\",funct[\"(verb)\"]=token.value),initial===!0&&token.fud)left=token.fud();else{if(token.nud)left=token.nud();else{if(\"(number)\"===nexttoken.type&&\".\"===token.id)return warning(\"A leading decimal point can be confused with a dot: \\'.{a}\\'.\",token,nexttoken.value),advance(),token;error(\"Expected an identifier and instead saw \\'{a}\\'.\",token,token.id)}for(;nexttoken.lbp>rbp;)isArray=\"Array\"===token.value,isObject=\"Object\"===token.value,left&&(left.value||left.first&&left.first.value)&&(\"new\"!==left.value||left.first&&left.first.value&&\".\"===left.first.value)&&(isArray=!1,left.value!==token.value&&(isObject=!1)),advance(),isArray&&\"(\"===token.id&&\")\"===nexttoken.id&&warning(\"Use the array literal notation [].\",token),isObject&&\"(\"===token.id&&\")\"===nexttoken.id&&warning(\"Use the object literal notation {}.\",token),token.led?left=token.led(left):error(\"Expected an operator and instead saw \\'{a}\\'.\",token,token.id)}return left}function adjacent(left,right){left=left||token,right=right||nexttoken,option.white&&left.character!==right.from&&left.line===right.line&&(left.from+=left.character-left.from,warning(\"Unexpected space after \\'{a}\\'.\",left,left.value))}function nobreak(left,right){left=left||token,right=right||nexttoken,!option.white||left.character===right.from&&left.line===right.line||warning(\"Unexpected space before \\'{a}\\'.\",right,right.value)}function nospace(left,right){left=left||token,right=right||nexttoken,option.white&&!left.comment&&left.line===right.line&&adjacent(left,right)}function nonadjacent(left,right){if(option.white){if(left=left||token,right=right||nexttoken,\";\"===left.value&&\";\"===right.value)return;left.line===right.line&&left.character===right.from&&(left.from+=left.character-left.from,warning(\"Missing space after \\'{a}\\'.\",left,left.value))}}function nobreaknonadjacent(left,right){left=left||token,right=right||nexttoken,option.laxbreak||left.line===right.line?option.white&&(left=left||token,right=right||nexttoken,left.character===right.from&&(left.from+=left.character-left.from,warning(\"Missing space after \\'{a}\\'.\",left,left.value))):warning(\"Bad line breaking before \\'{a}\\'.\",right,right.id)}function indentation(bias){var i;option.white&&\"(end)\"!==nexttoken.id&&(i=indent+(bias||0),nexttoken.from!==i&&warning(\"Expected \\'{a}\\' to have an indentation at {b} instead at {c}.\",nexttoken,nexttoken.value,i,nexttoken.from))}function nolinebreak(t){t=t||token,t.line!==nexttoken.line&&warning(\"Line breaking error \\'{a}\\'.\",t,t.value)}function comma(){token.line!==nexttoken.line?option.laxcomma||(comma.first&&(warning(\"Comma warnings can be turned off with \\'laxcomma\\'\"),comma.first=!1),warning(\"Bad line breaking before \\'{a}\\'.\",token,nexttoken.id)):!token.comment&&token.character!==nexttoken.from&&option.white&&(token.from+=token.character-token.from,warning(\"Unexpected space after \\'{a}\\'.\",token,token.value)),advance(\",\"),nonadjacent(token,nexttoken)}function symbol(s,p){var x=syntax[s];return x&&\"object\"==typeof x||(syntax[s]=x={id:s,lbp:p,value:s}),x}function delim(s){return symbol(s,0)}function stmt(s,f){var x=delim(s);return x.identifier=x.reserved=!0,x.fud=f,x}function blockstmt(s,f){var x=stmt(s,f);return x.block=!0,x}function reserveName(x){var c=x.id.charAt(0);return(c>=\"a\"&&\"z\">=c||c>=\"A\"&&\"Z\">=c)&&(x.identifier=x.reserved=!0),x}function prefix(s,f){var x=symbol(s,150);return reserveName(x),x.nud=\"function\"==typeof f?f:function(){return this.right=expression(150),this.arity=\"unary\",(\"++\"===this.id||\"--\"===this.id)&&(option.plusplus?warning(\"Unexpected use of \\'{a}\\'.\",this,this.id):this.right.identifier&&!this.right.reserved||\".\"===this.right.id||\"[\"===this.right.id||warning(\"Bad operand.\",this)),this},x}function type(s,f){var x=delim(s);return x.type=s,x.nud=f,x}function reserve(s,f){var x=type(s,f);return x.identifier=x.reserved=!0,x}function reservevar(s,v){return reserve(s,function(){return\"function\"==typeof v&&v(this),this})}function infix(s,f,p,w){var x=symbol(s,p);return reserveName(x),x.led=function(left){return w||(nobreaknonadjacent(prevtoken,token),nonadjacent(token,nexttoken)),\"in\"===s&&\"!\"===left.id&&warning(\"Confusing use of \\'{a}\\'.\",left,\"!\"),\"function\"==typeof f?f(left,this):(this.left=left,this.right=expression(p),this)},x}function relation(s,f){var x=symbol(s,100);return x.led=function(left){nobreaknonadjacent(prevtoken,token),nonadjacent(token,nexttoken);var right=expression(100);return isIdentifier(left,\"NaN\")||isIdentifier(right,\"NaN\")?warning(\"Use the isNaN function to compare with NaN.\",this):f&&f.apply(this,[left,right]),\"!\"===left.id&&warning(\"Confusing use of \\'{a}\\'.\",left,\"!\"),\"!\"===right.id&&warning(\"Confusing use of \\'{a}\\'.\",right,\"!\"),this.left=left,this.right=right,this},x}function isPoorRelation(node){return node&&(\"(number)\"===node.type&&0===+node.value||\"(string)\"===node.type&&\"\"===node.value||\"null\"===node.type&&!option.eqnull||\"true\"===node.type||\"false\"===node.type||\"undefined\"===node.type)}function assignop(s){return symbol(s,20).exps=!0,infix(s,function(left,that){if(that.left=left,predefined[left.value]===!1&&scope[left.value][\"(global)\"]===!0?warning(\"Read only.\",left):left[\"function\"]&&warning(\"\\'{a}\\' is a function.\",left,left.value),left){if(option.esnext&&\"const\"===funct[left.value]&&warning(\"Attempting to override \\'{a}\\' which is a constant\",left,left.value),\".\"===left.id||\"[\"===left.id)return left.left&&\"arguments\"!==left.left.value||warning(\"Bad assignment.\",that),that.right=expression(19),that;if(left.identifier&&!left.reserved)return\"exception\"===funct[left.value]&&warning(\"Do not assign to the exception parameter.\",left),that.right=expression(19),that;left===syntax[\"function\"]&&warning(\"Expected an identifier in an assignment and instead saw a function invocation.\",token)}error(\"Bad assignment.\",that)},20)}function bitwise(s,f,p){var x=symbol(s,p);return reserveName(x),x.led=\"function\"==typeof f?f:function(left){return option.bitwise&&warning(\"Unexpected use of \\'{a}\\'.\",this,this.id),this.left=left,this.right=expression(p),this},x}function bitwiseassignop(s){return symbol(s,20).exps=!0,infix(s,function(left,that){return option.bitwise&&warning(\"Unexpected use of \\'{a}\\'.\",that,that.id),nonadjacent(prevtoken,token),nonadjacent(token,nexttoken),left?\".\"===left.id||\"[\"===left.id||left.identifier&&!left.reserved?(expression(19),that):(left===syntax[\"function\"]&&warning(\"Expected an identifier in an assignment, and instead saw a function invocation.\",token),that):(error(\"Bad assignment.\",that),void 0)},20)}function suffix(s){var x=symbol(s,150);return x.led=function(left){return option.plusplus?warning(\"Unexpected use of \\'{a}\\'.\",this,this.id):left.identifier&&!left.reserved||\".\"===left.id||\"[\"===left.id||warning(\"Bad operand.\",this),this.left=left,this},x}function optionalidentifier(fnparam){return nexttoken.identifier?(advance(),token.reserved&&!option.es5&&(fnparam&&\"undefined\"===token.value||warning(\"Expected an identifier and instead saw \\'{a}\\' (a reserved word).\",token,token.id)),token.value):void 0}function identifier(fnparam){var i=optionalidentifier(fnparam);return i?i:(\"function\"===token.id&&\"(\"===nexttoken.id?warning(\"Missing name in function declaration.\"):error(\"Expected an identifier and instead saw \\'{a}\\'.\",nexttoken,nexttoken.value),void 0)}function reachable(s){var t,i=0;if(\";\"===nexttoken.id&&!noreach)for(;;){if(t=peek(i),t.reach)return;if(\"(endline)\"!==t.id){if(\"function\"===t.id){if(!option.latedef)break;warning(\"Inner functions should be listed at the top of the outer function.\",t);break}warning(\"Unreachable \\'{a}\\' after \\'{b}\\'.\",t,t.value,s);break}i+=1}}function statement(noindent){var r,i=indent,s=scope,t=nexttoken;if(\";\"===t.id)return advance(\";\"),void 0;if(t.identifier&&!t.reserved&&\":\"===peek().id&&(advance(),advance(\":\"),scope=Object.create(s),addlabel(t.value,\"label\"),nexttoken.labelled||\"{\"===nexttoken.value||warning(\"Label \\'{a}\\' on {b} statement.\",nexttoken,t.value,nexttoken.value),jx.test(t.value+\":\")&&warning(\"Label \\'{a}\\' looks like a javascript url.\",t,t.value),nexttoken.label=t.value,t=nexttoken),\"{\"===t.id)return block(!0,!0),void 0;if(noindent||indentation(),r=expression(0,!0),!t.block){if(option.expr||r&&r.exps?option.nonew&&\"(\"===r.id&&\"new\"===r.left.id&&warning(\"Do not use \\'new\\' for side effects.\",t):warning(\"Expected an assignment or function call and instead saw an expression.\",token),\",\"===nexttoken.id)return comma();\";\"!==nexttoken.id?option.asi||option.lastsemic&&\"}\"===nexttoken.id&&nexttoken.line===token.line||warningAt(\"Missing semicolon.\",token.line,token.character):(adjacent(token,nexttoken),advance(\";\"),nonadjacent(token,nexttoken))}return indent=i,scope=s,r}function statements(startLine){for(var p,a=[];!nexttoken.reach&&\"(end)\"!==nexttoken.id;)\";\"===nexttoken.id?(p=peek(),p&&\"(\"===p.id||warning(\"Unnecessary semicolon.\"),advance(\";\")):a.push(statement(startLine===nexttoken.line));return a}function directives(){for(var i,p,pn;\"(string)\"===nexttoken.id;){if(p=peek(0),\"(endline)\"===p.id){i=1;do pn=peek(i),i+=1;while(\"(endline)\"===pn.id);if(\";\"!==pn.id){if(\"(string)\"!==pn.id&&\"(number)\"!==pn.id&&\"(regexp)\"!==pn.id&&pn.identifier!==!0&&\"}\"!==pn.id)break;warning(\"Missing semicolon.\",nexttoken)}else p=pn}else if(\"}\"===p.id)warning(\"Missing semicolon.\",p);else if(\";\"!==p.id)break;indentation(),advance(),directive[token.value]&&warning(\\'Unnecessary directive \"{a}\".\\',token,token.value),\"use strict\"===token.value&&(option[\"(explicitNewcap)\"]||(option.newcap=!0),option.undef=!0),directive[token.value]=!0,\";\"===p.id&&advance(\";\")}}function block(ordinary,stmt,isfunc){var a,m,t,line,d,b=inblock,old_indent=indent,s=scope;inblock=ordinary,ordinary&&option.funcscope||(scope=Object.create(scope)),nonadjacent(token,nexttoken),t=nexttoken;var metrics=funct[\"(metrics)\"];if(metrics.nestedBlockDepth+=1,metrics.verifyMaxNestedBlockDepthPerFunction(),\"{\"===nexttoken.id){if(advance(\"{\"),line=token.line,\"}\"!==nexttoken.id){for(indent+=option.indent;!ordinary&&nexttoken.from>indent;)indent+=option.indent;if(isfunc){m={};for(d in directive)is_own(directive,d)&&(m[d]=directive[d]);directives(),option.strict&&funct[\"(context)\"][\"(global)\"]&&(m[\"use strict\"]||directive[\"use strict\"]||warning(\\'Missing \"use strict\" statement.\\'))}a=statements(line),metrics.statementCount+=a.length,isfunc&&(directive=m),indent-=option.indent,line!==nexttoken.line&&indentation()}else line!==nexttoken.line&&indentation();advance(\"}\",t),indent=old_indent}else ordinary?((!stmt||option.curly)&&warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"{\",nexttoken.value),noreach=!0,indent+=option.indent,a=[statement(nexttoken.line===token.line)],indent-=option.indent,noreach=!1):error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"{\",nexttoken.value);return funct[\"(verb)\"]=null,ordinary&&option.funcscope||(scope=s),inblock=b,!ordinary||!option.noempty||a&&0!==a.length||warning(\"Empty block.\"),metrics.nestedBlockDepth-=1,a}function countMember(m){membersOnly&&\"boolean\"!=typeof membersOnly[m]&&warning(\"Unexpected /*member \\'{a}\\'.\",token,m),\"number\"==typeof member[m]?member[m]+=1:member[m]=1}function note_implied(token){var name=token.value,line=token.line,a=implied[name];\"function\"==typeof a&&(a=!1),a?a[a.length-1]!==line&&a.push(line):(a=[line],implied[name]=a)}function property_name(){var id=optionalidentifier(!0);return id||(\"(string)\"===nexttoken.id?(id=nexttoken.value,advance()):\"(number)\"===nexttoken.id&&(id=\"\"+nexttoken.value,advance())),id}function functionparams(){var ident,next=nexttoken,params=[];if(advance(\"(\"),nospace(),\")\"===nexttoken.id)return advance(\")\"),void 0;for(;;){if(ident=identifier(!0),params.push(ident),addlabel(ident,\"unused\",token),\",\"!==nexttoken.id)return advance(\")\",next),nospace(prevtoken,token),params;comma()}}function doFunction(name,statement){var f,oldOption=option,oldScope=scope;return option=Object.create(option),scope=Object.create(scope),funct={\"(name)\":name||\\'\"\\'+anonname+\\'\"\\',\"(line)\":nexttoken.line,\"(character)\":nexttoken.character,\"(context)\":funct,\"(breakage)\":0,\"(loopage)\":0,\"(metrics)\":createMetrics(nexttoken),\"(scope)\":scope,\"(statement)\":statement,\"(tokens)\":{}},f=funct,token.funct=funct,functions.push(funct),name&&addlabel(name,\"function\"),funct[\"(params)\"]=functionparams(),funct[\"(metrics)\"].verifyMaxParametersPerFunction(funct[\"(params)\"]),block(!1,!1,!0),funct[\"(metrics)\"].verifyMaxStatementsPerFunction(),funct[\"(metrics)\"].verifyMaxComplexityPerFunction(),scope=oldScope,option=oldOption,funct[\"(last)\"]=token.line,funct[\"(lastcharacter)\"]=token.character,funct=funct[\"(context)\"],f}function createMetrics(functionStartToken){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,verifyMaxStatementsPerFunction:function(){if(option.maxstatements&&this.statementCount>option.maxstatements){var message=\"Too many statements per function (\"+this.statementCount+\").\";warning(message,functionStartToken)}},verifyMaxParametersPerFunction:function(params){if(params=params||[],option.maxparams&¶ms.length>option.maxparams){var message=\"Too many parameters per function (\"+params.length+\").\";warning(message,functionStartToken)}},verifyMaxNestedBlockDepthPerFunction:function(){if(option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===option.maxdepth+1){var message=\"Blocks are nested too deeply (\"+this.nestedBlockDepth+\").\";warning(message)}},verifyMaxComplexityPerFunction:function(){var max=option.maxcomplexity,cc=this.ComplexityCount;if(max&&cc>max){var message=\"Cyclomatic complexity is too high per function (\"+cc+\").\";warning(message,functionStartToken)}}}}function increaseComplexityCount(){funct[\"(metrics)\"].ComplexityCount+=1}function jsonValue(){function jsonObject(){var o={},t=nexttoken;if(advance(\"{\"),\"}\"!==nexttoken.id)for(;;){if(\"(end)\"===nexttoken.id)error(\"Missing \\'}\\' to match \\'{\\' from line {a}.\",nexttoken,t.line);else{if(\"}\"===nexttoken.id){warning(\"Unexpected comma.\",token);break}\",\"===nexttoken.id?error(\"Unexpected comma.\",nexttoken):\"(string)\"!==nexttoken.id&&warning(\"Expected a string and instead saw {a}.\",nexttoken,nexttoken.value)}if(o[nexttoken.value]===!0?warning(\"Duplicate key \\'{a}\\'.\",nexttoken,nexttoken.value):\"__proto__\"===nexttoken.value&&!option.proto||\"__iterator__\"===nexttoken.value&&!option.iterator?warning(\"The \\'{a}\\' key may produce unexpected results.\",nexttoken,nexttoken.value):o[nexttoken.value]=!0,advance(),advance(\":\"),jsonValue(),\",\"!==nexttoken.id)break;advance(\",\")}advance(\"}\")}function jsonArray(){var t=nexttoken;if(advance(\"[\"),\"]\"!==nexttoken.id)for(;;){if(\"(end)\"===nexttoken.id)error(\"Missing \\']\\' to match \\'[\\' from line {a}.\",nexttoken,t.line);else{if(\"]\"===nexttoken.id){warning(\"Unexpected comma.\",token);break}\",\"===nexttoken.id&&error(\"Unexpected comma.\",nexttoken)}if(jsonValue(),\",\"!==nexttoken.id)break;advance(\",\")}advance(\"]\")}switch(nexttoken.id){case\"{\":jsonObject();break;case\"[\":jsonArray();break;case\"true\":case\"false\":case\"null\":case\"(number)\":case\"(string)\":advance();break;case\"-\":advance(\"-\"),token.character!==nexttoken.from&&warning(\"Unexpected space after \\'-\\'.\",token),adjacent(token,nexttoken),advance(\"(number)\");break;default:error(\"Expected a JSON value.\",nexttoken)}}var anonname,declared,funct,functions,global,implied,inblock,indent,jsonmode,lines,lookahead,member,membersOnly,nexttoken,noreach,option,predefined,prereg,prevtoken,quotmark,scope,stack,directive,tab,token,unuseds,urls,useESNextSyntax,warnings,ax,cx,tx,nx,nxg,lx,ix,jx,ft,bang={\"\u003C\":!0,\"\u003C=\":!0,\"==\":!0,\"===\":!0,\"!==\":!0,\"!=\":!0,\">\":!0,\">=\":!0,\"+\":!0,\"-\":!0,\"*\":!0,\"/\":!0,\"%\":!0},boolOptions={asi:!0,bitwise:!0,boss:!0,browser:!0,camelcase:!0,couch:!0,curly:!0,debug:!0,devel:!0,dojo:!0,eqeqeq:!0,eqnull:!0,es5:!0,esnext:!0,evil:!0,expr:!0,forin:!0,funcscope:!0,globalstrict:!0,immed:!0,iterator:!0,jquery:!0,lastsemic:!0,latedef:!0,laxbreak:!0,laxcomma:!0,loopfunc:!0,mootools:!0,multistr:!0,newcap:!0,noarg:!0,node:!0,noempty:!0,nonew:!0,nonstandard:!0,nomen:!0,onevar:!0,onecase:!0,passfail:!0,plusplus:!0,proto:!0,prototypejs:!0,regexdash:!0,regexp:!0,rhino:!0,undef:!0,unused:!0,scripturl:!0,shadow:!0,smarttabs:!0,strict:!0,sub:!0,supernew:!0,trailing:!0,validthis:!0,withstmt:!0,white:!0,worker:!0,wsh:!0,yui:!0},valOptions={maxlen:!1,indent:!1,maxerr:!1,predef:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1},invertedOptions={bitwise:!0,forin:!0,newcap:!0,nomen:!0,plusplus:!0,regexp:!0,undef:!0,white:!0,eqeqeq:!0,onevar:!0},renamedOptions={eqeq:\"eqeqeq\",vars:\"onevar\",windows:\"wsh\"},browser={ArrayBuffer:!1,ArrayBufferView:!1,Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,DataView:!1,DOMParser:!1,defaultStatus:!1,document:!1,event:!1,FileReader:!1,Float32Array:!1,Float64Array:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Image:!1,length:!1,localStorage:!1,location:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,top:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},functionicity=[\"closure\",\"exception\",\"global\",\"label\",\"outer\",\"unused\",\"var\"],jquery={$:!1,jQuery:!1},mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,Iframe:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},node={__filename:!1,__dirname:!1,Buffer:!1,console:!1,exports:!0,GLOBAL:!1,global:!1,module:!1,process:!1,acequire:!1,setTimeout:!1,clearTimeout:!1,setInterval:!1,clearInterval:!1},prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},standard={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,Set:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1,WeakMap:!1},nonstandard={escape:!1,unescape:!1},syntax={},worker={importScripts:!0,postMessage:!0,self:!0},wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},yui={YUI:!1,Y:!1,YUI_config:!1};\\n(function(){ax=/@cc|\u003C\\\\/?|script|\\\\]\\\\s*\\\\]|\u003C\\\\s*!|</i,cx=/[\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]/,tx=/^\\\\s*([(){}\\\\[.,:;\\'\"~\\\\?\\\\]#@]|==?=?|\\\\/=(?!(\\\\S*\\\\/[gim]?))|\\\\/(\\\\*(jshint|jslint|members?|global)?|\\\\/)?|\\\\*[\\\\/=]?|\\\\+(?:=|\\\\++)?|-(?:=|-+)?|%=?|&[&=]?|\\\\|[|=]?|>>?>?=?|\u003C([\\\\/=!]|\\\\!(\\\\[|--)?|\u003C=?)?|\\\\^=?|\\\\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\\\\.[0-9]*)?([eE][+\\\\-]?[0-9]+)?)/,nx=/[\\\\u0000-\\\\u001f&\u003C\"\\\\/\\\\\\\\\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]/,nxg=/[\\\\u0000-\\\\u001f&\u003C\"\\\\/\\\\\\\\\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]/g,lx=/\\\\*\\\\//,ix=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,jx=/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\\\\s*:/i,ft=/^\\\\s*\\\\/\\\\*\\\\s*falls\\\\sthrough\\\\s*\\\\*\\\\/\\\\s*$/})(),\"function\"!=typeof Array.isArray&&(Array.isArray=function(o){return\"[object Array]\"===Object.prototype.toString.apply(o)}),Array.prototype.forEach||(Array.prototype.forEach=function(fn,scope){for(var len=this.length,i=0;len>i;i++)fn.call(scope||this,this[i],i,this)}),Array.prototype.indexOf||(Array.prototype.indexOf=function(searchElement){if(null===this||void 0===this)throw new TypeError;var t=Object(this),len=t.length>>>0;if(0===len)return-1;var n=0;if(arguments.length>0&&(n=Number(arguments[1]),n!=n?n=0:0!==n&&1/0!=n&&n!=-1/0&&(n=(n>0||-1)*Math.floor(Math.abs(n)))),n>=len)return-1;for(var k=n>=0?n:Math.max(len-Math.abs(n),0);len>k;k++)if(k in t&&t[k]===searchElement)return k;return-1}),\"function\"!=typeof Object.create&&(Object.create=function(o){return F.prototype=o,new F}),\"function\"!=typeof Object.keys&&(Object.keys=function(o){var k,a=[];for(k in o)is_own(o,k)&&a.push(k);return a});var lex=function lex(){function nextLine(){var at,match,tw;return line>=lines.length?!1:(character=1,s=lines[line],line+=1,option.smarttabs?(match=s.match(/(\\\\/\\\\/)? \\\\t/),at=match&&!match[1]?0:-1):at=s.search(/ \\\\t|\\\\t [^\\\\*]/),at>=0&&warningAt(\"Mixed spaces and tabs.\",line,at+1),s=s.replace(/\\\\t/g,tab),at=s.search(cx),at>=0&&warningAt(\"Unsafe character.\",line,at),option.maxlen&&option.maxlen\u003Cs.length&&warningAt(\"Line too long.\",line,s.length),tw=option.trailing&&s.match(/^(.*?)\\\\s+$/),tw&&!/^\\\\s+$/.test(s)&&warningAt(\"Trailing whitespace.\",line,tw[1].length+1),!0)}function it(type,value){function checkName(name){if(!option.proto&&\"__proto__\"===name)return warningAt(\"The \\'{a}\\' property is deprecated.\",line,from,name),void 0;if(!option.iterator&&\"__iterator__\"===name)return warningAt(\"\\'{a}\\' is only available in JavaScript 1.7.\",line,from,name),void 0;var hasDangling=/^(_+.*|.*_+)$/.test(name);if(option.nomen&&hasDangling&&\"_\"!==name){if(option.node&&\".\"!==token.id&&/^(__dirname|__filename)$/.test(name))return;return warningAt(\"Unexpected {a} in \\'{b}\\'.\",line,from,\"dangling \\'_\\'\",name),void 0}option.camelcase&&name.replace(/^_+/,\"\").indexOf(\"_\")>-1&&!name.match(/^[A-Z0-9_]*$/)&&warningAt(\"Identifier \\'{a}\\' is not in camel case.\",line,from,value)}var i,t;return t=\"(color)\"===type||\"(range)\"===type?{type:type}:\"(punctuator)\"===type||\"(identifier)\"===type&&is_own(syntax,value)?syntax[value]||syntax[\"(error)\"]:syntax[type],t=Object.create(t),(\"(string)\"===type||\"(range)\"===type)&&!option.scripturl&&jx.test(value)&&warningAt(\"Script URL.\",line,from),\"(identifier)\"===type&&(t.identifier=!0,checkName(value)),t.value=value,t.line=line,t.character=character,t.from=from,i=t.id,\"(endline)\"!==i&&(prereg=i&&(\"(,=:[!&|?{};\".indexOf(i.charAt(i.length-1))>=0||\"return\"===i||\"case\"===i)),t}var character,from,line,s;return{init:function(source){lines=\"string\"==typeof source?source.replace(/\\\\r\\\\n/g,\"\\\\n\").replace(/\\\\r/g,\"\\\\n\").split(\"\\\\n\"):source,lines[0]&&\"#!\"===lines[0].substr(0,2)&&(lines[0]=\"\"),line=0,nextLine(),from=1},range:function(begin,end){var c,value=\"\";for(from=character,s.charAt(0)!==begin&&errorAt(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",line,character,begin,s.charAt(0));;){switch(s=s.slice(1),character+=1,c=s.charAt(0)){case\"\":errorAt(\"Missing \\'{a}\\'.\",line,character,c);break;case end:return s=s.slice(1),character+=1,it(\"(range)\",value);case\"\\\\\\\\\":warningAt(\"Unexpected \\'{a}\\'.\",line,character,c)}value+=c}},token:function(){function match(x){var r1,r=x.exec(s);return r?(l=r[0].length,r1=r[1],c=r1.charAt(0),s=s.substr(l),from=character+l-r1.length,character+=l,r1):void 0}function string(x){function esc(n){var i=parseInt(s.substr(j+1,n),16);j+=n,i>=32&&126>=i&&34!==i&&92!==i&&39!==i&&warningAt(\"Unnecessary escapement.\",line,character),character+=n,c=String.fromCharCode(i)}var c,j,r=\"\",allowNewLine=!1;jsonmode&&\\'\"\\'!==x&&warningAt(\"Strings must use doublequote.\",line,character),option.quotmark&&(\"single\"===option.quotmark&&\"\\'\"!==x?warningAt(\"Strings must use singlequote.\",line,character):\"double\"===option.quotmark&&\\'\"\\'!==x?warningAt(\"Strings must use doublequote.\",line,character):option.quotmark===!0&&(quotmark=quotmark||x,quotmark!==x&&warningAt(\"Mixed double and single quotes.\",line,character))),j=0;unclosedString:for(;;){for(;j>=s.length;){j=0;var cl=line,cf=from;if(!nextLine()){errorAt(\"Unclosed string.\",cl,cf);break unclosedString}allowNewLine?allowNewLine=!1:warningAt(\"Unclosed string.\",cl,cf)}if(c=s.charAt(j),c===x)return character+=1,s=s.substr(j+1),it(\"(string)\",r,x);if(\" \">c){if(\"\\\\n\"===c||\"\\\\r\"===c)break;warningAt(\"Control character in string: {a}.\",line,character+j,s.slice(0,j))}else if(\"\\\\\\\\\"===c)switch(j+=1,character+=1,c=s.charAt(j),n=s.charAt(j+1),c){case\"\\\\\\\\\":case\\'\"\\':case\"/\":break;case\"\\'\":jsonmode&&warningAt(\"Avoid \\\\\\\\\\'.\",line,character);break;case\"b\":c=\"\\\\b\";break;case\"f\":c=\"\\\\f\";break;case\"n\":c=\"\\\\n\";break;case\"r\":c=\"\\\\r\";break;case\"t\":c=\"\t\";break;case\"0\":c=\"\\\\0\",n>=0&&7>=n&&directive[\"use strict\"]&&warningAt(\"Octal literals are not allowed in strict mode.\",line,character);break;case\"u\":esc(4);break;case\"v\":jsonmode&&warningAt(\"Avoid \\\\\\\\v.\",line,character),c=\"\u000b\";break;case\"x\":jsonmode&&warningAt(\"Avoid \\\\\\\\x-.\",line,character),esc(2);break;case\"\":if(allowNewLine=!0,option.multistr){jsonmode&&warningAt(\"Avoid EOL escapement.\",line,character),c=\"\",character-=1;break}warningAt(\"Bad escapement of EOL. Use option multistr if needed.\",line,character);break;case\"!\":if(\"\u003C\"===s.charAt(j-2))break;default:warningAt(\"Bad escapement.\",line,character)}r+=c,character+=1,j+=1}}for(var b,c,captures,d,depth,high,i,l,low,q,t,isLiteral,isInRange,n;;){if(!s)return it(nextLine()?\"(endline)\":\"(end)\",\"\");if(t=match(tx)){if(isAlpha(c)||\"_\"===c||\"$\"===c)return it(\"(identifier)\",t);if(isDigit(c))return isFinite(Number(t))||warningAt(\"Bad number \\'{a}\\'.\",line,character,t),isAlpha(s.substr(0,1))&&warningAt(\"Missing space after \\'{a}\\'.\",line,character,t),\"0\"===c&&(d=t.substr(1,1),isDigit(d)?\".\"!==token.id&&warningAt(\"Don\\'t use extra leading zeros \\'{a}\\'.\",line,character,t):!jsonmode||\"x\"!==d&&\"X\"!==d||warningAt(\"Avoid 0x-. \\'{a}\\'.\",line,character,t)),\".\"===t.substr(t.length-1)&&warningAt(\"A trailing decimal point can be confused with a dot \\'{a}\\'.\",line,character,t),it(\"(number)\",t);switch(t){case\\'\"\\':case\"\\'\":return string(t);case\"//\":s=\"\",token.comment=!0;break;case\"/*\":for(;i=s.search(lx),!(i>=0);)nextLine()||errorAt(\"Unclosed comment.\",line,character);s=s.substr(i+2),token.comment=!0;break;case\"/*members\":case\"/*member\":case\"/*jshint\":case\"/*jslint\":case\"/*global\":case\"*/\":return{value:t,type:\"special\",line:line,character:character,from:from};case\"\":break;case\"/\":if(\"=\"===s.charAt(0)&&errorAt(\"A regular expression literal can be confused with \\'/=\\'.\",line,from),prereg){for(depth=0,captures=0,l=0;;){switch(b=!0,c=s.charAt(l),l+=1,c){case\"\":return errorAt(\"Unclosed regular expression.\",line,from),quit(\"Stopping.\",line,from);case\"/\":for(depth>0&&warningAt(\"{a} unterminated regular expression group(s).\",line,from+l,depth),c=s.substr(0,l-1),q={g:!0,i:!0,m:!0};q[s.charAt(l)]===!0;)q[s.charAt(l)]=!1,l+=1;return character+=l,s=s.substr(l),q=s.charAt(0),(\"/\"===q||\"*\"===q)&&errorAt(\"Confusing regular expression.\",line,from),it(\"(regexp)\",c);case\"\\\\\\\\\":c=s.charAt(l),\" \">c?warningAt(\"Unexpected control character in regular expression.\",line,from+l):\"\u003C\"===c&&warningAt(\"Unexpected escaped character \\'{a}\\' in regular expression.\",line,from+l,c),l+=1;break;case\"(\":if(depth+=1,b=!1,\"?\"===s.charAt(l))switch(l+=1,s.charAt(l)){case\":\":case\"=\":case\"!\":l+=1;break;default:warningAt(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",line,from+l,\":\",s.charAt(l))}else captures+=1;break;case\"|\":b=!1;break;case\")\":0===depth?warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,\")\"):depth-=1;break;case\" \":for(q=1;\" \"===s.charAt(l);)l+=1,q+=1;q>1&&warningAt(\"Spaces are hard to count. Use {{a}}.\",line,from+l,q);break;case\"[\":c=s.charAt(l),\"^\"===c&&(l+=1,\"]\"===s.charAt(l)&&errorAt(\"Unescaped \\'{a}\\'.\",line,from+l,\"^\")),\"]\"===c&&warningAt(\"Empty class.\",line,from+l-1),isLiteral=!1,isInRange=!1;klass:do switch(c=s.charAt(l),l+=1,c){case\"[\":case\"^\":warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,c),isInRange?isInRange=!1:isLiteral=!0;break;case\"-\":isLiteral&&!isInRange?(isLiteral=!1,isInRange=!0):isInRange?isInRange=!1:\"]\"===s.charAt(l)?isInRange=!0:(option.regexdash!==(2===l||3===l&&\"^\"===s.charAt(1))&&warningAt(\"Unescaped \\'{a}\\'.\",line,from+l-1,\"-\"),isLiteral=!0);break;case\"]\":isInRange&&!option.regexdash&&warningAt(\"Unescaped \\'{a}\\'.\",line,from+l-1,\"-\");break klass;case\"\\\\\\\\\":c=s.charAt(l),\" \">c?warningAt(\"Unexpected control character in regular expression.\",line,from+l):\"\u003C\"===c&&warningAt(\"Unexpected escaped character \\'{a}\\' in regular expression.\",line,from+l,c),l+=1,/[wsd]/i.test(c)?(isInRange&&(warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,\"-\"),isInRange=!1),isLiteral=!1):isInRange?isInRange=!1:isLiteral=!0;break;case\"/\":warningAt(\"Unescaped \\'{a}\\'.\",line,from+l-1,\"/\"),isInRange?isInRange=!1:isLiteral=!0;break;case\"\u003C\":isInRange?isInRange=!1:isLiteral=!0;break;default:isInRange?isInRange=!1:isLiteral=!0}while(c);break;case\".\":option.regexp&&warningAt(\"Insecure \\'{a}\\'.\",line,from+l,c);break;case\"]\":case\"?\":case\"{\":case\"}\":case\"+\":case\"*\":warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,c)}if(b)switch(s.charAt(l)){case\"?\":case\"+\":case\"*\":l+=1,\"?\"===s.charAt(l)&&(l+=1);break;case\"{\":if(l+=1,c=s.charAt(l),\"0\">c||c>\"9\"){warningAt(\"Expected a number and instead saw \\'{a}\\'.\",line,from+l,c);break}for(l+=1,low=+c;c=s.charAt(l),!(\"0\">c||c>\"9\");)l+=1,low=+c+10*low;if(high=low,\",\"===c&&(l+=1,high=1/0,c=s.charAt(l),c>=\"0\"&&\"9\">=c))for(l+=1,high=+c;c=s.charAt(l),!(\"0\">c||c>\"9\");)l+=1,high=+c+10*high;\"}\"!==s.charAt(l)?warningAt(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",line,from+l,\"}\",c):l+=1,\"?\"===s.charAt(l)&&(l+=1),low>high&&warningAt(\"\\'{a}\\' should not be greater than \\'{b}\\'.\",line,from+l,low,high)}}return c=s.substr(0,l-1),character+=l,s=s.substr(l),it(\"(regexp)\",c)}return it(\"(punctuator)\",t);case\"#\":return it(\"(punctuator)\",t);default:return it(\"(punctuator)\",t)}}else{for(t=\"\",c=\"\";s&&\"!\">s;)s=s.substr(1);s&&(errorAt(\"Unexpected \\'{a}\\'.\",line,character,s.substr(0,1)),s=\"\")}}}}}();type(\"(number)\",function(){return this}),type(\"(string)\",function(){return this}),syntax[\"(identifier)\"]={type:\"(identifier)\",lbp:0,identifier:!0,nud:function(){var f,v=this.value,s=scope[v];if(\"function\"==typeof s?s=void 0:\"boolean\"==typeof s&&(f=funct,funct=functions[0],addlabel(v,\"var\"),s=funct,funct=f),funct===s)switch(funct[v]){case\"unused\":funct[v]=\"var\";break;case\"unction\":funct[v]=\"function\",this[\"function\"]=!0;break;case\"function\":this[\"function\"]=!0;break;case\"label\":warning(\"\\'{a}\\' is a statement label.\",token,v)}else if(funct[\"(global)\"])option.undef&&\"boolean\"!=typeof predefined[v]&&(\"typeof\"!==anonname&&\"delete\"!==anonname||nexttoken&&(\".\"===nexttoken.value||\"[\"===nexttoken.value))&&isundef(funct,\"\\'{a}\\' is not defined.\",token,v),note_implied(token);else switch(funct[v]){case\"closure\":case\"function\":case\"var\":case\"unused\":warning(\"\\'{a}\\' used out of scope.\",token,v);break;case\"label\":warning(\"\\'{a}\\' is a statement label.\",token,v);break;case\"outer\":case\"global\":break;default:if(s===!0)funct[v]=!0;else if(null===s)warning(\"\\'{a}\\' is not allowed.\",token,v),note_implied(token);else if(\"object\"!=typeof s)option.undef&&(\"typeof\"!==anonname&&\"delete\"!==anonname||nexttoken&&(\".\"===nexttoken.value||\"[\"===nexttoken.value))&&isundef(funct,\"\\'{a}\\' is not defined.\",token,v),funct[v]=!0,note_implied(token);else switch(s[v]){case\"function\":case\"unction\":this[\"function\"]=!0,s[v]=\"closure\",funct[v]=s[\"(global)\"]?\"global\":\"outer\";break;case\"var\":case\"unused\":s[v]=\"closure\",funct[v]=s[\"(global)\"]?\"global\":\"outer\";break;case\"closure\":funct[v]=s[\"(global)\"]?\"global\":\"outer\";break;case\"label\":warning(\"\\'{a}\\' is a statement label.\",token,v)}}return this},led:function(){error(\"Expected an operator and instead saw \\'{a}\\'.\",nexttoken,nexttoken.value)}},type(\"(regexp)\",function(){return this}),delim(\"(endline)\"),delim(\"(begin)\"),delim(\"(end)\").reach=!0,delim(\"\u003C/\").reach=!0,delim(\"\u003C!\"),delim(\"\u003C!--\"),delim(\"-->\"),delim(\"(error)\").reach=!0,delim(\"}\").reach=!0,delim(\")\"),delim(\"]\"),delim(\\'\"\\').reach=!0,delim(\"\\'\").reach=!0,delim(\";\"),delim(\":\").reach=!0,delim(\",\"),delim(\"#\"),delim(\"@\"),reserve(\"else\"),reserve(\"case\").reach=!0,reserve(\"catch\"),reserve(\"default\").reach=!0,reserve(\"finally\"),reservevar(\"arguments\",function(x){directive[\"use strict\"]&&funct[\"(global)\"]&&warning(\"Strict violation.\",x)}),reservevar(\"eval\"),reservevar(\"false\"),reservevar(\"Infinity\"),reservevar(\"null\"),reservevar(\"this\",function(x){directive[\"use strict\"]&&!option.validthis&&(funct[\"(statement)\"]&&funct[\"(name)\"].charAt(0)>\"Z\"||funct[\"(global)\"])&&warning(\"Possible strict violation.\",x)}),reservevar(\"true\"),reservevar(\"undefined\"),assignop(\"=\",\"assign\",20),assignop(\"+=\",\"assignadd\",20),assignop(\"-=\",\"assignsub\",20),assignop(\"*=\",\"assignmult\",20),assignop(\"/=\",\"assigndiv\",20).nud=function(){error(\"A regular expression literal can be confused with \\'/=\\'.\")},assignop(\"%=\",\"assignmod\",20),bitwiseassignop(\"&=\",\"assignbitand\",20),bitwiseassignop(\"|=\",\"assignbitor\",20),bitwiseassignop(\"^=\",\"assignbitxor\",20),bitwiseassignop(\"\u003C\u003C=\",\"assignshiftleft\",20),bitwiseassignop(\">>=\",\"assignshiftright\",20),bitwiseassignop(\">>>=\",\"assignshiftrightunsigned\",20),infix(\"?\",function(left,that){return that.left=left,that.right=expression(10),advance(\":\"),that[\"else\"]=expression(10),that},30),infix(\"||\",\"or\",40),infix(\"&&\",\"and\",50),bitwise(\"|\",\"bitor\",70),bitwise(\"^\",\"bitxor\",80),bitwise(\"&\",\"bitand\",90),relation(\"==\",function(left,right){var eqnull=option.eqnull&&(\"null\"===left.value||\"null\"===right.value);return!eqnull&&option.eqeqeq?warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",this,\"===\",\"==\"):isPoorRelation(left)?warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"===\",left.value):isPoorRelation(right)&&warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"===\",right.value),this}),relation(\"===\"),relation(\"!=\",function(left,right){var eqnull=option.eqnull&&(\"null\"===left.value||\"null\"===right.value);return!eqnull&&option.eqeqeq?warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",this,\"!==\",\"!=\"):isPoorRelation(left)?warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"!==\",left.value):isPoorRelation(right)&&warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"!==\",right.value),this}),relation(\"!==\"),relation(\"\u003C\"),relation(\">\"),relation(\"\u003C=\"),relation(\">=\"),bitwise(\"\u003C\u003C\",\"shiftleft\",120),bitwise(\">>\",\"shiftright\",120),bitwise(\">>>\",\"shiftrightunsigned\",120),infix(\"in\",\"in\",120),infix(\"instanceof\",\"instanceof\",120),infix(\"+\",function(left,that){var right=expression(130);return left&&right&&\"(string)\"===left.id&&\"(string)\"===right.id?(left.value+=right.value,left.character=right.character,!option.scripturl&&jx.test(left.value)&&warning(\"JavaScript URL.\",left),left):(that.left=left,that.right=right,that)},130),prefix(\"+\",\"num\"),prefix(\"+++\",function(){return warning(\"Confusing pluses.\"),this.right=expression(150),this.arity=\"unary\",this}),infix(\"+++\",function(left){return warning(\"Confusing pluses.\"),this.left=left,this.right=expression(130),this},130),infix(\"-\",\"sub\",130),prefix(\"-\",\"neg\"),prefix(\"---\",function(){return warning(\"Confusing minuses.\"),this.right=expression(150),this.arity=\"unary\",this}),infix(\"---\",function(left){return warning(\"Confusing minuses.\"),this.left=left,this.right=expression(130),this},130),infix(\"*\",\"mult\",140),infix(\"/\",\"div\",140),infix(\"%\",\"mod\",140),suffix(\"++\",\"postinc\"),prefix(\"++\",\"preinc\"),syntax[\"++\"].exps=!0,suffix(\"--\",\"postdec\"),prefix(\"--\",\"predec\"),syntax[\"--\"].exps=!0,prefix(\"delete\",function(){var p=expression(0);return(!p||\".\"!==p.id&&\"[\"!==p.id)&&warning(\"Variables should not be deleted.\"),this.first=p,this}).exps=!0,prefix(\"~\",function(){return option.bitwise&&warning(\"Unexpected \\'{a}\\'.\",this,\"~\"),expression(150),this}),prefix(\"!\",function(){return this.right=expression(150),this.arity=\"unary\",bang[this.right.id]===!0&&warning(\"Confusing use of \\'{a}\\'.\",this,\"!\"),this}),prefix(\"typeof\",\"typeof\"),prefix(\"new\",function(){var i,c=expression(155);if(c&&\"function\"!==c.id)if(c.identifier)switch(c[\"new\"]=!0,c.value){case\"Number\":case\"String\":case\"Boolean\":case\"Math\":case\"JSON\":warning(\"Do not use {a} as a constructor.\",prevtoken,c.value);break;case\"Function\":option.evil||warning(\"The Function constructor is eval.\");break;case\"Date\":case\"RegExp\":break;default:\"function\"!==c.id&&(i=c.value.substr(0,1),option.newcap&&(\"A\">i||i>\"Z\")&&!is_own(global,c.value)&&warning(\"A constructor name should start with an uppercase letter.\",token))}else\".\"!==c.id&&\"[\"!==c.id&&\"(\"!==c.id&&warning(\"Bad constructor.\",token);else option.supernew||warning(\"Weird construction. Delete \\'new\\'.\",this);return adjacent(token,nexttoken),\"(\"===nexttoken.id||option.supernew||warning(\"Missing \\'()\\' invoking a constructor.\",token,token.value),this.first=c,this}),syntax[\"new\"].exps=!0,prefix(\"void\").exps=!0,infix(\".\",function(left,that){adjacent(prevtoken,token),nobreak();var m=identifier();return\"string\"==typeof m&&countMember(m),that.left=left,that.right=m,!left||\"arguments\"!==left.value||\"callee\"!==m&&\"caller\"!==m?option.evil||!left||\"document\"!==left.value||\"write\"!==m&&\"writeln\"!==m||warning(\"document.write can be a form of eval.\",left):option.noarg?warning(\"Avoid arguments.{a}.\",left,m):directive[\"use strict\"]&&error(\"Strict violation.\"),option.evil||\"eval\"!==m&&\"execScript\"!==m||warning(\"eval is evil.\"),that},160,!0),infix(\"(\",function(left,that){\"}\"!==prevtoken.id&&\")\"!==prevtoken.id&&nobreak(prevtoken,token),nospace(),option.immed&&!left.immed&&\"function\"===left.id&&warning(\"Wrap an immediate function invocation in parentheses to assist the reader in understanding that the expression is the result of a function, and not the function itself.\");var n=0,p=[];if(left&&\"(identifier)\"===left.type&&left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&-1===\"Number String Boolean Date Object\".indexOf(left.value)&&(\"Math\"===left.value?warning(\"Math is not a function.\",left):option.newcap&&warning(\"Missing \\'new\\' prefix when invoking a constructor.\",left)),\")\"!==nexttoken.id)for(;p[p.length]=expression(10),n+=1,\",\"===nexttoken.id;)comma();return advance(\")\"),nospace(prevtoken,token),\"object\"==typeof left&&(\"parseInt\"===left.value&&1===n&&warning(\"Missing radix parameter.\",token),option.evil||(\"eval\"===left.value||\"Function\"===left.value||\"execScript\"===left.value?(warning(\"eval is evil.\",left),p[0]&&\"(string)\"===[0].id&&addInternalSrc(left,p[0].value)):!p[0]||\"(string)\"!==p[0].id||\"setTimeout\"!==left.value&&\"setInterval\"!==left.value?!p[0]||\"(string)\"!==p[0].id||\".\"!==left.value||\"window\"!==left.left.value||\"setTimeout\"!==left.right&&\"setInterval\"!==left.right||(warning(\"Implied eval is evil. Pass a function instead of a string.\",left),addInternalSrc(left,p[0].value)):(warning(\"Implied eval is evil. Pass a function instead of a string.\",left),addInternalSrc(left,p[0].value))),left.identifier||\".\"===left.id||\"[\"===left.id||\"(\"===left.id||\"&&\"===left.id||\"||\"===left.id||\"?\"===left.id||warning(\"Bad invocation.\",left)),that.left=left,that},155,!0).exps=!0,prefix(\"(\",function(){nospace(),\"function\"===nexttoken.id&&(nexttoken.immed=!0);var v=expression(0);return advance(\")\",this),nospace(prevtoken,token),option.immed&&\"function\"===v.id&&\"(\"!==nexttoken.id&&(\".\"!==nexttoken.id||\"call\"!==peek().value&&\"apply\"!==peek().value)&&warning(\"Do not wrap function literals in parens unless they are to be immediately invoked.\",this),v}),infix(\"[\",function(left,that){nobreak(prevtoken,token),nospace();var s,e=expression(0);return e&&\"(string)\"===e.type&&(option.evil||\"eval\"!==e.value&&\"execScript\"!==e.value||warning(\"eval is evil.\",that),countMember(e.value),!option.sub&&ix.test(e.value)&&(s=syntax[e.value],s&&s.reserved||warning(\"[\\'{a}\\'] is better written in dot notation.\",prevtoken,e.value))),advance(\"]\",that),nospace(prevtoken,token),that.left=left,that.right=e,that},160,!0),prefix(\"[\",function(){var b=token.line!==nexttoken.line;for(this.first=[],b&&(indent+=option.indent,nexttoken.from===indent+option.indent&&(indent+=option.indent));\"(end)\"!==nexttoken.id;){for(;\",\"===nexttoken.id;)option.es5||warning(\"Extra comma.\"),advance(\",\");if(\"]\"===nexttoken.id)break;if(b&&token.line!==nexttoken.line&&indentation(),this.first.push(expression(10)),\",\"!==nexttoken.id)break;if(comma(),\"]\"===nexttoken.id&&!option.es5){warning(\"Extra comma.\",token);break}}return b&&(indent-=option.indent,indentation()),advance(\"]\",this),this},160),function(x){x.nud=function(){function saveProperty(name,token){props[name]&&is_own(props,name)?warning(\"Duplicate member \\'{a}\\'.\",nexttoken,i):props[name]={},props[name].basic=!0,props[name].basicToken=token}function saveSetter(name,token){props[name]&&is_own(props,name)?(props[name].basic||props[name].setter)&&warning(\"Duplicate member \\'{a}\\'.\",nexttoken,i):props[name]={},props[name].setter=!0,props[name].setterToken=token}function saveGetter(name){props[name]&&is_own(props,name)?(props[name].basic||props[name].getter)&&warning(\"Duplicate member \\'{a}\\'.\",nexttoken,i):props[name]={},props[name].getter=!0,props[name].getterToken=token}var b,f,i,p,t,props={};for(b=token.line!==nexttoken.line,b&&(indent+=option.indent,nexttoken.from===indent+option.indent&&(indent+=option.indent));\"}\"!==nexttoken.id;){if(b&&indentation(),\"get\"===nexttoken.value&&\":\"!==peek().id)advance(\"get\"),option.es5||error(\"get/set are ES5 features.\"),i=property_name(),i||error(\"Missing property name.\"),saveGetter(i),t=nexttoken,adjacent(token,nexttoken),f=doFunction(),p=f[\"(params)\"],p&&warning(\"Unexpected parameter \\'{a}\\' in get {b} function.\",t,p[0],i),adjacent(token,nexttoken);else if(\"set\"===nexttoken.value&&\":\"!==peek().id)advance(\"set\"),option.es5||error(\"get/set are ES5 features.\"),i=property_name(),i||error(\"Missing property name.\"),saveSetter(i,nexttoken),t=nexttoken,adjacent(token,nexttoken),f=doFunction(),p=f[\"(params)\"],p&&1===p.length||warning(\"Expected a single parameter in set {a} function.\",t,i);else{if(i=property_name(),saveProperty(i,nexttoken),\"string\"!=typeof i)break;advance(\":\"),nonadjacent(token,nexttoken),expression(10)}if(countMember(i),\",\"!==nexttoken.id)break;comma(),\",\"===nexttoken.id?warning(\"Extra comma.\",token):\"}\"!==nexttoken.id||option.es5||warning(\"Extra comma.\",token)}if(b&&(indent-=option.indent,indentation()),advance(\"}\",this),option.es5)for(var name in props)is_own(props,name)&&props[name].setter&&!props[name].getter&&warning(\"Setter is defined without getter.\",props[name].setterToken);return this},x.fud=function(){error(\"Expected to see a statement and instead saw a block.\",token)}}(delim(\"{\")),useESNextSyntax=function(){var conststatement=stmt(\"const\",function(prefix){var id,name,value;for(this.first=[];(nonadjacent(token,nexttoken),id=identifier(),\"const\"===funct[id]&&warning(\"const \\'\"+id+\"\\' has already been declared\"),funct[\"(global)\"]&&predefined[id]===!1&&warning(\"Redefinition of \\'{a}\\'.\",token,id),addlabel(id,\"const\"),!prefix)&&(name=token,this.first.push(token),\"=\"!==nexttoken.id&&warning(\"const \\'{a}\\' is initialized to \\'undefined\\'.\",token,id),\"=\"===nexttoken.id&&(nonadjacent(token,nexttoken),advance(\"=\"),nonadjacent(token,nexttoken),\"undefined\"===nexttoken.id&&warning(\"It is not necessary to initialize \\'{a}\\' to \\'undefined\\'.\",token,id),\"=\"===peek(0).id&&nexttoken.identifier&&error(\"Constant {a} was not declared correctly.\",nexttoken,nexttoken.value),value=expression(0),name.first=value),\",\"===nexttoken.id);)comma();return this});conststatement.exps=!0};var varstatement=stmt(\"var\",function(prefix){var id,name,value;for(funct[\"(onevar)\"]&&option.onevar?warning(\"Too many var statements.\"):funct[\"(global)\"]||(funct[\"(onevar)\"]=!0),this.first=[];(nonadjacent(token,nexttoken),id=identifier(),option.esnext&&\"const\"===funct[id]&&warning(\"const \\'\"+id+\"\\' has already been declared\"),funct[\"(global)\"]&&predefined[id]===!1&&warning(\"Redefinition of \\'{a}\\'.\",token,id),addlabel(id,\"unused\",token),!prefix)&&(name=token,this.first.push(token),\"=\"===nexttoken.id&&(nonadjacent(token,nexttoken),advance(\"=\"),nonadjacent(token,nexttoken),\"undefined\"===nexttoken.id&&warning(\"It is not necessary to initialize \\'{a}\\' to \\'undefined\\'.\",token,id),\"=\"===peek(0).id&&nexttoken.identifier&&error(\"Variable {a} was not declared correctly.\",nexttoken,nexttoken.value),value=expression(0),name.first=value),\",\"===nexttoken.id);)comma();return this});varstatement.exps=!0,blockstmt(\"function\",function(){inblock&&warning(\"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.\",token);var i=identifier();return option.esnext&&\"const\"===funct[i]&&warning(\"const \\'\"+i+\"\\' has already been declared\"),adjacent(token,nexttoken),addlabel(i,\"unction\",token),doFunction(i,{statement:!0}),\"(\"===nexttoken.id&&nexttoken.line===token.line&&error(\"Function declarations are not invocable. Wrap the whole function invocation in parens.\"),this}),prefix(\"function\",function(){var i=optionalidentifier();return i?adjacent(token,nexttoken):nonadjacent(token,nexttoken),doFunction(i),!option.loopfunc&&funct[\"(loopage)\"]&&warning(\"Don\\'t make functions within a loop.\"),this}),blockstmt(\"if\",function(){var t=nexttoken;return increaseComplexityCount(),advance(\"(\"),nonadjacent(this,t),nospace(),expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20)),advance(\")\",t),nospace(prevtoken,token),block(!0,!0),\"else\"===nexttoken.id&&(nonadjacent(token,nexttoken),advance(\"else\"),\"if\"===nexttoken.id||\"switch\"===nexttoken.id?statement(!0):block(!0,!0)),this}),blockstmt(\"try\",function(){function doCatch(){var e,oldScope=scope;advance(\"catch\"),nonadjacent(token,nexttoken),advance(\"(\"),scope=Object.create(oldScope),e=nexttoken.value,\"(identifier)\"!==nexttoken.type&&(e=null,warning(\"Expected an identifier and instead saw \\'{a}\\'.\",nexttoken,e)),advance(),advance(\")\"),funct={\"(name)\":\"(catch)\",\"(line)\":nexttoken.line,\"(character)\":nexttoken.character,\"(context)\":funct,\"(breakage)\":funct[\"(breakage)\"],\"(loopage)\":funct[\"(loopage)\"],\"(scope)\":scope,\"(statement)\":!1,\"(metrics)\":createMetrics(nexttoken),\"(catch)\":!0,\"(tokens)\":{}},e&&addlabel(e,\"exception\"),token.funct=funct,functions.push(funct),block(!1),scope=oldScope,funct[\"(last)\"]=token.line,funct[\"(lastcharacter)\"]=token.character,funct=funct[\"(context)\"]}var b;return block(!1),\"catch\"===nexttoken.id&&(increaseComplexityCount(),doCatch(),b=!0),\"finally\"===nexttoken.id?(advance(\"finally\"),block(!1),void 0):(b||error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"catch\",nexttoken.value),this)}),blockstmt(\"while\",function(){var t=nexttoken;return funct[\"(breakage)\"]+=1,funct[\"(loopage)\"]+=1,increaseComplexityCount(),advance(\"(\"),nonadjacent(this,t),nospace(),expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20)),advance(\")\",t),nospace(prevtoken,token),block(!0,!0),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this}).labelled=!0,blockstmt(\"with\",function(){var t=nexttoken;return directive[\"use strict\"]?error(\"\\'with\\' is not allowed in strict mode.\",token):option.withstmt||warning(\"Don\\'t use \\'with\\'.\",token),advance(\"(\"),nonadjacent(this,t),nospace(),expression(0),advance(\")\",t),nospace(prevtoken,token),block(!0,!0),this}),blockstmt(\"switch\",function(){var t=nexttoken,g=!1;for(funct[\"(breakage)\"]+=1,advance(\"(\"),nonadjacent(this,t),nospace(),this.condition=expression(20),advance(\")\",t),nospace(prevtoken,token),nonadjacent(token,nexttoken),t=nexttoken,advance(\"{\"),nonadjacent(token,nexttoken),indent+=option.indent,this.cases=[];;)switch(nexttoken.id){case\"case\":switch(funct[\"(verb)\"]){case\"break\":case\"case\":case\"continue\":case\"return\":case\"switch\":case\"throw\":break;default:ft.test(lines[nexttoken.line-2])||warning(\"Expected a \\'break\\' statement before \\'case\\'.\",token)}indentation(-option.indent),advance(\"case\"),this.cases.push(expression(20)),increaseComplexityCount(),g=!0,advance(\":\"),funct[\"(verb)\"]=\"case\";break;case\"default\":switch(funct[\"(verb)\"]){case\"break\":case\"continue\":case\"return\":case\"throw\":break;default:ft.test(lines[nexttoken.line-2])||warning(\"Expected a \\'break\\' statement before \\'default\\'.\",token)}indentation(-option.indent),advance(\"default\"),g=!0,advance(\":\");break;case\"}\":return indent-=option.indent,indentation(),advance(\"}\",t),(1===this.cases.length||\"true\"===this.condition.id||\"false\"===this.condition.id)&&(option.onecase||warning(\"This \\'switch\\' should be an \\'if\\'.\",this)),funct[\"(breakage)\"]-=1,funct[\"(verb)\"]=void 0,void 0;case\"(end)\":return error(\"Missing \\'{a}\\'.\",nexttoken,\"}\"),void 0;default:if(g)switch(token.id){case\",\":return error(\"Each value should have its own case label.\"),void 0;case\":\":g=!1,statements();break;default:return error(\"Missing \\':\\' on a case clause.\",token),void 0}else{if(\":\"!==token.id)return error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"case\",nexttoken.value),void 0;advance(\":\"),error(\"Unexpected \\'{a}\\'.\",token,\":\"),statements()}}}).labelled=!0,stmt(\"debugger\",function(){return option.debug||warning(\"All \\'debugger\\' statements should be removed.\"),this}).exps=!0,function(){var x=stmt(\"do\",function(){funct[\"(breakage)\"]+=1,funct[\"(loopage)\"]+=1,increaseComplexityCount(),this.first=block(!0),advance(\"while\");var t=nexttoken;return nonadjacent(token,t),advance(\"(\"),nospace(),expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20)),advance(\")\",t),nospace(prevtoken,token),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this});x.labelled=!0,x.exps=!0}(),blockstmt(\"for\",function(){var s,t=nexttoken;if(funct[\"(breakage)\"]+=1,funct[\"(loopage)\"]+=1,increaseComplexityCount(),advance(\"(\"),nonadjacent(this,t),nospace(),\"in\"===peek(\"var\"===nexttoken.id?1:0).id){if(\"var\"===nexttoken.id)advance(\"var\"),varstatement.fud.call(varstatement,!0);else{switch(funct[nexttoken.value]){case\"unused\":funct[nexttoken.value]=\"var\";break;case\"var\":break;default:warning(\"Bad for in variable \\'{a}\\'.\",nexttoken,nexttoken.value)}advance()}return advance(\"in\"),expression(20),advance(\")\",t),s=block(!0,!0),option.forin&&s&&(s.length>1||\"object\"!=typeof s[0]||\"if\"!==s[0].value)&&warning(\"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.\",this),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this}if(\";\"!==nexttoken.id)if(\"var\"===nexttoken.id)advance(\"var\"),varstatement.fud.call(varstatement);else for(;expression(0,\"for\"),\",\"===nexttoken.id;)comma();if(nolinebreak(token),advance(\";\"),\";\"!==nexttoken.id&&(expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20))),nolinebreak(token),advance(\";\"),\";\"===nexttoken.id&&error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\")\",\";\"),\")\"!==nexttoken.id)for(;expression(0,\"for\"),\",\"===nexttoken.id;)comma();return advance(\")\",t),nospace(prevtoken,token),block(!0,!0),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this}).labelled=!0,stmt(\"break\",function(){var v=nexttoken.value;return 0===funct[\"(breakage)\"]&&warning(\"Unexpected \\'{a}\\'.\",nexttoken,this.value),option.asi||nolinebreak(this),\";\"!==nexttoken.id&&token.line===nexttoken.line&&(\"label\"!==funct[v]?warning(\"\\'{a}\\' is not a statement label.\",nexttoken,v):scope[v]!==funct&&warning(\"\\'{a}\\' is out of scope.\",nexttoken,v),this.first=nexttoken,advance()),reachable(\"break\"),this\\n}).exps=!0,stmt(\"continue\",function(){var v=nexttoken.value;return 0===funct[\"(breakage)\"]&&warning(\"Unexpected \\'{a}\\'.\",nexttoken,this.value),option.asi||nolinebreak(this),\";\"!==nexttoken.id?token.line===nexttoken.line&&(\"label\"!==funct[v]?warning(\"\\'{a}\\' is not a statement label.\",nexttoken,v):scope[v]!==funct&&warning(\"\\'{a}\\' is out of scope.\",nexttoken,v),this.first=nexttoken,advance()):funct[\"(loopage)\"]||warning(\"Unexpected \\'{a}\\'.\",nexttoken,this.value),reachable(\"continue\"),this}).exps=!0,stmt(\"return\",function(){return this.line===nexttoken.line?(\"(regexp)\"===nexttoken.id&&warning(\"Wrap the /regexp/ literal in parens to disambiguate the slash operator.\"),\";\"===nexttoken.id||nexttoken.reach||(nonadjacent(token,nexttoken),\"=\"!==peek().value||option.boss||warningAt(\"Did you mean to return a conditional instead of an assignment?\",token.line,token.character+1),this.first=expression(0))):option.asi||nolinebreak(this),reachable(\"return\"),this}).exps=!0,stmt(\"throw\",function(){return nolinebreak(this),nonadjacent(token,nexttoken),this.first=expression(20),reachable(\"throw\"),this}).exps=!0,reserve(\"class\"),reserve(\"const\"),reserve(\"enum\"),reserve(\"export\"),reserve(\"extends\"),reserve(\"import\"),reserve(\"super\"),reserve(\"let\"),reserve(\"yield\"),reserve(\"implements\"),reserve(\"interface\"),reserve(\"package\"),reserve(\"private\"),reserve(\"protected\"),reserve(\"public\"),reserve(\"static\");var itself=function(s,o,g){var a,i,k,x,optionKeys,newOptionObj={};if(o&&o.scope?JSHINT.scope=o.scope:(JSHINT.errors=[],JSHINT.undefs=[],JSHINT.internals=[],JSHINT.blacklist={},JSHINT.scope=\"(main)\"),predefined=Object.create(standard),declared=Object.create(null),combine(predefined,g||{}),o)for(a=o.predef,a&&(Array.isArray(a)||\"object\"!=typeof a||(a=Object.keys(a)),a.forEach(function(item){var slice;\"-\"===item[0]?(slice=item.slice(1),JSHINT.blacklist[slice]=slice):predefined[item]=!0})),optionKeys=Object.keys(o),x=0;optionKeys.length>x;x++)newOptionObj[optionKeys[x]]=o[optionKeys[x]],\"newcap\"===optionKeys[x]&&o[optionKeys[x]]===!1&&(newOptionObj[\"(explicitNewcap)\"]=!0),\"indent\"===optionKeys[x]&&(newOptionObj.white=!0);for(option=newOptionObj,option.indent=option.indent||4,option.maxerr=option.maxerr||50,tab=\"\",i=0;option.indent>i;i+=1)tab+=\" \";if(indent=1,global=Object.create(predefined),scope=global,funct={\"(global)\":!0,\"(name)\":\"(global)\",\"(scope)\":scope,\"(breakage)\":0,\"(loopage)\":0,\"(tokens)\":{},\"(metrics)\":createMetrics(nexttoken)},functions=[funct],urls=[],stack=null,member={},membersOnly=null,implied={},inblock=!1,lookahead=[],jsonmode=!1,warnings=0,lines=[],unuseds=[],!isString(s)&&!Array.isArray(s))return errorAt(\"Input is neither a string nor an array of strings.\",0),!1;if(isString(s)&&/^\\\\s*$/g.test(s))return errorAt(\"Input is an empty string.\",0),!1;if(0===s.length)return errorAt(\"Input is an empty array.\",0),!1;lex.init(s),prereg=!0,directive={},prevtoken=token=nexttoken=syntax[\"(begin)\"];for(var name in o)is_own(o,name)&&checkOption(name,token);assume(),combine(predefined,g||{}),comma.first=!0,quotmark=void 0;try{switch(advance(),nexttoken.id){case\"{\":case\"[\":option.laxbreak=!0,jsonmode=!0,jsonValue();break;default:directives(),directive[\"use strict\"]&&!option.globalstrict&&warning(\\'Use the function form of \"use strict\".\\',prevtoken),statements()}advance(nexttoken&&\".\"!==nexttoken.value?\"(end)\":void 0);var markDefined=function(name,context){do{if(\"string\"==typeof context[name])return\"unused\"===context[name]?context[name]=\"var\":\"unction\"===context[name]&&(context[name]=\"closure\"),!0;context=context[\"(context)\"]}while(context);return!1},clearImplied=function(name,line){if(implied[name]){for(var newImplied=[],i=0;implied[name].length>i;i+=1)implied[name][i]!==line&&newImplied.push(implied[name][i]);0===newImplied.length?delete implied[name]:implied[name]=newImplied}},warnUnused=function(name,token){var line=token.line,chr=token.character;option.unused&&warningAt(\"\\'{a}\\' is defined but never used.\",line,chr,name),unuseds.push({name:name,line:line,character:chr})},checkUnused=function(func,key){var type=func[key],token=func[\"(tokens)\"][key];\"(\"!==key.charAt(0)&&(\"unused\"===type||\"unction\"===type)&&(func[\"(params)\"]&&-1!==func[\"(params)\"].indexOf(key)||warnUnused(key,token))};for(i=0;JSHINT.undefs.length>i;i+=1)k=JSHINT.undefs[i].slice(0),markDefined(k[2].value,k[0])?clearImplied(k[2].value,k[2].line):warning.apply(warning,k.slice(1));functions.forEach(function(func){for(var key in func)is_own(func,key)&&checkUnused(func,key);if(func[\"(params)\"])for(var type,params=func[\"(params)\"].slice(),param=params.pop();param;){if(type=func[param],\"undefined\"===param)return;if(\"unused\"!==type&&\"unction\"!==type)return;warnUnused(param,func[\"(tokens)\"][param]),param=params.pop()}});for(var key in declared)is_own(declared,key)&&!is_own(global,key)&&warnUnused(key,declared[key])}catch(e){if(e){var nt=nexttoken||{};JSHINT.errors.push({raw:e.raw,reason:e.message,line:e.line||nt.line,character:e.character||nt.from},null)}}if(\"(main)\"===JSHINT.scope)for(o=o||{},i=0;JSHINT.internals.length>i;i+=1)k=JSHINT.internals[i],o.scope=k.elem,itself(k.value,o,g);return 0===JSHINT.errors.length};return itself.data=function(){var fu,f,i,j,n,globals,data={functions:[],options:option},implieds=[],members=[];itself.errors.length&&(data.errors=itself.errors),jsonmode&&(data.json=!0);for(n in implied)is_own(implied,n)&&implieds.push({name:n,line:implied[n]});for(implieds.length>0&&(data.implieds=implieds),urls.length>0&&(data.urls=urls),globals=Object.keys(scope),globals.length>0&&(data.globals=globals),i=1;functions.length>i;i+=1){for(f=functions[i],fu={},j=0;functionicity.length>j;j+=1)fu[functionicity[j]]=[];for(j=0;functionicity.length>j;j+=1)0===fu[functionicity[j]].length&&delete fu[functionicity[j]];fu.name=f[\"(name)\"],fu.param=f[\"(params)\"],fu.line=f[\"(line)\"],fu.character=f[\"(character)\"],fu.last=f[\"(last)\"],fu.lastcharacter=f[\"(lastcharacter)\"],data.functions.push(fu)}unuseds.length>0&&(data.unused=unuseds),members=[];for(n in member)if(\"number\"==typeof member[n]){data.member=member;break}return data},itself.jshint=itself,itself}();\"object\"==typeof exports&&exports&&(exports.JSHINT=JSHINT)});'\n})()},{}],23:[function(){\"use strict\";Function.prototype.bind||(Function.prototype.bind=function(this_){if(\"function\"!=typeof this)throw new TypeError(\"Function.prototype.bind - what is trying to be bound is not callable\");var args=Array.prototype.slice.call(arguments,1),fn=this,Noop=function(){},fnbound=function(){return fn.apply(this instanceof Noop&&this_?this:this_,args.concat(Array.prototype.slice.call(arguments)))};return Noop.prototype=this.prototype,fnbound.prototype=new Noop,fnbound})},{}],21:[function(require,module){\"use strict\";function scroll(elem){elem&&(elem.scrollTop=elem.scrollHeight)}var Terminal=require(\"./term\"),through=require(\"through\");module.exports=function(opts){var term=new Terminal(opts);term.open();var hypernal=through(term.write.bind(term));return hypernal.appendTo=function(elem){\"string\"==typeof elem&&(elem=document.querySelector(elem)),elem.appendChild(term.element),elem.setAttribute(\"style\",\"overflow-y : auto;\"),hypernal.container=elem,term.element.style.position=\"relative\"},hypernal.writeln=function(line){term.writeln(line),hypernal.tail&&scroll(hypernal.container)},hypernal.write=function(data){term.write(data),hypernal.tail&&scroll(hypernal.container)},hypernal.reset=term.reset.bind(term),hypernal.element=term.element,hypernal.term=term,hypernal}},{\"./term\":24,through:25}],22:[function(require,module){(function(process){\"use strict\";function highlightLines(script){return highlight(script,{linenos:!0}).split(\"\\n\")}require(\"./lib/shim-bind\");var highlight=require(\"cardinal\").highlight,snippetify=require(\"snippetify\"),evalSnippets=require(\"./lib/eval-snippets\"),resolveTales=require(\"./lib/resolve-tales\");process.browser,module.exports=function(script,scriptPath,opts){opts=opts||{};var toLines=opts.toLines||highlightLines,writeln=opts.writeln||(process.browser===!0?function(){}:console.log.bind(console)),snippets=snippetify(script,{nonstrict:!0});evalSnippets(snippets,scriptPath,opts.diff);var tales=resolveTales(snippets,opts),lines=toLines(script),offset=0;return tales.forEach(function(x){x.tale.length&&lines.splice(x.insertAfter+offset++,0,x.tale)}),lines=lines.filter(function(x){return x.length}),lines.forEach(function(line){writeln(line)}),lines}})(require(\"__browserify_process\"))},{\"./lib/shim-bind\":23,\"./lib/eval-snippets\":26,\"./lib/resolve-tales\":27,cardinal:28,snippetify:29,__browserify_process:16}],20:[function(require,module){(function(){(function(){function exportAce(ns){var acequire=function(module,callback){return _acequire(\"\",module,callback)},root=global;ns&&(global[ns]||(global[ns]={}),root=global[ns]),root.define&&root.define.packaged||(_define.original=root.define,root.define=_define,root.define.packaged=!0),root.acequire&&root.acequire.packaged||(_acequire.original=root.acequire,root.acequire=acequire,root.acequire.packaged=!0)}var ACE_NAMESPACE=\"ace\",global=function(){return this}();if(ACE_NAMESPACE||\"undefined\"==typeof acequirejs){var _define=function(module,deps,payload){return\"string\"!=typeof module?(_define.original?_define.original.apply(window,arguments):(console.error(\"dropping module because define wasn't a string.\"),console.trace()),void 0):(2==arguments.length&&(payload=deps),_define.modules||(_define.modules={}),_define.modules[module]=payload,void 0)},_acequire=function(parentId,module,callback){if(\"[object Array]\"===Object.prototype.toString.call(module)){for(var params=[],i=0,l=module.length;l>i;++i){var dep=lookup(parentId,module[i]);if(!dep&&_acequire.original)return _acequire.original.apply(window,arguments);params.push(dep)}callback&&callback.apply(null,params)}else{if(\"string\"==typeof module){var payload=lookup(parentId,module);return!payload&&_acequire.original?_acequire.original.apply(window,arguments):(callback&&callback(),payload)}if(_acequire.original)return _acequire.original.apply(window,arguments)}},normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return normalizeModule(parentId,chunks[0])+\"!\"+normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=base+\"/\"+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},lookup=function(parentId,moduleName){moduleName=normalizeModule(parentId,moduleName);var module=_define.modules[moduleName];if(!module)return null;if(\"function\"==typeof module){var exports={},mod={id:moduleName,uri:\"\",exports:exports,packaged:!0},req=function(module,callback){return _acequire(moduleName,module,callback)},returnValue=module(req,exports,mod);return exports=returnValue||mod.exports,_define.modules[moduleName]=exports,exports}return module};exportAce(ACE_NAMESPACE)}})(),ace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/multi_select\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/config\"],function(acequire,exports){acequire(\"./lib/fixoldbrowsers\");var dom=acequire(\"./lib/dom\"),event=acequire(\"./lib/event\"),Editor=acequire(\"./editor\").Editor,EditSession=acequire(\"./edit_session\").EditSession,UndoManager=acequire(\"./undomanager\").UndoManager,Renderer=acequire(\"./virtual_renderer\").VirtualRenderer,MultiSelect=acequire(\"./multi_select\").MultiSelect;acequire(\"./worker/worker_client\"),acequire(\"./keyboard/hash_handler\"),acequire(\"./placeholder\"),acequire(\"./mode/folding/fold_mode\"),acequire(\"./theme/textmate\"),exports.config=acequire(\"./config\"),exports.acequire=acequire,exports.edit=function(el){if(\"string\"==typeof el){var _id=el,el=document.getElementById(_id);if(!el)throw\"ace.edit can't find div #\"+_id}if(el.env&&el.env.editor instanceof Editor)return el.env.editor;var doc=exports.createEditSession(dom.getInnerText(el));el.innerHTML=\"\";var editor=new Editor(new Renderer(el));new MultiSelect(editor),editor.setSession(doc);var env={document:doc,editor:editor,onResize:editor.resize.bind(editor,null)};return event.addListener(window,\"resize\",env.onResize),editor.on(\"destroy\",function(){event.removeListener(window,\"resize\",env.onResize)}),el.env=editor.env=env,editor},exports.createEditSession=function(text){var doc=new EditSession(text,doc);return doc.setUndoManager(new UndoManager),doc},exports.EditSession=EditSession,exports.UndoManager=UndoManager}),ace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(acequire){acequire(\"./regexp\"),acequire(\"./es5-shim\")}),ace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(){function getNativeFlags(regex){return(regex.global?\"g\":\"\")+(regex.ignoreCase?\"i\":\"\")+(regex.multiline?\"m\":\"\")+(regex.extended?\"x\":\"\")+(regex.sticky?\"y\":\"\")}function indexOf(array,item,from){if(Array.prototype.indexOf)return array.indexOf(item,from);for(var i=from||0;array.length>i;i++)if(array[i]===item)return i;return-1}var real={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},compliantExecNpcg=void 0===real.exec.call(/()??/,\"\")[1],compliantLastIndexIncrement=function(){var x=/^/g;return real.test.call(x,\"\"),!x.lastIndex}();compliantLastIndexIncrement&&compliantExecNpcg||(RegExp.prototype.exec=function(str){var name,r2,match=real.exec.apply(this,arguments);if(\"string\"==typeof str&&match){if(!compliantExecNpcg&&match.length>1&&indexOf(match,\"\")>-1&&(r2=RegExp(this.source,real.replace.call(getNativeFlags(this),\"g\",\"\")),real.replace.call(str.slice(match.index),r2,function(){for(var i=1;arguments.length-2>i;i++)void 0===arguments[i]&&(match[i]=void 0)})),this._xregexp&&this._xregexp.captureNames)for(var i=1;match.length>i;i++)name=this._xregexp.captureNames[i-1],name&&(match[name]=match[i]);!compliantLastIndexIncrement&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--}return match},compliantLastIndexIncrement||(RegExp.prototype.test=function(str){var match=real.exec.call(this,str);return match&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--,!!match}))}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}}),ace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"],function(acequire,exports){if(\"undefined\"!=typeof document){var XHTML_NS=\"http://www.w3.org/1999/xhtml\";exports.getDocumentHead=function(doc){return doc||(doc=document),doc.head||doc.getElementsByTagName(\"head\")[0]||doc.documentElement},exports.createElement=function(tag,ns){return document.createElementNS?document.createElementNS(ns||XHTML_NS,tag):document.createElement(tag)},exports.hasCssClass=function(el,name){var classes=el.className.split(/\\s+/g);return-1!==classes.indexOf(name)},exports.addCssClass=function(el,name){exports.hasCssClass(el,name)||(el.className+=\" \"+name)},exports.removeCssClass=function(el,name){for(var classes=el.className.split(/\\s+/g);;){var index=classes.indexOf(name);if(-1==index)break;classes.splice(index,1)}el.className=classes.join(\" \")},exports.toggleCssClass=function(el,name){for(var classes=el.className.split(/\\s+/g),add=!0;;){var index=classes.indexOf(name);if(-1==index)break;add=!1,classes.splice(index,1)}return add&&classes.push(name),el.className=classes.join(\" \"),add},exports.setCssClass=function(node,className,include){include?exports.addCssClass(node,className):exports.removeCssClass(node,className)},exports.hasCssString=function(id,doc){var sheets,index=0;if(doc=doc||document,doc.createStyleSheet&&(sheets=doc.styleSheets)){for(;sheets.length>index;)if(sheets[index++].owningElement.id===id)return!0}else if(sheets=doc.getElementsByTagName(\"style\"))for(;sheets.length>index;)if(sheets[index++].id===id)return!0;return!1},exports.importCssString=function(cssText,id,doc){if(doc=doc||document,id&&exports.hasCssString(id,doc))return null;var style;doc.createStyleSheet?(style=doc.createStyleSheet(),style.cssText=cssText,id&&(style.owningElement.id=id)):(style=doc.createElementNS?doc.createElementNS(XHTML_NS,\"style\"):doc.createElement(\"style\"),style.appendChild(doc.createTextNode(cssText)),id&&(style.id=id),exports.getDocumentHead(doc).appendChild(style))},exports.importCssStylsheet=function(uri,doc){if(doc.createStyleSheet)doc.createStyleSheet(uri);else{var link=exports.createElement(\"link\");link.rel=\"stylesheet\",link.href=uri,exports.getDocumentHead(doc).appendChild(link)}},exports.getInnerWidth=function(element){return parseInt(exports.computedStyle(element,\"paddingLeft\"),10)+parseInt(exports.computedStyle(element,\"paddingRight\"),10)+element.clientWidth},exports.getInnerHeight=function(element){return parseInt(exports.computedStyle(element,\"paddingTop\"),10)+parseInt(exports.computedStyle(element,\"paddingBottom\"),10)+element.clientHeight},void 0!==window.pageYOffset?(exports.getPageScrollTop=function(){return window.pageYOffset},exports.getPageScrollLeft=function(){return window.pageXOffset}):(exports.getPageScrollTop=function(){return document.body.scrollTop},exports.getPageScrollLeft=function(){return document.body.scrollLeft}),exports.computedStyle=window.getComputedStyle?function(element,style){return style?(window.getComputedStyle(element,\"\")||{})[style]||\"\":window.getComputedStyle(element,\"\")||{}}:function(element,style){return style?element.currentStyle[style]:element.currentStyle},exports.scrollbarWidth=function(document){var inner=exports.createElement(\"ace_inner\");inner.style.width=\"100%\",inner.style.minWidth=\"0px\",inner.style.height=\"200px\",inner.style.display=\"block\";var outer=exports.createElement(\"ace_outer\"),style=outer.style;style.position=\"absolute\",style.left=\"-10000px\",style.overflow=\"hidden\",style.width=\"200px\",style.minWidth=\"0px\",style.height=\"150px\",style.display=\"block\",outer.appendChild(inner);var body=document.documentElement;body.appendChild(outer);var noScrollbar=inner.offsetWidth;style.overflow=\"scroll\";var withScrollbar=inner.offsetWidth;return noScrollbar==withScrollbar&&(withScrollbar=outer.clientWidth),body.removeChild(outer),noScrollbar-withScrollbar},exports.setInnerHtml=function(el,innerHtml){var element=el.cloneNode(!1);return element.innerHTML=innerHtml,el.parentNode.replaceChild(element,el),element},\"textContent\"in document.documentElement?(exports.setInnerText=function(el,innerText){el.textContent=innerText},exports.getInnerText=function(el){return el.textContent}):(exports.setInnerText=function(el,innerText){el.innerText=innerText},exports.getInnerText=function(el){return el.innerText}),exports.getParentWindow=function(document){return document.defaultView||document.parentWindow}}}),ace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\",\"ace/lib/dom\"],function(acequire,exports){function normalizeCommandKeys(callback,e,keyCode){var hashId=0;if(hashId=!useragent.isOpera||\"KeyboardEvent\"in window||!useragent.isMac?0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0):0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0),keyCode in keys.MODIFIER_KEYS){switch(keys.MODIFIER_KEYS[keyCode]){case\"Alt\":hashId=2;break;case\"Shift\":hashId=4;break;case\"Ctrl\":hashId=1;break;default:hashId=8}keyCode=0}return 8&hashId&&(91==keyCode||93==keyCode)&&(keyCode=0),hashId||keyCode in keys.FUNCTION_KEYS||keyCode in keys.PRINTABLE_KEYS?callback(e,hashId,keyCode):!1}var keys=acequire(\"./keys\"),useragent=acequire(\"./useragent\");if(acequire(\"./dom\"),exports.addListener=function(elem,type,callback){if(elem.addEventListener)return elem.addEventListener(type,callback,!1);if(elem.attachEvent){var wrapper=function(){callback(window.event)};callback._wrapper=wrapper,elem.attachEvent(\"on\"+type,wrapper)}},exports.removeListener=function(elem,type,callback){return elem.removeEventListener?elem.removeEventListener(type,callback,!1):(elem.detachEvent&&elem.detachEvent(\"on\"+type,callback._wrapper||callback),void 0)},exports.stopEvent=function(e){return exports.stopPropagation(e),exports.preventDefault(e),!1},exports.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},exports.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},exports.getButton=function(e){return\"dblclick\"==e.type?0:\"contextmenu\"==e.type||e.ctrlKey&&useragent.isMac?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},exports.capture=document.documentElement.setCapture?function(el,eventHandler,releaseCaptureHandler){function onReleaseCapture(e){eventHandler(e),called||(called=!0,releaseCaptureHandler(e)),exports.removeListener(el,\"mousemove\",eventHandler),exports.removeListener(el,\"mouseup\",onReleaseCapture),exports.removeListener(el,\"losecapture\",onReleaseCapture),el.releaseCapture()}var called=!1;exports.addListener(el,\"mousemove\",eventHandler),exports.addListener(el,\"mouseup\",onReleaseCapture),exports.addListener(el,\"losecapture\",onReleaseCapture),el.setCapture()}:function(el,eventHandler,releaseCaptureHandler){function onMouseUp(e){eventHandler&&eventHandler(e),releaseCaptureHandler&&releaseCaptureHandler(e),document.removeEventListener(\"mousemove\",eventHandler,!0),document.removeEventListener(\"mouseup\",onMouseUp,!0),e.stopPropagation()}document.addEventListener(\"mousemove\",eventHandler,!0),document.addEventListener(\"mouseup\",onMouseUp,!0)},exports.addMouseWheelListener=function(el,callback){var factor=8,listener=function(e){void 0!==e.wheelDelta?void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/factor,e.wheelY=-e.wheelDeltaY/factor):(e.wheelX=0,e.wheelY=-e.wheelDelta/factor):e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),callback(e)};exports.addListener(el,\"DOMMouseScroll\",listener),exports.addListener(el,\"mousewheel\",listener)},exports.addMultiMouseDownListener=function(el,timeouts,eventHandler,callbackName){var startX,startY,timer,clicks=0,eventNames={2:\"dblclick\",3:\"tripleclick\",4:\"quadclick\"};exports.addListener(el,\"mousedown\",function(e){if(0!=exports.getButton(e))clicks=0;else{var isNewClick=Math.abs(e.clientX-startX)>5||Math.abs(e.clientY-startY)>5;(!timer||isNewClick)&&(clicks=0),clicks+=1,timer&&clearTimeout(timer),timer=setTimeout(function(){timer=null},timeouts[clicks-1]||600)}if(1==clicks&&(startX=e.clientX,startY=e.clientY),eventHandler[callbackName](\"mousedown\",e),clicks>4)clicks=0;else if(clicks>1)return eventHandler[callbackName](eventNames[clicks],e)}),useragent.isOldIE&&exports.addListener(el,\"dblclick\",function(e){clicks=2,timer&&clearTimeout(timer),timer=setTimeout(function(){timer=null},timeouts[clicks-1]||600),eventHandler[callbackName](\"mousedown\",e),eventHandler[callbackName](eventNames[clicks],e)})},exports.addCommandKeyListener=function(el,callback){var addListener=exports.addListener;if(useragent.isOldGecko||useragent.isOpera&&!(\"KeyboardEvent\"in window)){var lastKeyDownKeyCode=null;addListener(el,\"keydown\",function(e){lastKeyDownKeyCode=e.keyCode}),addListener(el,\"keypress\",function(e){return normalizeCommandKeys(callback,e,lastKeyDownKeyCode)})}else{var lastDown=null;addListener(el,\"keydown\",function(e){return lastDown=e.keyIdentifier||e.keyCode,normalizeCommandKeys(callback,e,e.keyCode)})}},window.postMessage&&!useragent.isOldIE){var postMessageId=1;exports.nextTick=function(callback,win){win=win||window;var messageName=\"zero-timeout-message-\"+postMessageId;exports.addListener(win,\"message\",function listener(e){e.data==messageName&&(exports.stopPropagation(e),exports.removeListener(win,\"message\",listener),callback())}),win.postMessage(messageName,\"*\")}}exports.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,exports.nextFrame=exports.nextFrame?exports.nextFrame.bind(window):function(callback){setTimeout(callback,17)}}),ace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"],function(acequire,exports){var oop=acequire(\"./oop\"),Keys=function(){var ret={MODIFIER_KEYS:{16:\"Shift\",17:\"Ctrl\",18:\"Alt\",224:\"Meta\"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:\"Backspace\",9:\"Tab\",13:\"Return\",19:\"Pause\",27:\"Esc\",32:\"Space\",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"Left\",38:\"Up\",39:\"Right\",40:\"Down\",44:\"Print\",45:\"Insert\",46:\"Delete\",96:\"Numpad0\",97:\"Numpad1\",98:\"Numpad2\",99:\"Numpad3\",100:\"Numpad4\",101:\"Numpad5\",102:\"Numpad6\",103:\"Numpad7\",104:\"Numpad8\",105:\"Numpad9\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"Numlock\",145:\"Scrolllock\"},PRINTABLE_KEYS:{32:\" \",48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",59:\";\",61:\"=\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",107:\"+\",109:\"-\",110:\".\",188:\",\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\"}};for(var i in ret.FUNCTION_KEYS){var name=ret.FUNCTION_KEYS[i].toLowerCase();ret[name]=parseInt(i,10)}return oop.mixin(ret,ret.MODIFIER_KEYS),oop.mixin(ret,ret.PRINTABLE_KEYS),oop.mixin(ret,ret.FUNCTION_KEYS),ret.enter=ret[\"return\"],ret.escape=ret.esc,ret.del=ret[\"delete\"],ret[173]=\"-\",ret}();oop.mixin(exports,Keys),exports.keyCodeToString=function(keyCode){return(Keys[keyCode]||String.fromCharCode(keyCode)).toLowerCase()}}),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.inherits=function(){var tempCtor=function(){};\nreturn function(ctor,superCtor){tempCtor.prototype=superCtor.prototype,ctor.super_=superCtor.prototype,ctor.prototype=new tempCtor,ctor.prototype.constructor=ctor}}(),exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"],function(acequire,exports){if(exports.OS={LINUX:\"LINUX\",MAC:\"MAC\",WINDOWS:\"WINDOWS\"},exports.getOS=function(){return exports.isMac?exports.OS.MAC:exports.isLinux?exports.OS.LINUX:exports.OS.WINDOWS},\"object\"==typeof navigator){var os=(navigator.platform.match(/mac|win|linux/i)||[\"other\"])[0].toLowerCase(),ua=navigator.userAgent;exports.isWin=\"win\"==os,exports.isMac=\"mac\"==os,exports.isLinux=\"linux\"==os,exports.isIE=(\"Microsoft Internet Explorer\"==navigator.appName||navigator.appName.indexOf(\"MSAppHost\")>=0)&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\\.0-9]+)/)[1]),exports.isOldIE=exports.isIE&&9>exports.isIE,exports.isGecko=exports.isMozilla=window.controllers&&\"Gecko\"===window.navigator.product,exports.isOldGecko=exports.isGecko&&4>parseInt((navigator.userAgent.match(/rv\\:(\\d+)/)||[])[1],10),exports.isOpera=window.opera&&\"[object Opera]\"==Object.prototype.toString.call(window.opera),exports.isWebKit=parseFloat(ua.split(\"WebKit/\")[1])||void 0,exports.isChrome=parseFloat(ua.split(\" Chrome/\")[1])||void 0,exports.isAIR=ua.indexOf(\"AdobeAIR\")>=0,exports.isIPad=ua.indexOf(\"iPad\")>=0,exports.isTouchPad=ua.indexOf(\"TouchPad\")>=0}}),ace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\"],function(acequire,exports){acequire(\"./lib/fixoldbrowsers\");var oop=acequire(\"./lib/oop\"),lang=acequire(\"./lib/lang\"),useragent=acequire(\"./lib/useragent\"),TextInput=acequire(\"./keyboard/textinput\").TextInput,MouseHandler=acequire(\"./mouse/mouse_handler\").MouseHandler,FoldHandler=acequire(\"./mouse/fold_handler\").FoldHandler,KeyBinding=acequire(\"./keyboard/keybinding\").KeyBinding,EditSession=acequire(\"./edit_session\").EditSession,Search=acequire(\"./search\").Search,Range=acequire(\"./range\").Range,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,CommandManager=acequire(\"./commands/command_manager\").CommandManager,defaultCommands=acequire(\"./commands/default_commands\").commands,config=acequire(\"./config\"),Editor=function(renderer,session){var container=renderer.getContainerElement();this.container=container,this.renderer=renderer,this.commands=new CommandManager(useragent.isMac?\"mac\":\"win\",defaultCommands),this.textInput=new TextInput(renderer.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new KeyBinding(this),this.$mouseHandler=new MouseHandler(this),new FoldHandler(this),this.$blockScrolling=0,this.$search=(new Search).set({wrap:!0}),this.setSession(session||new EditSession(\"\")),config.resetOptions(this),config._emit(\"editor\",this)};(function(){oop.implement(this,EventEmitter),this.setKeyboardHandler=function(keyboardHandler){if(keyboardHandler)if(\"string\"==typeof keyboardHandler){this.$keybindingId=keyboardHandler;var _self=this;config.loadModule([\"keybinding\",keyboardHandler],function(module){_self.$keybindingId==keyboardHandler&&_self.keyBinding.setKeyboardHandler(module&&module.handler)})}else delete this.$keybindingId,this.keyBinding.setKeyboardHandler(keyboardHandler);else this.keyBinding.setKeyboardHandler(null)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(session){if(this.session!=session){if(this.session){var oldSession=this.session;this.session.removeEventListener(\"change\",this.$onDocumentChange),this.session.removeEventListener(\"changeMode\",this.$onChangeMode),this.session.removeEventListener(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.session.removeEventListener(\"changeTabSize\",this.$onChangeTabSize),this.session.removeEventListener(\"changeWrapLimit\",this.$onChangeWrapLimit),this.session.removeEventListener(\"changeWrapMode\",this.$onChangeWrapMode),this.session.removeEventListener(\"onChangeFold\",this.$onChangeFold),this.session.removeEventListener(\"changeFrontMarker\",this.$onChangeFrontMarker),this.session.removeEventListener(\"changeBackMarker\",this.$onChangeBackMarker),this.session.removeEventListener(\"changeBreakpoint\",this.$onChangeBreakpoint),this.session.removeEventListener(\"changeAnnotation\",this.$onChangeAnnotation),this.session.removeEventListener(\"changeOverwrite\",this.$onCursorChange),this.session.removeEventListener(\"changeScrollTop\",this.$onScrollTopChange),this.session.removeEventListener(\"changeScrollLeft\",this.$onScrollLeftChange);var selection=this.session.getSelection();selection.removeEventListener(\"changeCursor\",this.$onCursorChange),selection.removeEventListener(\"changeSelection\",this.$onSelectionChange)}this.session=session,this.$onDocumentChange=this.onDocumentChange.bind(this),session.addEventListener(\"change\",this.$onDocumentChange),this.renderer.setSession(session),this.$onChangeMode=this.onChangeMode.bind(this),session.addEventListener(\"changeMode\",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),session.addEventListener(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),session.addEventListener(\"changeTabSize\",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),session.addEventListener(\"changeWrapLimit\",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),session.addEventListener(\"changeWrapMode\",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),session.addEventListener(\"changeFold\",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener(\"changeFrontMarker\",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener(\"changeBackMarker\",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener(\"changeBreakpoint\",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener(\"changeAnnotation\",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener(\"changeOverwrite\",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener(\"changeScrollTop\",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener(\"changeScrollLeft\",this.$onScrollLeftChange),this.selection=session.getSelection(),this.selection.addEventListener(\"changeCursor\",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener(\"changeSelection\",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull(),this._emit(\"changeSession\",{session:session,oldSession:oldSession})}},this.getSession=function(){return this.session},this.setValue=function(val,cursorPos){return this.session.doc.setValue(val),cursorPos?1==cursorPos?this.navigateFileEnd():-1==cursorPos&&this.navigateFileStart():this.selectAll(),val},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(force){this.renderer.onResize(force)},this.setTheme=function(theme){this.renderer.setTheme(theme)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(style){this.renderer.setStyle(style)},this.unsetStyle=function(style){this.renderer.unsetStyle(style)},this.setFontSize=function(size){this.setOption(\"fontSize\",size)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var self=this;this.$highlightPending=!0,setTimeout(function(){self.$highlightPending=!1;var pos=self.session.findMatchingBracket(self.getCursorPosition());if(pos)var range=new Range(pos.row,pos.column,pos.row,pos.column+1);else if(self.session.$mode.getMatching)var range=self.session.$mode.getMatching(self.session);range&&(self.session.$bracketHighlight=self.session.addMarker(range,\"ace_bracket\",\"text\"))},50)}},this.focus=function(){var _self=this;setTimeout(function(){_self.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit(\"focus\"))},this.onBlur=function(){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit(\"blur\"))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var lastRow,delta=e.data,range=delta.range;lastRow=range.start.row==range.end.row&&\"insertLines\"!=delta.action&&\"removeLines\"!=delta.action?range.end.row:1/0,this.renderer.updateLines(range.start.row,lastRow),this._emit(\"change\",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var rows=e.data;this.renderer.updateLines(rows.first,rows.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit(\"changeSelection\")},this.$updateHighlightActiveLine=function(){var highlight,session=this.getSession();if(this.$highlightActiveLine&&(\"line\"==this.$selectionStyle&&this.selection.isMultiLine()||(highlight=this.getCursorPosition())),session.$highlightLineMarker&&!highlight)session.removeMarker(session.$highlightLineMarker.id),session.$highlightLineMarker=null;else if(!session.$highlightLineMarker&&highlight){var range=new Range(highlight.row,highlight.column,highlight.row,1/0);range.id=session.addMarker(range,\"ace_active-line\",\"screenLine\"),session.$highlightLineMarker=range}else highlight&&(session.$highlightLineMarker.start.row=highlight.row,session.$highlightLineMarker.end.row=highlight.row,session.$highlightLineMarker.start.column=highlight.column,session._emit(\"changeBackMarker\"))},this.onSelectionChange=function(){var session=this.session;if(session.$selectionMarker&&session.removeMarker(session.$selectionMarker),session.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var range=this.selection.getRange(),style=this.getSelectionStyle();session.$selectionMarker=session.addMarker(range,\"ace_selection\",style)}var re=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(re),this._emit(\"changeSelection\")},this.$getSelectionHighLightRegexp=function(){var session=this.session,selection=this.getSelectionRange();if(!selection.isEmpty()&&!selection.isMultiLine()){var startOuter=selection.start.column-1,endOuter=selection.end.column+1,line=session.getLine(selection.start.row),lineCols=line.length,needle=line.substring(Math.max(startOuter,0),Math.min(endOuter,lineCols));if(!(startOuter>=0&&/^[\\w\\d]/.test(needle)||lineCols>=endOuter&&/[\\w\\d]$/.test(needle))&&(needle=line.substring(selection.start.column,selection.end.column),/^[\\w\\d]+$/.test(needle))){var re=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:needle});return re}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit(\"changeMode\",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getCopyText=function(){var text=\"\";return this.selection.isEmpty()||(text=this.session.getTextRange(this.getSelectionRange())),this._emit(\"copy\",text),text},this.onCopy=function(){this.commands.exec(\"copy\",this)},this.onCut=function(){this.commands.exec(\"cut\",this)},this.onPaste=function(text){this.$readOnly||(this._emit(\"paste\",text),this.insert(text))},this.execCommand=function(command,args){this.commands.exec(command,this,args)},this.insert=function(text){var session=this.session,mode=session.getMode(),cursor=this.getCursorPosition();if(this.getBehavioursEnabled()){var transform=mode.transformAction(session.getState(cursor.row),\"insertion\",this,session,text);transform&&(text=transform.text)}if(text=text.replace(\"\t\",this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var range=new Range.fromPoints(cursor,cursor);range.end.column+=text.length,this.session.remove(range)}}else cursor=this.session.remove(this.getSelectionRange()),this.clearSelection();this.clearSelection();var start=cursor.column,lineState=session.getState(cursor.row),line=session.getLine(cursor.row),shouldOutdent=mode.checkOutdent(lineState,line,text),end=session.insert(cursor,text);if(transform&&transform.selection&&(2==transform.selection.length?this.selection.setSelectionRange(new Range(cursor.row,start+transform.selection[0],cursor.row,start+transform.selection[1])):this.selection.setSelectionRange(new Range(cursor.row+transform.selection[0],transform.selection[1],cursor.row+transform.selection[2],transform.selection[3]))),session.getDocument().isNewLine(text)){var lineIndent=mode.getNextLineIndent(lineState,line.slice(0,cursor.column),session.getTabString());this.moveCursorTo(cursor.row+1,0);for(var size=session.getTabSize(),minIndent=Number.MAX_VALUE,row=cursor.row+1;end.row>=row;++row){var indent=0;line=session.getLine(row);for(var i=0;line.length>i;++i)if(\"\t\"==line.charAt(i))indent+=size;else{if(\" \"!=line.charAt(i))break;indent+=1}/[^\\s]/.test(line)&&(minIndent=Math.min(indent,minIndent))}for(var row=cursor.row+1;end.row>=row;++row){var outdent=minIndent;line=session.getLine(row);for(var i=0;line.length>i&&outdent>0;++i)\"\t\"==line.charAt(i)?outdent-=size:\" \"==line.charAt(i)&&(outdent-=1);session.remove(new Range(row,0,row,i))}session.indentRows(cursor.row+1,end.row,lineIndent)}shouldOutdent&&mode.autoOutdent(lineState,session,cursor.row)},this.onTextInput=function(text){this.keyBinding.onTextInput(text)},this.onCommandKey=function(e,hashId,keyCode){this.keyBinding.onCommandKey(e,hashId,keyCode)},this.setOverwrite=function(overwrite){this.session.setOverwrite(overwrite)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(speed){this.setOption(\"scrollSpeed\",speed)},this.getScrollSpeed=function(){return this.getOption(\"scrollSpeed\")},this.setDragDelay=function(dragDelay){this.setOption(\"dragDelay\",dragDelay)},this.getDragDelay=function(){return this.getOption(\"dragDelay\")},this.setSelectionStyle=function(val){this.setOption(\"selectionStyle\",val)},this.getSelectionStyle=function(){return this.getOption(\"selectionStyle\")},this.setHighlightActiveLine=function(shouldHighlight){this.setOption(\"highlightActiveLine\",shouldHighlight)},this.getHighlightActiveLine=function(){return this.getOption(\"highlightActiveLine\")},this.setHighlightGutterLine=function(shouldHighlight){this.setOption(\"highlightGutterLine\",shouldHighlight)},this.getHighlightGutterLine=function(){return this.getOption(\"highlightGutterLine\")},this.setHighlightSelectedWord=function(shouldHighlight){this.setOption(\"highlightSelectedWord\",shouldHighlight)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(shouldAnimate){this.renderer.setAnimatedScroll(shouldAnimate)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(showInvisibles){this.renderer.setShowInvisibles(showInvisibles)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(display){this.renderer.setDisplayIndentGuides(display)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(showPrintMargin){this.renderer.setShowPrintMargin(showPrintMargin)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(showPrintMargin){this.renderer.setPrintMarginColumn(showPrintMargin)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(readOnly){this.setOption(\"readOnly\",readOnly)},this.getReadOnly=function(){return this.getOption(\"readOnly\")},this.setBehavioursEnabled=function(enabled){this.setOption(\"behavioursEnabled\",enabled)},this.getBehavioursEnabled=function(){return this.getOption(\"behavioursEnabled\")},this.setWrapBehavioursEnabled=function(enabled){this.setOption(\"wrapBehavioursEnabled\",enabled)},this.getWrapBehavioursEnabled=function(){return this.getOption(\"wrapBehavioursEnabled\")},this.setShowFoldWidgets=function(show){this.setOption(\"showFoldWidgets\",show)},this.getShowFoldWidgets=function(){return this.getOption(\"showFoldWidgets\")},this.setFadeFoldWidgets=function(fade){this.setOption(\"fadeFoldWidgets\",fade)},this.getFadeFoldWidgets=function(){return this.getOption(\"fadeFoldWidgets\")},this.remove=function(dir){this.selection.isEmpty()&&(\"left\"==dir?this.selection.selectLeft():this.selection.selectRight());var range=this.getSelectionRange();if(this.getBehavioursEnabled()){var session=this.session,state=session.getState(range.start.row),new_range=session.getMode().transformAction(state,\"deletion\",this,session,range);new_range&&(range=new_range)}this.session.remove(range),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var range=this.getSelectionRange();range.start.column==range.end.column&&range.start.row==range.end.row&&(range.end.column=0,range.end.row++),this.session.remove(range),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var cursor=this.getCursorPosition();this.insert(\"\\n\"),this.moveCursorToPosition(cursor)},this.transposeLetters=function(){if(this.selection.isEmpty()){var cursor=this.getCursorPosition(),column=cursor.column;if(0!==column){var swap,range,line=this.session.getLine(cursor.row);line.length>column?(swap=line.charAt(column)+line.charAt(column-1),range=new Range(cursor.row,column-1,cursor.row,column+1)):(swap=line.charAt(column-1)+line.charAt(column-2),range=new Range(cursor.row,column-2,cursor.row,column)),this.session.replace(range,swap)}}},this.toLowerCase=function(){var originalRange=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var range=this.getSelectionRange(),text=this.session.getTextRange(range);this.session.replace(range,text.toLowerCase()),this.selection.setSelectionRange(originalRange)},this.toUpperCase=function(){var originalRange=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var range=this.getSelectionRange(),text=this.session.getTextRange(range);this.session.replace(range,text.toUpperCase()),this.selection.setSelectionRange(originalRange)},this.indent=function(){var session=this.session,range=this.getSelectionRange();if(!(range.start.row\u003Crange.end.row||range.start.column\u003Crange.end.column)){var indentString;if(this.session.getUseSoftTabs()){var size=session.getTabSize(),position=this.getCursorPosition(),column=session.documentToScreenColumn(position.row,position.column),count=size-column%size;indentString=lang.stringRepeat(\" \",count)}else indentString=\"\t\";return this.insert(indentString)}var rows=this.$getSelectedRows();session.indentRows(rows.first,rows.last,\"\t\")},this.blockIndent=function(){var rows=this.$getSelectedRows();this.session.indentRows(rows.first,rows.last,\"\t\")},this.blockOutdent=function(){var selection=this.session.getSelection();this.session.outdentRows(selection.getRange())},this.sortLines=function(){var rows=this.$getSelectedRows(),session=this.session,lines=[];for(i=rows.first;rows.last>=i;i++)lines.push(session.getLine(i));lines.sort(function(a,b){return a.toLowerCase()\u003Cb.toLowerCase()?-1:a.toLowerCase()>b.toLowerCase()?1:0});for(var deleteRange=new Range(0,0,0,0),i=rows.first;rows.last>=i;i++){var line=session.getLine(i);deleteRange.start.row=i,deleteRange.end.row=i,deleteRange.end.column=line.length,session.replace(deleteRange,lines[i-rows.first])}},this.toggleCommentLines=function(){var state=this.session.getState(this.getCursorPosition().row),rows=this.$getSelectedRows();this.session.getMode().toggleCommentLines(state,this.session,rows.first,rows.last)},this.getNumberAt=function(row,column){var _numberRx=/[\\-]?[0-9]+(?:\\.[0-9]+)?/g;_numberRx.lastIndex=0;for(var s=this.session.getLine(row);column>_numberRx.lastIndex;){var m=_numberRx.exec(s);if(column>=m.index&&m.index+m[0].length>=column){var number={value:m[0],start:m.index,end:m.index+m[0].length};return number}}return null},this.modifyNumber=function(amount){var row=this.selection.getCursor().row,column=this.selection.getCursor().column,charRange=new Range(row,column-1,row,column),c=this.session.getTextRange(charRange);if(!isNaN(parseFloat(c))&&isFinite(c)){var nr=this.getNumberAt(row,column);if(nr){var fp=nr.value.indexOf(\".\")>=0?nr.start+nr.value.indexOf(\".\")+1:nr.end,decimals=nr.start+nr.value.length-fp,t=parseFloat(nr.value);t*=Math.pow(10,decimals),amount*=fp!==nr.end&&fp>column?Math.pow(10,nr.end-column-1):Math.pow(10,nr.end-column),t+=amount,t/=Math.pow(10,decimals);var nnr=t.toFixed(decimals),replaceRange=new Range(row,nr.start,row,nr.end);this.session.replace(replaceRange,nnr),this.moveCursorTo(row,Math.max(nr.start+1,column+nnr.length-nr.value.length))}}},this.removeLines=function(){var range,rows=this.$getSelectedRows();range=0===rows.first||rows.last+1\u003Cthis.session.getLength()?new Range(rows.first,0,rows.last+1,0):new Range(rows.first-1,this.session.getLine(rows.first-1).length,rows.last,this.session.getLine(rows.last).length),this.session.remove(range),this.clearSelection()},this.duplicateSelection=function(){var sel=this.selection,doc=this.session,range=sel.getRange(),reverse=sel.isBackwards();if(range.isEmpty()){var row=range.start.row;doc.duplicateLines(row,row)}else{var point=reverse?range.start:range.end,endPoint=doc.insert(point,doc.getTextRange(range),!1);range.start=point,range.end=endPoint,sel.setSelectionRange(range,reverse)}},this.moveLinesDown=function(){this.$moveLines(function(firstRow,lastRow){return this.session.moveLinesDown(firstRow,lastRow)})},this.moveLinesUp=function(){this.$moveLines(function(firstRow,lastRow){return this.session.moveLinesUp(firstRow,lastRow)})},this.moveText=function(range,toPosition){return this.session.moveText(range,toPosition)},this.copyLinesUp=function(){this.$moveLines(function(firstRow,lastRow){return this.session.duplicateLines(firstRow,lastRow),0})},this.copyLinesDown=function(){this.$moveLines(function(firstRow,lastRow){return this.session.duplicateLines(firstRow,lastRow)})},this.$moveLines=function(mover){var selection=this.selection;if(!selection.inMultiSelectMode||this.inVirtualSelectionMode){var range=selection.toOrientedRange(),rows=this.$getSelectedRows(range),linesMoved=mover.call(this,rows.first,rows.last);range.moveBy(linesMoved,0),selection.fromOrientedRange(range)}else{var ranges=selection.rangeList.ranges;selection.rangeList.detach(this.session);for(var i=ranges.length;i--;){for(var rangeIndex=i,rows=ranges[i].collapseRows(),last=rows.end.row,first=rows.start.row;i--;){var rows=ranges[i].collapseRows();if(!(1>=first-rows.end.row))break;first=rows.end.row}i++;for(var linesMoved=mover.call(this,first,last);rangeIndex>=i;)ranges[rangeIndex].moveBy(linesMoved,0),rangeIndex--}selection.fromOrientedRange(selection.ranges[0]),selection.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var range=this.getSelectionRange().collapseRows();return{first:range.start.row,last:range.end.row}},this.onCompositionStart=function(){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(text){this.renderer.setCompositionText(text)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(row){return row>=this.getFirstVisibleRow()&&this.getLastVisibleRow()>=row},this.isRowFullyVisible=function(row){return row>=this.renderer.getFirstFullyVisibleRow()&&this.renderer.getLastFullyVisibleRow()>=row},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(dir,select){var renderer=this.renderer,config=this.renderer.layerConfig,rows=dir*Math.floor(config.height/config.lineHeight);this.$blockScrolling++,1==select?this.selection.$moveSelection(function(){this.moveCursorBy(rows,0)}):0==select&&(this.selection.moveCursorBy(rows,0),this.selection.clearSelection()),this.$blockScrolling--;var scrollTop=renderer.scrollTop;renderer.scrollBy(0,rows*config.lineHeight),null!=select&&renderer.scrollCursorIntoView(null,.5),renderer.animateScrolling(scrollTop)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(row){this.renderer.scrollToRow(row)},this.scrollToLine=function(line,center,animate,callback){this.renderer.scrollToLine(line,center,animate,callback)},this.centerSelection=function(){var range=this.getSelectionRange(),pos={row:Math.floor(range.start.row+(range.end.row-range.start.row)/2),column:Math.floor(range.start.column+(range.end.column-range.start.column)/2)};this.renderer.alignCursor(pos,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(row,column){this.selection.moveCursorTo(row,column)},this.moveCursorToPosition=function(pos){this.selection.moveCursorToPosition(pos)},this.jumpToMatching=function(select){var cursor=this.getCursorPosition(),range=this.session.getBracketRange(cursor);if(!range){if(range=this.find({needle:/[{}()\\[\\]]/g,preventScroll:!0,start:{row:cursor.row,column:cursor.column-1}}),!range)return;var pos=range.start;pos.row==cursor.row&&2>Math.abs(pos.column-cursor.column)&&(range=this.session.getBracketRange(pos))}pos=range&&range.cursor||pos,pos&&(select?range&&range.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(pos.row,pos.column):(this.clearSelection(),this.moveCursorTo(pos.row,pos.column)))},this.gotoLine=function(lineNumber,column,animate){this.selection.clearSelection(),this.session.unfold({row:lineNumber-1,column:column||0}),this.$blockScrolling+=1,this.moveCursorTo(lineNumber-1,column||0),this.$blockScrolling-=1,this.isRowFullyVisible(lineNumber-1)||this.scrollToLine(lineNumber-1,!0,animate)},this.navigateTo=function(row,column){this.clearSelection(),this.moveCursorTo(row,column)},this.navigateUp=function(times){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var selectionStart=this.selection.anchor.getPosition();return this.moveCursorToPosition(selectionStart)}this.selection.clearSelection(),times=times||1,this.selection.moveCursorBy(-times,0)},this.navigateDown=function(times){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var selectionEnd=this.selection.anchor.getPosition();return this.moveCursorToPosition(selectionEnd)}this.selection.clearSelection(),times=times||1,this.selection.moveCursorBy(times,0)},this.navigateLeft=function(times){if(this.selection.isEmpty())for(times=times||1;times--;)this.selection.moveCursorLeft();else{var selectionStart=this.getSelectionRange().start;this.moveCursorToPosition(selectionStart)}this.clearSelection()},this.navigateRight=function(times){if(this.selection.isEmpty())for(times=times||1;times--;)this.selection.moveCursorRight();else{var selectionEnd=this.getSelectionRange().end;this.moveCursorToPosition(selectionEnd)}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){var scrollTop=this.renderer.scrollTop;this.selection.moveCursorFileEnd(),this.clearSelection(),this.renderer.animateScrolling(scrollTop)},this.navigateFileStart=function(){var scrollTop=this.renderer.scrollTop;this.selection.moveCursorFileStart(),this.clearSelection(),this.renderer.animateScrolling(scrollTop)},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(replacement,options){options&&this.$search.set(options);var range=this.$search.find(this.session),replaced=0;return range?(this.$tryReplace(range,replacement)&&(replaced=1),null!==range&&(this.selection.setSelectionRange(range),this.renderer.scrollSelectionIntoView(range.start,range.end)),replaced):replaced},this.replaceAll=function(replacement,options){options&&this.$search.set(options);var ranges=this.$search.findAll(this.session),replaced=0;if(!ranges.length)return replaced;this.$blockScrolling+=1;var selection=this.getSelectionRange();this.clearSelection(),this.selection.moveCursorTo(0,0);for(var i=ranges.length-1;i>=0;--i)this.$tryReplace(ranges[i],replacement)&&replaced++;return this.selection.setSelectionRange(selection),this.$blockScrolling-=1,replaced},this.$tryReplace=function(range,replacement){var input=this.session.getTextRange(range);return replacement=this.$search.replace(input,replacement),null!==replacement?(range.end=this.session.replace(range,replacement),range):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(needle,options,animate){options||(options={}),\"string\"==typeof needle||needle instanceof RegExp?options.needle=needle:\"object\"==typeof needle&&oop.mixin(options,needle);\nvar range=this.selection.getRange();null==options.needle&&(needle=this.session.getTextRange(range)||this.$search.$options.needle,needle||(range=this.session.getWordRange(range.start.row,range.start.column),needle=this.session.getTextRange(range)),this.$search.set({needle:needle})),this.$search.set(options),options.start||this.$search.set({start:range});var newRange=this.$search.find(this.session);return options.preventScroll?newRange:newRange?(this.revealRange(newRange,animate),newRange):(options.backwards?range.start=range.end:range.end=range.start,this.selection.setRange(range),void 0)},this.findNext=function(options,animate){this.find({skipCurrent:!0,backwards:!1},options,animate)},this.findPrevious=function(options,animate){this.find(options,{skipCurrent:!0,backwards:!0},animate)},this.revealRange=function(range,animate){this.$blockScrolling+=1,this.session.unfold(range),this.selection.setSelectionRange(range),this.$blockScrolling-=1;var scrollTop=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(range.start,range.end,.5),0!=animate&&this.renderer.animateScrolling(scrollTop)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._emit(\"destroy\",this)},this.setAutoScrollEditorIntoView=function(enable){if(enable!==!1){var rect,self=this,shouldScroll=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement(\"div\"));var scrollAnchor=this.$scrollAnchor;scrollAnchor.style.cssText=\"position:absolute\",this.container.insertBefore(scrollAnchor,this.container.firstChild);var onChangeSelection=this.on(\"changeSelection\",function(){shouldScroll=!0}),onBeforeRender=this.renderer.on(\"beforeRender\",function(){shouldScroll&&(rect=self.renderer.container.getBoundingClientRect())}),onAfterRender=this.renderer.on(\"afterRender\",function(){if(shouldScroll&&rect&&self.isFocused()){var renderer=self.renderer,pos=renderer.$cursorLayer.$pixelPos,config=renderer.layerConfig,top=pos.top-config.offset;shouldScroll=pos.top>=0&&0>top+rect.top?!0:pos.top\u003Cconfig.height&&pos.top+rect.top+config.lineHeight>window.innerHeight?!1:null,null!=shouldScroll&&(scrollAnchor.style.top=top+\"px\",scrollAnchor.style.left=pos.left+\"px\",scrollAnchor.style.height=config.lineHeight+\"px\",scrollAnchor.scrollIntoView(shouldScroll)),shouldScroll=rect=null}});this.setAutoScrollEditorIntoView=function(enable){enable!==!0&&(delete this.setAutoScrollEditorIntoView,this.removeEventListener(\"changeSelection\",onChangeSelection),this.renderer.removeEventListener(\"afterRender\",onAfterRender),this.renderer.removeEventListener(\"beforeRender\",onBeforeRender))}}}}).call(Editor.prototype),config.defineOptions(Editor.prototype,\"editor\",{selectionStyle:{set:function(style){this.onSelectionChange(),this._emit(\"changeSelectionStyle\",{data:style})},initialValue:\"line\"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(readOnly){this.textInput.setReadOnly(readOnly);var cursorLayer=this.renderer.$cursorLayer;cursorLayer&&cursorLayer.setBlinking(!readOnly)},initialValue:!1},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},hScrollBarAlwaysVisible:\"renderer\",highlightGutterLine:\"renderer\",animatedScroll:\"renderer\",showInvisibles:\"renderer\",showPrintMargin:\"renderer\",printMarginColumn:\"renderer\",printMargin:\"renderer\",fadeFoldWidgets:\"renderer\",showFoldWidgets:\"renderer\",showGutter:\"renderer\",displayIndentGuides:\"renderer\",fontSize:\"renderer\",fontFamily:\"renderer\",scrollSpeed:\"$mouseHandler\",dragDelay:\"$mouseHandler\",focusTimout:\"$mouseHandler\",firstLineNumber:\"session\",overwrite:\"session\",newLineMode:\"session\",useWorker:\"session\",useSoftTabs:\"session\",tabSize:\"session\",wrap:\"session\",foldStyle:\"session\"}),exports.Editor=Editor}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function(obj){if(\"object\"!=typeof obj)return obj;var copy=obj.constructor();for(var key in obj)copy[key]=\"object\"==typeof obj[key]?this.deepCopy(obj[key]):obj[key];return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/\u003C/g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)};return _self.delay=_self,_self.schedule=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||0))},_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\"],function(acequire,exports){var event=acequire(\"../lib/event\"),useragent=acequire(\"../lib/useragent\"),dom=acequire(\"../lib/dom\"),lang=acequire(\"../lib/lang\"),BROKEN_SETDATA=18>useragent.isChrome,TextInput=function(parentNode,host){function resetSelection(isEmpty){if(!inComposition){if(inputHandler)selectionStart=0,selectionEnd=isEmpty?0:text.value.length-1;else var selectionStart=isEmpty?2:1,selectionEnd=2;try{text.setSelectionRange(selectionStart,selectionEnd)}catch(e){}}}function resetValue(){inComposition||(text.value=PLACEHOLDER,useragent.isWebKit&&syncValue.schedule())}function onContextMenuClose(){setTimeout(function(){tempStyle&&(text.style.cssText=tempStyle,tempStyle=\"\"),null==host.renderer.$keepTextAreaAtCursor&&(host.renderer.$keepTextAreaAtCursor=!0,host.renderer.$moveTextAreaToCursor())},0)}var text=dom.createElement(\"textarea\");text.className=\"ace_text-input\",useragent.isTouchPad&&text.setAttribute(\"x-palm-disable-auto-cap\",!0),text.wrap=\"off\",text.autocorrect=\"off\",text.autocapitalize=\"off\",text.spellcheck=!1,text.style.bottom=\"2000em\",parentNode.insertBefore(text,parentNode.firstChild);var PLACEHOLDER=\"\u0001\u0001\",cut=!1,copied=!1,pasted=!1,inComposition=!1,tempStyle=\"\",isSelectionEmpty=!0;try{var isFocused=document.activeElement===text}catch(e){}event.addListener(text,\"blur\",function(){host.onBlur(),isFocused=!1}),event.addListener(text,\"focus\",function(){isFocused=!0,host.onFocus(),resetSelection()}),this.focus=function(){text.focus()},this.blur=function(){text.blur()},this.isFocused=function(){return isFocused};var syncSelection=lang.delayedCall(function(){isFocused&&resetSelection(isSelectionEmpty)}),syncValue=lang.delayedCall(function(){inComposition||(text.value=PLACEHOLDER,isFocused&&resetSelection())});useragent.isWebKit||host.addEventListener(\"changeSelection\",function(){host.selection.isEmpty()!=isSelectionEmpty&&(isSelectionEmpty=!isSelectionEmpty,syncSelection.schedule())}),resetValue(),isFocused&&host.onFocus();var isAllSelected=function(text){return 0===text.selectionStart&&text.selectionEnd===text.value.length};if(!text.setSelectionRange&&text.createTextRange&&(text.setSelectionRange=function(selectionStart,selectionEnd){var range=this.createTextRange();range.collapse(!0),range.moveStart(\"character\",selectionStart),range.moveEnd(\"character\",selectionEnd),range.select()},isAllSelected=function(text){try{var range=text.ownerDocument.selection.createRange()}catch(e){}return range&&range.parentElement()==text?range.text==text.value:!1}),useragent.isOldIE){var inPropertyChange=!1,onPropertyChange=function(e){if(!inPropertyChange){var data=text.value;if(!inComposition&&data&&data!=PLACEHOLDER){if(e&&data==PLACEHOLDER[0])return syncProperty.schedule();sendText(data),inPropertyChange=!0,resetValue(),inPropertyChange=!1}}},syncProperty=lang.delayedCall(onPropertyChange);event.addListener(text,\"propertychange\",onPropertyChange);var keytable={13:1,27:1};event.addListener(text,\"keyup\",function(e){!inComposition||text.value&&!keytable[e.keyCode]||setTimeout(onCompositionEnd,0),129>(text.value.charCodeAt(0)||0)||(inComposition?onCompositionUpdate():onCompositionStart())})}var onSelect=function(){cut?cut=!1:copied?copied=!1:isAllSelected(text)?(host.selectAll(),resetSelection()):inputHandler&&resetSelection(host.selection.isEmpty())},inputHandler=null;this.setInputHandler=function(cb){inputHandler=cb},this.getInputHandler=function(){return inputHandler};var afterContextMenu=!1,sendText=function(data){inputHandler&&(data=inputHandler(data),inputHandler=null),pasted?(resetSelection(),data&&host.onPaste(data),pasted=!1):data==PLACEHOLDER[0]?afterContextMenu&&host.execCommand(\"del\",{source:\"ace\"}):(data.substring(0,2)==PLACEHOLDER?data=data.substr(2):data[0]==PLACEHOLDER[0]?data=data.substr(1):data[data.length-1]==PLACEHOLDER[0]&&(data=data.slice(0,-1)),data[data.length-1]==PLACEHOLDER[0]&&(data=data.slice(0,-1)),data&&host.onTextInput(data)),afterContextMenu&&(afterContextMenu=!1)},onInput=function(){if(!inComposition){var data=text.value;sendText(data),resetValue()}},onCut=function(e){var data=host.getCopyText();if(!data)return event.preventDefault(e),void 0;var clipboardData=e.clipboardData||window.clipboardData;if(clipboardData&&!BROKEN_SETDATA){var supported=clipboardData.setData(\"Text\",data);supported&&(host.onCut(),event.preventDefault(e))}supported||(cut=!0,text.value=data,text.select(),setTimeout(function(){cut=!1,resetValue(),resetSelection(),host.onCut()}))},onCopy=function(e){var data=host.getCopyText();if(!data)return event.preventDefault(e),void 0;var clipboardData=e.clipboardData||window.clipboardData;if(clipboardData&&!BROKEN_SETDATA){var supported=clipboardData.setData(\"Text\",data);supported&&(host.onCopy(),event.preventDefault(e))}supported||(copied=!0,text.value=data,text.select(),setTimeout(function(){copied=!1,resetValue(),resetSelection(),host.onCopy()}))},onPaste=function(e){var clipboardData=e.clipboardData||window.clipboardData;if(clipboardData){var data=clipboardData.getData(\"Text\");data&&host.onPaste(data),useragent.isIE&&setTimeout(resetSelection),event.preventDefault(e)}else text.value=\"\",pasted=!0};event.addCommandKeyListener(text,host.onCommandKey.bind(host)),event.addListener(text,\"select\",onSelect),event.addListener(text,\"input\",onInput),event.addListener(text,\"cut\",onCut),event.addListener(text,\"copy\",onCopy),event.addListener(text,\"paste\",onPaste),\"oncut\"in text&&\"oncopy\"in text&&\"onpaste\"in text||event.addListener(parentNode,\"keydown\",function(e){if((!useragent.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:onCopy(e);break;case 86:onPaste(e);break;case 88:onCut(e)}});var onCompositionStart=function(){inComposition={},host.onCompositionStart(),setTimeout(onCompositionUpdate,0),host.on(\"mousedown\",onCompositionEnd),host.selection.isEmpty()||(host.insert(\"\"),host.session.markUndoGroup(),host.selection.clearSelection()),host.session.markUndoGroup()},onCompositionUpdate=function(){if(inComposition&&(host.onCompositionUpdate(text.value),inComposition.lastValue&&host.undo(),inComposition.lastValue=text.value.replace(/\\x01/g,\"\"),inComposition.lastValue)){var r=host.selection.getRange();host.insert(inComposition.lastValue),host.session.markUndoGroup(),inComposition.range=host.selection.getRange(),host.selection.setRange(r),host.selection.clearSelection()}},onCompositionEnd=function(e){var c=inComposition;inComposition=!1;var timer=setTimeout(function(){var str=text.value.replace(/\\x01/g,\"\");inComposition||str!=c.lastValue||resetValue()});inputHandler=function(str){return clearTimeout(timer),str=str.replace(/\\x01/g,\"\"),str==c.lastValue?\"\":(str||c.lastValue&&host.undo(),str)},host.onCompositionEnd(),host.removeListener(\"mousedown\",onCompositionEnd),\"compositionend\"==e.type&&host.selection.setRange(c.range)},syncComposition=lang.delayedCall(onCompositionUpdate,50);event.addListener(text,\"compositionstart\",onCompositionStart),event.addListener(text,useragent.isGecko?\"text\":\"keyup\",function(){syncComposition.schedule()}),event.addListener(text,\"compositionend\",onCompositionEnd),this.getElement=function(){return text},this.setReadOnly=function(readOnly){text.readOnly=readOnly},this.onContextMenu=function(e){afterContextMenu=!0,tempStyle||(tempStyle=text.style.cssText),text.style.cssText=\"z-index:100000;\"+(useragent.isIE?\"opacity:0.1;\":\"\"),resetSelection(host.selection.isEmpty()),host._emit(\"nativecontextmenu\",{target:host});var rect=host.container.getBoundingClientRect(),style=dom.computedStyle(host.container),top=rect.top+(parseInt(style.borderTopWidth)||0),left=rect.left+(parseInt(rect.borderLeftWidth)||0),maxTop=rect.bottom-top-text.clientHeight,move=function(e){text.style.left=e.clientX-left-2+\"px\",text.style.top=Math.min(e.clientY-top-2,maxTop)+\"px\"};move(e),\"mousedown\"==e.type&&(host.renderer.$keepTextAreaAtCursor&&(host.renderer.$keepTextAreaAtCursor=null),useragent.isWin&&event.capture(host.container,move,onContextMenuClose))},this.onContextMenuClose=onContextMenuClose,useragent.isGecko||event.addListener(text,\"contextmenu\",function(e){host.textInput.onContextMenu(e),onContextMenuClose()})};exports.TextInput=TextInput}),ace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop\",\"ace/config\"],function(acequire,exports){var event=acequire(\"../lib/event\"),useragent=acequire(\"../lib/useragent\"),DefaultHandlers=acequire(\"./default_handlers\").DefaultHandlers,DefaultGutterHandler=acequire(\"./default_gutter_handler\").GutterHandler,MouseEvent=acequire(\"./mouse_event\").MouseEvent,DragdropHandler=acequire(\"./dragdrop\").DragdropHandler,config=acequire(\"../config\"),MouseHandler=function(editor){this.editor=editor,new DefaultHandlers(this),new DefaultGutterHandler(this),new DragdropHandler(this),event.addListener(editor.container,\"mousedown\",function(e){return editor.focus(),event.preventDefault(e)});var mouseTarget=editor.renderer.getMouseEventTarget();event.addListener(mouseTarget,\"click\",this.onMouseEvent.bind(this,\"click\")),event.addListener(mouseTarget,\"mousemove\",this.onMouseMove.bind(this,\"mousemove\")),event.addMultiMouseDownListener(mouseTarget,[300,300,250],this,\"onMouseEvent\"),event.addMouseWheelListener(editor.container,this.onMouseWheel.bind(this,\"mousewheel\"));var gutterEl=editor.renderer.$gutter;event.addListener(gutterEl,\"mousedown\",this.onMouseEvent.bind(this,\"guttermousedown\")),event.addListener(gutterEl,\"click\",this.onMouseEvent.bind(this,\"gutterclick\")),event.addListener(gutterEl,\"dblclick\",this.onMouseEvent.bind(this,\"gutterdblclick\")),event.addListener(gutterEl,\"mousemove\",this.onMouseEvent.bind(this,\"guttermousemove\"))};(function(){this.onMouseEvent=function(name,e){this.editor._emit(name,new MouseEvent(e,this.editor))},this.onMouseMove=function(name,e){var listeners=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;listeners&&listeners.length&&this.editor._emit(name,new MouseEvent(e,this.editor))},this.onMouseWheel=function(name,e){var mouseEvent=new MouseEvent(e,this.editor);mouseEvent.speed=2*this.$scrollSpeed,mouseEvent.wheelX=e.wheelX,mouseEvent.wheelY=e.wheelY,this.editor._emit(name,mouseEvent)},this.setState=function(state){this.state=state},this.captureMouse=function(ev,state){state&&this.setState(state),this.x=ev.x,this.y=ev.y,this.isMousePressed=!0;var renderer=this.editor.renderer;renderer.$keepTextAreaAtCursor&&(renderer.$keepTextAreaAtCursor=null);var self=this,onMouseMove=function(e){self.x=e.clientX,self.y=e.clientY},onCaptureEnd=function(e){clearInterval(timerId),onCaptureInterval(),self[self.state+\"End\"]&&self[self.state+\"End\"](e),self.$clickSelection=null,null==renderer.$keepTextAreaAtCursor&&(renderer.$keepTextAreaAtCursor=!0,renderer.$moveTextAreaToCursor()),self.isMousePressed=!1,self.onMouseEvent(\"mouseup\",e)},onCaptureInterval=function(){self[self.state]&&self[self.state]()};if(useragent.isOldIE&&\"dblclick\"==ev.domEvent.type)return setTimeout(function(){onCaptureEnd(ev.domEvent)});event.capture(this.editor.container,onMouseMove,onCaptureEnd);var timerId=setInterval(onCaptureInterval,20)}}).call(MouseHandler.prototype),config.defineOptions(MouseHandler.prototype,\"mouseHandler\",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:150},focusTimout:{initialValue:0}}),exports.MouseHandler=MouseHandler}),ace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/useragent\"],function(acequire,exports){function DefaultHandlers(mouseHandler){mouseHandler.$clickSelection=null;var editor=mouseHandler.editor;editor.setDefaultHandler(\"mousedown\",this.onMouseDown.bind(mouseHandler)),editor.setDefaultHandler(\"dblclick\",this.onDoubleClick.bind(mouseHandler)),editor.setDefaultHandler(\"tripleclick\",this.onTripleClick.bind(mouseHandler)),editor.setDefaultHandler(\"quadclick\",this.onQuadClick.bind(mouseHandler)),editor.setDefaultHandler(\"mousewheel\",this.onMouseWheel.bind(mouseHandler));var exports=[\"select\",\"startSelect\",\"drag\",\"dragEnd\",\"dragWait\",\"dragWaitEnd\",\"startDrag\",\"focusWait\"];exports.forEach(function(x){mouseHandler[x]=this[x]},this),mouseHandler.selectByLines=this.extendSelectionBy.bind(mouseHandler,\"getLineRange\"),mouseHandler.selectByWords=this.extendSelectionBy.bind(mouseHandler,\"getWordRange\")}function calcDistance(ax,ay,bx,by){return Math.sqrt(Math.pow(bx-ax,2)+Math.pow(by-ay,2))}function calcRangeOrientation(range,cursor){if(range.start.row==range.end.row)var cmp=2*cursor.column-range.start.column-range.end.column;else var cmp=2*cursor.row-range.start.row-range.end.row;return 0>cmp?{cursor:range.start,anchor:range.end}:{cursor:range.end,anchor:range.start}}var dom=acequire(\"../lib/dom\");acequire(\"../lib/useragent\");var DRAG_OFFSET=0;(function(){this.onMouseDown=function(ev){var inSelection=ev.inSelection(),pos=ev.getDocumentPosition();this.mousedownEvent=ev;var editor=this.editor,button=ev.getButton();if(0!==button){var selectionRange=editor.getSelectionRange(),selectionEmpty=selectionRange.isEmpty();return selectionEmpty&&(editor.moveCursorToPosition(pos),editor.selection.clearSelection()),editor.textInput.onContextMenu(ev.domEvent),void 0}return!inSelection||editor.isFocused()||(editor.focus(),!this.$focusTimout||this.$clickSelection||editor.inMultiSelectMode)?(!inSelection||this.$clickSelection||ev.getShiftKey()||editor.inMultiSelectMode?this.startSelect(pos):inSelection&&(this.mousedownEvent.time=(new Date).getTime(),this.setState(\"dragWait\")),this.captureMouse(ev),ev.preventDefault()):(this.setState(\"focusWait\"),this.captureMouse(ev),ev.preventDefault())},this.startSelect=function(pos){pos=pos||this.editor.renderer.screenToTextCoordinates(this.x,this.y),this.mousedownEvent.getShiftKey()?this.editor.selection.selectToPosition(pos):this.$clickSelection||(this.editor.moveCursorToPosition(pos),this.editor.selection.clearSelection()),this.setState(\"select\")},this.select=function(){var anchor,editor=this.editor,cursor=editor.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var cmp=this.$clickSelection.comparePoint(cursor);if(-1==cmp)anchor=this.$clickSelection.end;else if(1==cmp)anchor=this.$clickSelection.start;else{var orientedRange=calcRangeOrientation(this.$clickSelection,cursor);cursor=orientedRange.cursor,anchor=orientedRange.anchor}editor.selection.setSelectionAnchor(anchor.row,anchor.column)}editor.selection.selectToPosition(cursor),editor.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(unitName){var anchor,editor=this.editor,cursor=editor.renderer.screenToTextCoordinates(this.x,this.y),range=editor.selection[unitName](cursor.row,cursor.column);if(this.$clickSelection){var cmpStart=this.$clickSelection.comparePoint(range.start),cmpEnd=this.$clickSelection.comparePoint(range.end);if(-1==cmpStart&&0>=cmpEnd)anchor=this.$clickSelection.end,(range.end.row!=cursor.row||range.end.column!=cursor.column)&&(cursor=range.start);else if(1==cmpEnd&&cmpStart>=0)anchor=this.$clickSelection.start,(range.start.row!=cursor.row||range.start.column!=cursor.column)&&(cursor=range.end);else if(-1==cmpStart&&1==cmpEnd)cursor=range.end,anchor=range.start;else{var orientedRange=calcRangeOrientation(this.$clickSelection,cursor);cursor=orientedRange.cursor,anchor=orientedRange.anchor}editor.selection.setSelectionAnchor(anchor.row,anchor.column)}editor.selection.selectToPosition(cursor),editor.renderer.scrollCursorIntoView()},this.startDrag=function(){var editor=this.editor;this.setState(\"drag\"),this.dragRange=editor.getSelectionRange();var style=editor.getSelectionStyle();this.dragSelectionMarker=editor.session.addMarker(this.dragRange,\"ace_selection\",style),editor.clearSelection(),dom.addCssClass(editor.container,\"ace_dragging\"),this.$dragKeybinding||(this.$dragKeybinding={handleKeyboard:function(data,hashId,keyString){return\"esc\"==keyString?{command:this.command}:void 0},command:{exec:function(editor){var self=editor.$mouseHandler;self.dragCursor=null,self.dragEnd(),self.startSelect()}}}),editor.keyBinding.addKeyboardHandler(this.$dragKeybinding)},this.focusWait=function(){var distance=calcDistance(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),time=(new Date).getTime();(distance>DRAG_OFFSET||time-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.dragWait=function(){var distance=calcDistance(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),time=(new Date).getTime(),editor=this.editor;distance>DRAG_OFFSET?this.startSelect(this.mousedownEvent.getDocumentPosition()):time-this.mousedownEvent.time>editor.$mouseHandler.$dragDelay&&this.startDrag()},this.dragWaitEnd=function(e){this.mousedownEvent.domEvent=e,this.startSelect()},this.drag=function(){var editor=this.editor;this.dragCursor=editor.renderer.screenToTextCoordinates(this.x,this.y),editor.moveCursorToPosition(this.dragCursor),editor.renderer.scrollCursorIntoView()},this.dragEnd=function(e){var editor=this.editor,dragCursor=this.dragCursor,dragRange=this.dragRange;if(dom.removeCssClass(editor.container,\"ace_dragging\"),editor.session.removeMarker(this.dragSelectionMarker),editor.keyBinding.removeKeyboardHandler(this.$dragKeybinding),dragCursor){if(editor.clearSelection(),e&&(e.ctrlKey||e.altKey)){var session=editor.session,newRange=dragRange;newRange.end=session.insert(dragCursor,session.getTextRange(dragRange)),newRange.start=dragCursor}else{if(dragRange.contains(dragCursor.row,dragCursor.column))return;var newRange=editor.moveText(dragRange,dragCursor)}newRange&&editor.selection.setSelectionRange(newRange)}},this.onDoubleClick=function(ev){var pos=ev.getDocumentPosition(),editor=this.editor,session=editor.session,range=session.getBracketRange(pos);return range?(range.isEmpty()&&(range.start.column--,range.end.column++),this.$clickSelection=range,this.setState(\"select\"),void 0):(this.$clickSelection=editor.selection.getWordRange(pos.row,pos.column),this.setState(\"selectByWords\"),void 0)},this.onTripleClick=function(ev){var pos=ev.getDocumentPosition(),editor=this.editor;this.setState(\"selectByLines\"),this.$clickSelection=editor.selection.getLineRange(pos.row)},this.onQuadClick=function(){var editor=this.editor;editor.selectAll(),this.$clickSelection=editor.getSelectionRange(),this.setState(\"null\")},this.onMouseWheel=function(ev){if(!ev.getShiftKey()&&!ev.getAccelKey()){var t=ev.domEvent.timeStamp,dt=t-(this.$lastScrollTime||0),editor=this.editor,isScrolable=editor.renderer.isScrollableBy(ev.wheelX*ev.speed,ev.wheelY*ev.speed);return isScrolable||200>dt?(this.$lastScrollTime=t,editor.renderer.scrollBy(ev.wheelX*ev.speed,ev.wheelY*ev.speed),ev.stop()):void 0}}}).call(DefaultHandlers.prototype),exports.DefaultHandlers=DefaultHandlers}),ace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\"],function(acequire,exports){function GutterHandler(mouseHandler){function createTooltip(){tooltip=dom.createElement(\"div\"),tooltip.className=\"ace_gutter-tooltip\",tooltip.style.display=\"none\",editor.container.appendChild(tooltip)}function showTooltip(){tooltip||createTooltip();var row=mouseEvent.getDocumentPosition().row,annotation=gutter.$annotations[row];if(!annotation)return hideTooltip();var maxRow=editor.session.getLength();if(row==maxRow){var screenRow=editor.renderer.pixelToScreenCoordinates(0,mouseEvent.y).row,pos=mouseEvent.$pos;if(screenRow>editor.session.documentToScreenRow(pos.row,pos.column))return hideTooltip()}tooltipAnnotation!=annotation&&(tooltipAnnotation=annotation.text.join(\"\u003Cbr/>\"),tooltip.style.display=\"block\",tooltip.innerHTML=tooltipAnnotation,editor.on(\"mousewheel\",hideTooltip),moveTooltip(mouseEvent))}function hideTooltip(){tooltipTimeout&&(tooltipTimeout=clearTimeout(tooltipTimeout)),tooltipAnnotation&&(tooltip.style.display=\"none\",tooltipAnnotation=null,editor.removeEventListener(\"mousewheel\",hideTooltip))}function moveTooltip(e){var rect=editor.renderer.$gutter.getBoundingClientRect();tooltip.style.left=e.x+15+\"px\",e.y+3*editor.renderer.lineHeight+15\u003Crect.bottom?(tooltip.style.bottom=\"\",tooltip.style.top=e.y+15+\"px\"):(tooltip.style.top=\"\",tooltip.style.bottom=rect.bottom-e.y+5+\"px\")}var editor=mouseHandler.editor,gutter=editor.renderer.$gutterLayer;mouseHandler.editor.setDefaultHandler(\"guttermousedown\",function(e){if(editor.isFocused()){var gutterRegion=gutter.getRegion(e);if(\"foldWidgets\"!=gutterRegion){var row=e.getDocumentPosition().row,selection=editor.session.selection;if(e.getShiftKey())selection.selectTo(row,0);else{if(2==e.domEvent.detail)return editor.selectAll(),e.preventDefault();mouseHandler.$clickSelection=editor.selection.getLineRange(row)}return mouseHandler.captureMouse(e,\"selectByLines\"),e.preventDefault()}}});var tooltipTimeout,mouseEvent,tooltip,tooltipAnnotation;mouseHandler.editor.setDefaultHandler(\"guttermousemove\",function(e){var target=e.domEvent.target||e.domEvent.srcElement;return dom.hasCssClass(target,\"ace_fold-widget\")?hideTooltip():(tooltipAnnotation&&moveTooltip(e),mouseEvent=e,tooltipTimeout||(tooltipTimeout=setTimeout(function(){tooltipTimeout=null,mouseEvent&&!mouseHandler.isMousePressed?showTooltip():hideTooltip()},50)),void 0)}),event.addListener(editor.renderer.$gutter,\"mouseout\",function(){mouseEvent=null,tooltipAnnotation&&!tooltipTimeout&&(tooltipTimeout=setTimeout(function(){tooltipTimeout=null,hideTooltip()},50))})}var dom=acequire(\"../lib/dom\"),event=acequire(\"../lib/event\");exports.GutterHandler=GutterHandler}),ace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"],function(acequire,exports){var event=acequire(\"../lib/event\"),useragent=acequire(\"../lib/useragent\"),MouseEvent=exports.MouseEvent=function(domEvent,editor){this.domEvent=domEvent,this.editor=editor,this.x=this.clientX=domEvent.clientX,this.y=this.clientY=domEvent.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){event.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){event.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var editor=this.editor;if(editor.getReadOnly())this.$inSelection=!1;else{var selectionRange=editor.getSelectionRange();if(selectionRange.isEmpty())this.$inSelection=!1;else{var pos=this.getDocumentPosition();this.$inSelection=selectionRange.contains(pos.row,pos.column)}}return this.$inSelection},this.getButton=function(){return event.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=useragent.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(MouseEvent.prototype)}),ace.define(\"ace/mouse/dragdrop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(acequire,exports){var event=acequire(\"../lib/event\"),DragdropHandler=function(mouseHandler){function addDragMarker(){range=editor.selection.toOrientedRange(),dragSelectionMarker=editor.session.addMarker(range,\"ace_selection\",editor.getSelectionStyle()),editor.clearSelection(),clearInterval(timerId),timerId=setInterval(onDragInterval,20),counter=0,event.addListener(document,\"mousemove\",onMouseMove)}function clearDragMarker(){clearInterval(timerId),editor.session.removeMarker(dragSelectionMarker),dragSelectionMarker=null,editor.selection.fromOrientedRange(range),counter=0,event.removeListener(document,\"mousemove\",onMouseMove)}function onMouseMove(){null==onMouseMoveTimer&&(onMouseMoveTimer=setTimeout(function(){null!=onMouseMoveTimer&&dragSelectionMarker&&clearDragMarker()},20))}var dragSelectionMarker,x,y,timerId,range,dragCursor,editor=mouseHandler.editor,counter=0,mouseTarget=editor.container;event.addListener(mouseTarget,\"dragenter\",function(e){if(!editor.getReadOnly()){var types=e.dataTransfer.types;if(!types||-1!==Array.prototype.indexOf.call(types,\"text/plain\"))return dragSelectionMarker||addDragMarker(),counter++,event.preventDefault(e)}}),event.addListener(mouseTarget,\"dragover\",function(e){if(!editor.getReadOnly()){var types=e.dataTransfer.types;if(!types||-1!==Array.prototype.indexOf.call(types,\"text/plain\"))return null!==onMouseMoveTimer&&(onMouseMoveTimer=null),x=e.clientX,y=e.clientY,event.preventDefault(e)}});var onDragInterval=function(){dragCursor=editor.renderer.screenToTextCoordinates(x,y),editor.moveCursorToPosition(dragCursor),editor.renderer.scrollCursorIntoView()};event.addListener(mouseTarget,\"dragleave\",function(e){return counter--,0>=counter&&dragSelectionMarker?(clearDragMarker(),event.preventDefault(e)):void 0}),event.addListener(mouseTarget,\"drop\",function(e){return dragSelectionMarker?(range.end=editor.session.insert(dragCursor,e.dataTransfer.getData(\"Text\")),range.start=dragCursor,clearDragMarker(),editor.focus(),event.preventDefault(e)):void 0});var onMouseMoveTimer=null};exports.DragdropHandler=DragdropHandler}),ace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\"],function(acequire,exports,module){\"no use strict\";\nfunction deHyphenate(str){return str.replace(/-(.)/g,function(m,m1){return m1.toUpperCase()})}var lang=acequire(\"./lib/lang\"),oop=acequire(\"./lib/oop\"),net=acequire(\"./lib/net\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,global=function(){return this}(),options={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:\"\",suffix:\".js\",$moduleUrls:{}};exports.get=function(key){if(!options.hasOwnProperty(key))throw Error(\"Unknown config key: \"+key);return options[key]},exports.set=function(key,value){if(!options.hasOwnProperty(key))throw Error(\"Unknown config key: \"+key);options[key]=value},exports.all=function(){return lang.copyObject(options)},oop.implement(exports,EventEmitter),exports.moduleUrl=function(name,component){if(options.$moduleUrls[name])return options.$moduleUrls[name];var parts=name.split(\"/\");component=component||parts[parts.length-2]||\"\";var base=parts[parts.length-1].replace(component,\"\").replace(/(^[\\-_])|([\\-_]$)/,\"\");!base&&parts.length>1&&(base=parts[parts.length-2]);var path=options[component+\"Path\"];return null==path&&(path=options.basePath),path&&\"/\"!=path.slice(-1)&&(path+=\"/\"),path+component+\"-\"+base+this.get(\"suffix\")},exports.setModuleUrl=function(name,subst){return options.$moduleUrls[name]=subst},exports.$loading={},exports.loadModule=function(moduleName,onLoad){var module,moduleType;Array.isArray(moduleName)&&(moduleType=moduleName[0],moduleName=moduleName[1]);try{module=acequire(moduleName)}catch(e){}if(module&&!exports.$loading[moduleName])return onLoad&&onLoad(module);if(exports.$loading[moduleName]||(exports.$loading[moduleName]=[]),exports.$loading[moduleName].push(onLoad),!(exports.$loading[moduleName].length>1)){var afterLoad=function(){acequire([moduleName],function(module){exports._emit(\"load.module\",{name:moduleName,module:module});var listeners=exports.$loading[moduleName];exports.$loading[moduleName]=null,listeners.forEach(function(onLoad){onLoad&&onLoad(module)})})};return exports.get(\"packaged\")?(net.loadScript(exports.moduleUrl(moduleName,moduleType),afterLoad),void 0):afterLoad()}},exports.init=function(){if(options.packaged=acequire.packaged||module.packaged||global.define&&define.packaged,!global.document)return\"\";for(var scriptOptions={},scriptUrl=\"\",scripts=document.getElementsByTagName(\"script\"),i=0;scripts.length>i;i++){var script=scripts[i],src=script.src||script.getAttribute(\"src\");if(src){for(var attributes=script.attributes,j=0,l=attributes.length;l>j;j++){var attr=attributes[j];0===attr.name.indexOf(\"data-ace-\")&&(scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/,\"\"))]=attr.value)}var m=src.match(/^(.*)\\/ace(\\-\\w+)?\\.js(\\?|$)/);m&&(scriptUrl=m[1])}}scriptUrl&&(scriptOptions.base=scriptOptions.base||scriptUrl,scriptOptions.packaged=!0),scriptOptions.basePath=scriptOptions.base,scriptOptions.workerPath=scriptOptions.workerPath||scriptOptions.base,scriptOptions.modePath=scriptOptions.modePath||scriptOptions.base,scriptOptions.themePath=scriptOptions.themePath||scriptOptions.base,delete scriptOptions.base;for(var key in scriptOptions)scriptOptions[key]!==void 0&&exports.set(key,scriptOptions[key])};var optionsProvider={setOptions:function(optList){Object.keys(optList).forEach(function(key){this.setOption(key,optList[key])},this)},getOptions:function(a){var b={};return Object.keys(a).forEach(function(key){b[key]=this.getOption(key)},this),b},setOption:function(name,value){if(this[\"$\"+name]!==value){var opt=this.$options[name];if(!opt)return void 0;if(opt.forwardTo)return this[opt.forwardTo]&&this[opt.forwardTo].setOption(name,value);opt.handlesSet||(this[\"$\"+name]=value),opt&&opt.set&&opt.set.call(this,value)}},getOption:function(name){var opt=this.$options[name];return opt?opt.forwardTo?this[opt.forwardTo]&&this[opt.forwardTo].getOption(name):opt&&opt.get?opt.get.call(this):this[\"$\"+name]:void 0}},defaultOptions={};exports.defineOptions=function(obj,path,options){return obj.$options||(defaultOptions[path]=obj.$options={}),Object.keys(options).forEach(function(key){var opt=options[key];\"string\"==typeof opt&&(opt={forwardTo:opt}),opt.name||(opt.name=key),obj.$options[opt.name]=opt,\"initialValue\"in opt&&(obj[\"$\"+opt.name]=opt.initialValue)}),oop.implement(obj,optionsProvider),this},exports.resetOptions=function(obj){Object.keys(obj.$options).forEach(function(key){var opt=obj.$options[key];\"value\"in opt&&obj.setOption(key,opt.value)})},exports.setDefaultValue=function(path,name,value){var opts=defaultOptions[path]||(defaultOptions[path]={});opts[name]&&(opts.forwardTo?exports.setDefaultValue(opts.forwardTo,name,value):opts[name].value=value)},exports.setDefaultValues=function(path,optionHash){Object.keys(optionHash).forEach(function(key){exports.setDefaultValue(path,key,optionHash[key])})}}),ace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){var dom=acequire(\"./dom\");exports.get=function(url,callback){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,!0),xhr.onreadystatechange=function(){4===xhr.readyState&&callback(xhr.responseText)},xhr.send(null)},exports.loadScript=function(path,callback){var head=dom.getDocumentHead(),s=document.createElement(\"script\");s.src=path,head.appendChild(s),s.onload=s.onreadystatechange=function(_,isAbort){(isAbort||!s.readyState||\"loaded\"==s.readyState||\"complete\"==s.readyState)&&(s=s.onload=s.onreadystatechange=null,isAbort||callback())}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault);for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners)for(var i=0;listeners.length>i;i++)listeners[i](e,this)},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){if(this._defaultHandlers=this._defaultHandlers||{},this._defaultHandlers[eventName])throw Error(\"The default handler for '\"+eventName+\"' is already set\");this._defaultHandlers[eventName]=callback},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\"],function(acequire,exports){function FoldHandler(editor){editor.on(\"click\",function(e){var position=e.getDocumentPosition(),session=editor.session,fold=session.getFoldAt(position.row,position.column,1);fold&&(e.getAccelKey()?session.removeFold(fold):session.expandFold(fold),e.stop())}),editor.on(\"gutterclick\",function(e){var gutterRegion=editor.renderer.$gutterLayer.getRegion(e);if(\"foldWidgets\"==gutterRegion){var row=e.getDocumentPosition().row,session=editor.session;session.foldWidgets&&session.foldWidgets[row]&&editor.session.onFoldWidgetClick(row,e),editor.isFocused()||editor.focus(),e.stop()}}),editor.on(\"gutterdblclick\",function(e){var gutterRegion=editor.renderer.$gutterLayer.getRegion(e);if(\"foldWidgets\"==gutterRegion){var row=e.getDocumentPosition().row,session=editor.session,data=session.getParentFoldRangeData(row,!0),range=data.range||data.firstRange;if(range){var row=range.start.row,fold=session.getFoldAt(row,session.getLine(row).length,1);fold?session.removeFold(fold):(session.addFold(\"...\",range),editor.renderer.scrollCursorIntoView({row:range.start.row,column:0}))}e.stop()}})}exports.FoldHandler=FoldHandler}),ace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"],function(acequire,exports){var keyUtil=acequire(\"../lib/keys\"),event=acequire(\"../lib/event\"),KeyBinding=function(editor){this.$editor=editor,this.$data={},this.$handlers=[],this.setDefaultHandler(editor.commands)};(function(){this.setDefaultHandler=function(kb){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=kb,this.addKeyboardHandler(kb,0),this.$data={editor:this.$editor}},this.setKeyboardHandler=function(kb){var h=this.$handlers;if(h[h.length-1]!=kb){for(;h[h.length-1]&&h[h.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(h[h.length-1]);this.addKeyboardHandler(kb,1)}},this.addKeyboardHandler=function(kb,pos){if(kb){var i=this.$handlers.indexOf(kb);-1!=i&&this.$handlers.splice(i,1),void 0==pos?this.$handlers.push(kb):this.$handlers.splice(pos,0,kb),-1==i&&kb.attach&&kb.attach(this.$editor)}},this.removeKeyboardHandler=function(kb){var i=this.$handlers.indexOf(kb);return-1==i?!1:(this.$handlers.splice(i,1),kb.detach&&kb.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.$callKeyboardHandlers=function(hashId,keyString,keyCode,e){for(var toExecute,success=!1,commands=this.$editor.commands,i=this.$handlers.length;i--&&(toExecute=this.$handlers[i].handleKeyboard(this.$data,hashId,keyString,keyCode,e),!(toExecute&&toExecute.command&&(success=\"null\"==toExecute.command?1!=toExecute.passEvent:commands.exec(toExecute.command,this.$editor,toExecute.args,e),success&&e&&-1!=hashId&&event.stopEvent(e),success))););return success},this.onCommandKey=function(e,hashId,keyCode){var keyString=keyUtil.keyCodeToString(keyCode);this.$callKeyboardHandlers(hashId,keyString,keyCode,e)},this.onTextInput=function(text){var success=this.$callKeyboardHandlers(-1,text);success||this.$editor.commands.exec(\"insertstring\",this.$editor,text)}}).call(KeyBinding.prototype),exports.KeyBinding=KeyBinding}),ace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),lang=acequire(\"./lib/lang\"),config=acequire(\"./config\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Selection=acequire(\"./selection\").Selection,TextMode=acequire(\"./mode/text\").Mode,Range=acequire(\"./range\").Range,Document=acequire(\"./document\").Document,BackgroundTokenizer=acequire(\"./background_tokenizer\").BackgroundTokenizer,SearchHighlight=acequire(\"./search_highlight\").SearchHighlight,EditSession=function(text,mode){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join(\"\\n\")},this.on(\"changeFold\",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),\"object\"==typeof text&&text.getLine||(text=new Document(text)),this.setDocument(text),this.selection=new Selection(this),this.setMode(mode),config.resetOptions(this),config._emit(\"session\",this)};(function(){function isFullWidth(c){return 4352>c?!1:c>=4352&&4447>=c||c>=4515&&4519>=c||c>=4602&&4607>=c||c>=9001&&9002>=c||c>=11904&&11929>=c||c>=11931&&12019>=c||c>=12032&&12245>=c||c>=12272&&12283>=c||c>=12288&&12350>=c||c>=12353&&12438>=c||c>=12441&&12543>=c||c>=12549&&12589>=c||c>=12593&&12686>=c||c>=12688&&12730>=c||c>=12736&&12771>=c||c>=12784&&12830>=c||c>=12832&&12871>=c||c>=12880&&13054>=c||c>=13056&&19903>=c||c>=19968&&42124>=c||c>=42128&&42182>=c||c>=43360&&43388>=c||c>=44032&&55203>=c||c>=55216&&55238>=c||c>=55243&&55291>=c||c>=63744&&64255>=c||c>=65040&&65049>=c||c>=65072&&65106>=c||c>=65108&&65126>=c||c>=65128&&65131>=c||c>=65281&&65376>=c||c>=65504&&65510>=c}oop.implement(this,EventEmitter),this.setDocument=function(doc){this.doc&&this.doc.removeListener(\"change\",this.$onChange),this.doc=doc,doc.on(\"change\",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(docRow){if(!docRow)return this.$docRowCache=[],this.$screenRowCache=[],void 0;var l=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,docRow)+1;l>i&&(this.$docRowCache.splice(i,l),this.$screenRowCache.splice(i,l))},this.$getRowCacheIndex=function(cacheArray,val){for(var low=0,hi=cacheArray.length-1;hi>=low;){var mid=low+hi>>1,c=cacheArray[mid];if(val>c)low=mid+1;else{if(!(c>val))return mid;hi=mid-1}}return low-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var fold=e.data;this.$resetRowCache(fold.start.row)},this.onChange=function(e){var delta=e.data;this.$modified=!0,this.$resetRowCache(delta.range.start.row);var removedFolds=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||delta.ignore||(this.$deltasDoc.push(delta),removedFolds&&0!=removedFolds.length&&this.$deltasFold.push({action:\"removeFolds\",folds:removedFolds}),this.$informUndoManager.schedule()),this.bgTokenizer.$updateOnChange(delta),this._emit(\"change\",e)},this.setValue=function(text){this.doc.setValue(text),this.selection.moveCursorTo(0,0),this.selection.clearSelection(),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(row){return this.bgTokenizer.getState(row)},this.getTokens=function(row){return this.bgTokenizer.getTokens(row)},this.getTokenAt=function(row,column){var token,tokens=this.bgTokenizer.getTokens(row),c=0;if(null==column)i=tokens.length-1,c=this.getLine(row).length;else for(var i=0;tokens.length>i&&(c+=tokens[i].value.length,!(c>=column));i++);return(token=tokens[i])?(token.index=i,token.start=c-token.value.length,token):null},this.setUndoManager=function(undoManager){if(this.$undoManager=undoManager,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),undoManager){var self=this;this.$syncInformUndoManager=function(){self.$informUndoManager.cancel(),self.$deltasFold.length&&(self.$deltas.push({group:\"fold\",deltas:self.$deltasFold}),self.$deltasFold=[]),self.$deltasDoc.length&&(self.$deltas.push({group:\"doc\",deltas:self.$deltasDoc}),self.$deltasDoc=[]),self.$deltas.length>0&&undoManager.execute({action:\"aceupdate\",args:[self.$deltas,self]}),self.$deltas=[]},this.$informUndoManager=lang.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?lang.stringRepeat(\" \",this.getTabSize()):\"\t\"},this.setUseSoftTabs=function(val){this.setOption(\"useSoftTabs\",val)},this.getUseSoftTabs=function(){return this.$useSoftTabs},this.setTabSize=function(tabSize){this.setOption(\"tabSize\",tabSize)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(position){return this.$useSoftTabs&&0==position.column%this.$tabSize},this.$overwrite=!1,this.setOverwrite=function(overwrite){this.setOption(\"overwrite\",overwrite)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(row,className){this.$decorations[row]||(this.$decorations[row]=\"\"),this.$decorations[row]+=\" \"+className,this._emit(\"changeBreakpoint\",{})},this.removeGutterDecoration=function(row,className){this.$decorations[row]=(this.$decorations[row]||\"\").replace(\" \"+className,\"\"),this._emit(\"changeBreakpoint\",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(rows){this.$breakpoints=[];for(var i=0;rows.length>i;i++)this.$breakpoints[rows[i]]=\"ace_breakpoint\";this._emit(\"changeBreakpoint\",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._emit(\"changeBreakpoint\",{})},this.setBreakpoint=function(row,className){void 0===className&&(className=\"ace_breakpoint\"),className?this.$breakpoints[row]=className:delete this.$breakpoints[row],this._emit(\"changeBreakpoint\",{})},this.clearBreakpoint=function(row){delete this.$breakpoints[row],this._emit(\"changeBreakpoint\",{})},this.addMarker=function(range,clazz,type,inFront){var id=this.$markerId++,marker={range:range,type:type||\"line\",renderer:\"function\"==typeof type?type:null,clazz:clazz,inFront:!!inFront,id:id};return inFront?(this.$frontMarkers[id]=marker,this._emit(\"changeFrontMarker\")):(this.$backMarkers[id]=marker,this._emit(\"changeBackMarker\")),id},this.addDynamicMarker=function(marker,inFront){if(marker.update){var id=this.$markerId++;return marker.id=id,marker.inFront=!!inFront,inFront?(this.$frontMarkers[id]=marker,this._emit(\"changeFrontMarker\")):(this.$backMarkers[id]=marker,this._emit(\"changeBackMarker\")),marker}},this.removeMarker=function(markerId){var marker=this.$frontMarkers[markerId]||this.$backMarkers[markerId];if(marker){var markers=marker.inFront?this.$frontMarkers:this.$backMarkers;marker&&(delete markers[markerId],this._emit(marker.inFront?\"changeFrontMarker\":\"changeBackMarker\"))}},this.getMarkers=function(inFront){return inFront?this.$frontMarkers:this.$backMarkers},this.highlight=function(re){if(!this.$searchHighlight){var highlight=new SearchHighlight(null,\"ace_selected-word\",\"text\");this.$searchHighlight=this.addDynamicMarker(highlight)}this.$searchHighlight.setRegexp(re)},this.highlightLines=function(startRow,endRow,clazz,inFront){\"number\"!=typeof endRow&&(clazz=endRow,endRow=startRow),clazz||(clazz=\"ace_step\");var range=new Range(startRow,0,endRow,1/0);return range.id=this.addMarker(range,clazz,\"fullLine\",inFront),range},this.setAnnotations=function(annotations){this.$annotations=annotations,this._emit(\"changeAnnotation\",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r?\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\"},this.getWordRange=function(row,column){var line=this.getLine(row),inToken=!1;if(column>0&&(inToken=!!line.charAt(column-1).match(this.tokenRe)),inToken||(inToken=!!line.charAt(column).match(this.tokenRe)),inToken)var re=this.tokenRe;else if(/^\\s+$/.test(line.slice(column-1,column+1)))var re=/\\s/;else var re=this.nonTokenRe;var start=column;if(start>0){do start--;while(start>=0&&line.charAt(start).match(re));start++}for(var end=column;line.length>end&&line.charAt(end).match(re);)end++;return new Range(row,start,row,end)},this.getAWordRange=function(row,column){for(var wordRange=this.getWordRange(row,column),line=this.getLine(wordRange.end.row);line.charAt(wordRange.end.column).match(/[ \\t]/);)wordRange.end.column+=1;return wordRange},this.setNewLineMode=function(newLineMode){this.doc.setNewLineMode(newLineMode)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(useWorker){this.setOption(\"useWorker\",useWorker)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(e){var rows=e.data;this.bgTokenizer.start(rows.first),this._emit(\"tokenizerUpdate\",e)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(mode){if(mode&&\"object\"==typeof mode){if(mode.getTokenizer)return this.$onChangeMode(mode);var options=mode,path=options.path}else path=mode||\"ace/mode/text\";return this.$modes[\"ace/mode/text\"]||(this.$modes[\"ace/mode/text\"]=new TextMode),this.$modes[path]&&!options?this.$onChangeMode(this.$modes[path]):(this.$modeId=path,config.loadModule([\"mode\",path],function(m){return this.$modeId===path?this.$modes[path]&&!options?this.$onChangeMode(this.$modes[path]):(m&&m.Mode&&(m=new m.Mode(options),options||(this.$modes[path]=m,m.$id=path),this.$onChangeMode(m)),void 0):void 0}.bind(this)),this.$mode||this.$onChangeMode(this.$modes[\"ace/mode/text\"],!0),void 0)},this.$onChangeMode=function(mode,$isPlaceholder){if(this.$mode!==mode){this.$mode=mode,this.$stopWorker(),this.$useWorker&&this.$startWorker();var tokenizer=mode.getTokenizer();if(void 0!==tokenizer.addEventListener){var onReloadTokenizer=this.onReloadTokenizer.bind(this);tokenizer.addEventListener(\"update\",onReloadTokenizer)}if(this.bgTokenizer)this.bgTokenizer.setTokenizer(tokenizer);else{this.bgTokenizer=new BackgroundTokenizer(tokenizer);var _self=this;this.bgTokenizer.addEventListener(\"update\",function(e){_self._emit(\"tokenizerUpdate\",e)})}this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=mode.tokenRe,this.nonTokenRe=mode.nonTokenRe,$isPlaceholder||(this.$modeId=mode.$id,this.$setFolding(mode.foldingRules),this._emit(\"changeMode\"),this.bgTokenizer.start(0))}},this.$stopWorker=function(){this.$worker&&this.$worker.terminate(),this.$worker=null},this.$startWorker=function(){if(\"undefined\"==typeof Worker||acequire.noWorker)this.$worker=null;else try{this.$worker=this.$mode.createWorker(this)}catch(e){console.log(\"Could not load worker\"),console.log(e),this.$worker=null}},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(scrollTop){scrollTop=Math.round(Math.max(0,scrollTop)),this.$scrollTop===scrollTop||isNaN(scrollTop)||(this.$scrollTop=scrollTop,this._signal(\"changeScrollTop\",scrollTop))},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(scrollLeft){scrollLeft=Math.round(Math.max(0,scrollLeft)),this.$scrollLeft===scrollLeft||isNaN(scrollLeft)||(this.$scrollLeft=scrollLeft,this._signal(\"changeScrollLeft\",scrollLeft))},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.screenWidth},this.$computeWidth=function(force){if(this.$modified||force){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var lines=this.doc.getAllLines(),cache=this.$rowLengthCache,longestScreenLine=0,foldIndex=0,foldLine=this.$foldData[foldIndex],foldStart=foldLine?foldLine.start.row:1/0,len=lines.length,i=0;len>i;i++){if(i>foldStart){if(i=foldLine.end.row+1,i>=len)break;foldLine=this.$foldData[foldIndex++],foldStart=foldLine?foldLine.start.row:1/0}null==cache[i]&&(cache[i]=this.$getStringScreenWidth(lines[i])[0]),cache[i]>longestScreenLine&&(longestScreenLine=cache[i])}this.screenWidth=longestScreenLine}},this.getLine=function(row){return this.doc.getLine(row)},this.getLines=function(firstRow,lastRow){return this.doc.getLines(firstRow,lastRow)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(range){return this.doc.getTextRange(range||this.selection.getRange())},this.insert=function(position,text){return this.doc.insert(position,text)},this.remove=function(range){return this.doc.remove(range)},this.undoChanges=function(deltas,dontSelect){if(deltas.length){this.$fromUndo=!0;for(var lastUndoRange=null,i=deltas.length-1;-1!=i;i--){var delta=deltas[i];\"doc\"==delta.group?(this.doc.revertDeltas(delta.deltas),lastUndoRange=this.$getUndoSelection(delta.deltas,!0,lastUndoRange)):delta.deltas.forEach(function(foldDelta){this.addFolds(foldDelta.folds)},this)}return this.$fromUndo=!1,lastUndoRange&&this.$undoSelect&&!dontSelect&&this.selection.setSelectionRange(lastUndoRange),lastUndoRange}},this.redoChanges=function(deltas,dontSelect){if(deltas.length){this.$fromUndo=!0;for(var lastUndoRange=null,i=0;deltas.length>i;i++){var delta=deltas[i];\"doc\"==delta.group&&(this.doc.applyDeltas(delta.deltas),lastUndoRange=this.$getUndoSelection(delta.deltas,!1,lastUndoRange))}return this.$fromUndo=!1,lastUndoRange&&this.$undoSelect&&!dontSelect&&this.selection.setSelectionRange(lastUndoRange),lastUndoRange}},this.setUndoSelect=function(enable){this.$undoSelect=enable},this.$getUndoSelection=function(deltas,isUndo,lastUndoRange){function isInsert(delta){var insert=\"insertText\"===delta.action||\"insertLines\"===delta.action;return isUndo?!insert:insert}var range,point,delta=deltas[0],lastDeltaIsInsert=!1;isInsert(delta)?(range=delta.range.clone(),lastDeltaIsInsert=!0):(range=Range.fromPoints(delta.range.start,delta.range.start),lastDeltaIsInsert=!1);for(var i=1;deltas.length>i;i++)delta=deltas[i],isInsert(delta)?(point=delta.range.start,-1==range.compare(point.row,point.column)&&range.setStart(delta.range.start),point=delta.range.end,1==range.compare(point.row,point.column)&&range.setEnd(delta.range.end),lastDeltaIsInsert=!0):(point=delta.range.start,-1==range.compare(point.row,point.column)&&(range=Range.fromPoints(delta.range.start,delta.range.start)),lastDeltaIsInsert=!1);if(null!=lastUndoRange){var cmp=lastUndoRange.compareRange(range);1==cmp?range.setStart(lastUndoRange.start):-1==cmp&&range.setEnd(lastUndoRange.end)}return range},this.replace=function(range,text){return this.doc.replace(range,text)},this.moveText=function(fromRange,toPosition,copy){var text=this.getTextRange(fromRange),folds=this.getFoldsInRange(fromRange),toRange=Range.fromPoints(toPosition,toPosition);if(!copy){this.remove(fromRange);var rowDiff=fromRange.start.row-fromRange.end.row,collDiff=rowDiff?-fromRange.end.column:fromRange.start.column-fromRange.end.column;collDiff&&(toRange.start.row==fromRange.end.row&&toRange.start.column>fromRange.end.column&&(toRange.start.column+=collDiff),toRange.end.row==fromRange.end.row&&toRange.end.column>fromRange.end.column&&(toRange.end.column+=collDiff)),rowDiff&&toRange.start.row>=fromRange.end.row&&(toRange.start.row+=rowDiff,toRange.end.row+=rowDiff)}if(this.insert(toRange.start,text),folds.length){var oldStart=fromRange.start,newStart=toRange.start,rowDiff=newStart.row-oldStart.row,collDiff=newStart.column-oldStart.column;this.addFolds(folds.map(function(x){return x=x.clone(),x.start.row==oldStart.row&&(x.start.column+=collDiff),x.end.row==oldStart.row&&(x.end.column+=collDiff),x.start.row+=rowDiff,x.end.row+=rowDiff,x}))}return toRange},this.indentRows=function(startRow,endRow,indentString){indentString=indentString.replace(/\\t/g,this.getTabString());for(var row=startRow;endRow>=row;row++)this.insert({row:row,column:0},indentString)},this.outdentRows=function(range){for(var rowRange=range.collapseRows(),deleteRange=new Range(0,0,0,0),size=this.getTabSize(),i=rowRange.start.row;rowRange.end.row>=i;++i){var line=this.getLine(i);deleteRange.start.row=i,deleteRange.end.row=i;for(var j=0;size>j&&\" \"==line.charAt(j);++j);size>j&&\"\t\"==line.charAt(j)?(deleteRange.start.column=j,deleteRange.end.column=j+1):(deleteRange.start.column=0,deleteRange.end.column=j),this.remove(deleteRange)}},this.$moveLines=function(firstRow,lastRow,dir){if(firstRow=this.getRowFoldStart(firstRow),lastRow=this.getRowFoldEnd(lastRow),0>dir){var row=this.getRowFoldStart(firstRow+dir);if(0>row)return 0;var diff=row-firstRow}else if(dir>0){var row=this.getRowFoldEnd(lastRow+dir);if(row>this.doc.getLength()-1)return 0;var diff=row-lastRow}else{firstRow=this.$clipRowToDocument(firstRow),lastRow=this.$clipRowToDocument(lastRow);var diff=lastRow-firstRow+1}var range=new Range(firstRow,0,lastRow,Number.MAX_VALUE),folds=this.getFoldsInRange(range).map(function(x){return x=x.clone(),x.start.row+=diff,x.end.row+=diff,x}),lines=0==dir?this.doc.getLines(firstRow,lastRow):this.doc.removeLines(firstRow,lastRow);return this.doc.insertLines(firstRow+diff,lines),folds.length&&this.addFolds(folds),diff},this.moveLinesUp=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,-1)},this.moveLinesDown=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,1)},this.duplicateLines=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,0)},this.$clipRowToDocument=function(row){return Math.max(0,Math.min(row,this.doc.getLength()-1))},this.$clipColumnToRow=function(row,column){return 0>column?0:Math.min(this.doc.getLine(row).length,column)},this.$clipPositionToDocument=function(row,column){if(column=Math.max(0,column),0>row)row=0,column=0;else{var len=this.doc.getLength();row>=len?(row=len-1,column=this.doc.getLine(len-1).length):column=Math.min(this.doc.getLine(row).length,column)}return{row:row,column:column}},this.$clipRangeToDocument=function(range){0>range.start.row?(range.start.row=0,range.start.column=0):range.start.column=this.$clipColumnToRow(range.start.row,range.start.column);var len=this.doc.getLength()-1;return range.end.row>len?(range.end.row=len,range.end.column=this.doc.getLine(len).length):range.end.column=this.$clipColumnToRow(range.end.row,range.end.column),range},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(useWrapMode){if(useWrapMode!=this.$useWrapMode){if(this.$useWrapMode=useWrapMode,this.$modified=!0,this.$resetRowCache(0),useWrapMode){var len=this.getLength();this.$wrapData=[];for(var i=0;len>i;i++)this.$wrapData.push([]);this.$updateWrapData(0,len-1)}this._emit(\"changeWrapMode\")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(min,max){(this.$wrapLimitRange.min!==min||this.$wrapLimitRange.max!==max)&&(this.$wrapLimitRange.min=min,this.$wrapLimitRange.max=max,this.$modified=!0,this._emit(\"changeWrapMode\"))},this.adjustWrapLimit=function(desiredLimit,$printMargin){var limits=this.$wrapLimitRange;0>limits.max&&(limits={min:$printMargin,max:$printMargin});var wrapLimit=this.$constrainWrapLimit(desiredLimit,limits.min,limits.max);return wrapLimit!=this.$wrapLimit&&wrapLimit>1?(this.$wrapLimit=wrapLimit,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit(\"changeWrapLimit\")),!0):!1},this.$constrainWrapLimit=function(wrapLimit,min,max){return min&&(wrapLimit=Math.max(min,wrapLimit)),max&&(wrapLimit=Math.min(max,wrapLimit)),wrapLimit},this.getWrapLimit=function(){return this.$wrapLimit},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var len,useWrapMode=this.$useWrapMode,action=e.data.action,firstRow=e.data.range.start.row,lastRow=e.data.range.end.row,start=e.data.range.start,end=e.data.range.end,removedFolds=null;if(-1!=action.indexOf(\"Lines\")?(lastRow=\"insertLines\"==action?firstRow+e.data.lines.length:firstRow,len=e.data.lines?e.data.lines.length:lastRow-firstRow):len=lastRow-firstRow,this.$updating=!0,0!=len)if(-1!=action.indexOf(\"remove\")){this[useWrapMode?\"$wrapData\":\"$rowLengthCache\"].splice(firstRow,len);var foldLines=this.$foldData;removedFolds=this.getFoldsInRange(e.data.range),this.removeFolds(removedFolds);var foldLine=this.getFoldLine(end.row),idx=0;if(foldLine){foldLine.addRemoveChars(end.row,end.column,start.column-end.column),foldLine.shiftRow(-len);var foldLineBefore=this.getFoldLine(firstRow);foldLineBefore&&foldLineBefore!==foldLine&&(foldLineBefore.merge(foldLine),foldLine=foldLineBefore),idx=foldLines.indexOf(foldLine)+1\n}for(idx;foldLines.length>idx;idx++){var foldLine=foldLines[idx];foldLine.start.row>=end.row&&foldLine.shiftRow(-len)}lastRow=firstRow}else{var args;if(useWrapMode){args=[firstRow,0];for(var i=0;len>i;i++)args.push([]);this.$wrapData.splice.apply(this.$wrapData,args)}else args=Array(len),args.unshift(firstRow,0),this.$rowLengthCache.splice.apply(this.$rowLengthCache,args);var foldLines=this.$foldData,foldLine=this.getFoldLine(firstRow),idx=0;if(foldLine){var cmp=foldLine.range.compareInside(start.row,start.column);0==cmp?(foldLine=foldLine.split(start.row,start.column),foldLine.shiftRow(len),foldLine.addRemoveChars(lastRow,0,end.column-start.column)):-1==cmp&&(foldLine.addRemoveChars(firstRow,0,end.column-start.column),foldLine.shiftRow(len)),idx=foldLines.indexOf(foldLine)+1}for(idx;foldLines.length>idx;idx++){var foldLine=foldLines[idx];foldLine.start.row>=firstRow&&foldLine.shiftRow(len)}}else{len=Math.abs(e.data.range.start.column-e.data.range.end.column),-1!=action.indexOf(\"remove\")&&(removedFolds=this.getFoldsInRange(e.data.range),this.removeFolds(removedFolds),len=-len);var foldLine=this.getFoldLine(firstRow);foldLine&&foldLine.addRemoveChars(firstRow,start.column,len)}return useWrapMode&&this.$wrapData.length!=this.doc.getLength()&&console.error(\"doc.getLength() and $wrapData.length have to be the same!\"),this.$updating=!1,useWrapMode?this.$updateWrapData(firstRow,lastRow):this.$updateRowLengthCache(firstRow,lastRow),removedFolds},this.$updateRowLengthCache=function(firstRow,lastRow){this.$rowLengthCache[firstRow]=null,this.$rowLengthCache[lastRow]=null},this.$updateWrapData=function(firstRow,lastRow){var tokens,foldLine,lines=this.doc.getAllLines(),tabSize=this.getTabSize(),wrapData=this.$wrapData,wrapLimit=this.$wrapLimit,row=firstRow;for(lastRow=Math.min(lastRow,lines.length-1);lastRow>=row;)if(foldLine=this.getFoldLine(row,foldLine)){for(tokens=[],foldLine.walk(function(placeholder,row,column,lastColumn){var walkTokens;if(null!=placeholder){walkTokens=this.$getDisplayTokens(placeholder,tokens.length),walkTokens[0]=PLACEHOLDER_START;for(var i=1;walkTokens.length>i;i++)walkTokens[i]=PLACEHOLDER_BODY}else walkTokens=this.$getDisplayTokens(lines[row].substring(lastColumn,column),tokens.length);tokens=tokens.concat(walkTokens)}.bind(this),foldLine.end.row,lines[foldLine.end.row].length+1);0!=tokens.length&&tokens[tokens.length-1]>=SPACE;)tokens.pop();wrapData[foldLine.start.row]=this.$computeWrapSplits(tokens,wrapLimit,tabSize),row=foldLine.end.row+1}else tokens=this.$getDisplayTokens(lang.stringTrimRight(lines[row])),wrapData[row]=this.$computeWrapSplits(tokens,wrapLimit,tabSize),row++};var CHAR=1,CHAR_EXT=2,PLACEHOLDER_START=3,PLACEHOLDER_BODY=4,PUNCTUATION=9,SPACE=10,TAB=11,TAB_SPACE=12;this.$computeWrapSplits=function(tokens,wrapLimit){function addSplit(screenPos){var displayed=tokens.slice(lastSplit,screenPos),len=displayed.length;displayed.join(\"\").replace(/12/g,function(){len-=1}).replace(/2/g,function(){len-=1}),lastDocSplit+=len,splits.push(lastDocSplit),lastSplit=screenPos}if(0==tokens.length)return[];for(var splits=[],displayLength=tokens.length,lastSplit=0,lastDocSplit=0;displayLength-lastSplit>wrapLimit;){var split=lastSplit+wrapLimit;if(tokens[split]>=SPACE){for(;tokens[split]>=SPACE;)split++;addSplit(split)}else if(tokens[split]!=PLACEHOLDER_START&&tokens[split]!=PLACEHOLDER_BODY){for(var minSplit=Math.max(split-10,lastSplit-1);split>minSplit&&PLACEHOLDER_START>tokens[split];)split--;for(;split>minSplit&&tokens[split]==PUNCTUATION;)split--;split>minSplit?addSplit(++split):(split=lastSplit+wrapLimit,addSplit(split))}else{for(split;split!=lastSplit-1&&tokens[split]!=PLACEHOLDER_START;split--);if(split>lastSplit){addSplit(split);continue}for(split=lastSplit+wrapLimit;tokens.length>split&&tokens[split]==PLACEHOLDER_BODY;split++);if(split==tokens.length)break;addSplit(split)}}return splits},this.$getDisplayTokens=function(str,offset){var tabSize,arr=[];offset=offset||0;for(var i=0;str.length>i;i++){var c=str.charCodeAt(i);if(9==c){tabSize=this.getScreenTabSize(arr.length+offset),arr.push(TAB);for(var n=1;tabSize>n;n++)arr.push(TAB_SPACE)}else 32==c?arr.push(SPACE):c>39&&48>c||c>57&&64>c?arr.push(PUNCTUATION):c>=4352&&isFullWidth(c)?arr.push(CHAR,CHAR_EXT):arr.push(CHAR)}return arr},this.$getStringScreenWidth=function(str,maxScreenColumn,screenColumn){if(0==maxScreenColumn)return[0,0];null==maxScreenColumn&&(maxScreenColumn=1/0),screenColumn=screenColumn||0;var c,column;for(column=0;str.length>column&&(c=str.charCodeAt(column),screenColumn+=9==c?this.getScreenTabSize(screenColumn):c>=4352&&isFullWidth(c)?2:1,!(screenColumn>maxScreenColumn));column++);return[screenColumn,column]},this.getRowLength=function(row){return this.$useWrapMode&&this.$wrapData[row]?this.$wrapData[row].length+1:1},this.getScreenLastRowColumn=function(screenRow){var pos=this.screenToDocumentPosition(screenRow,Number.MAX_VALUE);return this.documentToScreenColumn(pos.row,pos.column)},this.getDocumentLastRowColumn=function(docRow,docColumn){var screenRow=this.documentToScreenRow(docRow,docColumn);return this.getScreenLastRowColumn(screenRow)},this.getDocumentLastRowColumnPosition=function(docRow,docColumn){var screenRow=this.documentToScreenRow(docRow,docColumn);return this.screenToDocumentPosition(screenRow,Number.MAX_VALUE/10)},this.getRowSplitData=function(row){return this.$useWrapMode?this.$wrapData[row]:void 0},this.getScreenTabSize=function(screenColumn){return this.$tabSize-screenColumn%this.$tabSize},this.screenToDocumentRow=function(screenRow,screenColumn){return this.screenToDocumentPosition(screenRow,screenColumn).row},this.screenToDocumentColumn=function(screenRow,screenColumn){return this.screenToDocumentPosition(screenRow,screenColumn).column},this.screenToDocumentPosition=function(screenRow,screenColumn){if(0>screenRow)return{row:0,column:0};var line,column,docRow=0,docColumn=0,row=0,rowLength=0,rowCache=this.$screenRowCache,i=this.$getRowCacheIndex(rowCache,screenRow),l=rowCache.length;if(l&&i>=0)var row=rowCache[i],docRow=this.$docRowCache[i],doCache=screenRow>rowCache[l-1];else var doCache=!l;for(var maxRow=this.getLength()-1,foldLine=this.getNextFoldLine(docRow),foldStart=foldLine?foldLine.start.row:1/0;screenRow>=row&&(rowLength=this.getRowLength(docRow),!(row+rowLength-1>=screenRow||docRow>=maxRow));)row+=rowLength,docRow++,docRow>foldStart&&(docRow=foldLine.end.row+1,foldLine=this.getNextFoldLine(docRow,foldLine),foldStart=foldLine?foldLine.start.row:1/0),doCache&&(this.$docRowCache.push(docRow),this.$screenRowCache.push(row));if(foldLine&&docRow>=foldLine.start.row)line=this.getFoldDisplayLine(foldLine),docRow=foldLine.start.row;else{if(screenRow>=row+rowLength||docRow>maxRow)return{row:maxRow,column:this.getLine(maxRow).length};line=this.getLine(docRow),foldLine=null}if(this.$useWrapMode){var splits=this.$wrapData[docRow];splits&&(column=splits[screenRow-row],screenRow>row&&splits.length&&(docColumn=splits[screenRow-row-1]||splits[splits.length-1],line=line.substring(docColumn)))}return docColumn+=this.$getStringScreenWidth(line,screenColumn)[1],this.$useWrapMode&&docColumn>=column&&(docColumn=column-1),foldLine?foldLine.idxToPosition(docColumn):{row:docRow,column:docColumn}},this.documentToScreenPosition=function(docRow,docColumn){if(docColumn===void 0)var pos=this.$clipPositionToDocument(docRow.row,docRow.column);else pos=this.$clipPositionToDocument(docRow,docColumn);docRow=pos.row,docColumn=pos.column;var screenRow=0,foldStartRow=null,fold=null;fold=this.getFoldAt(docRow,docColumn,1),fold&&(docRow=fold.start.row,docColumn=fold.start.column);var rowEnd,row=0,rowCache=this.$docRowCache,i=this.$getRowCacheIndex(rowCache,docRow),l=rowCache.length;if(l&&i>=0)var row=rowCache[i],screenRow=this.$screenRowCache[i],doCache=docRow>rowCache[l-1];else var doCache=!l;for(var foldLine=this.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;docRow>row;){if(row>=foldStart){if(rowEnd=foldLine.end.row+1,rowEnd>docRow)break;foldLine=this.getNextFoldLine(rowEnd,foldLine),foldStart=foldLine?foldLine.start.row:1/0}else rowEnd=row+1;screenRow+=this.getRowLength(row),row=rowEnd,doCache&&(this.$docRowCache.push(row),this.$screenRowCache.push(screenRow))}var textLine=\"\";if(foldLine&&row>=foldStart?(textLine=this.getFoldDisplayLine(foldLine,docRow,docColumn),foldStartRow=foldLine.start.row):(textLine=this.getLine(docRow).substring(0,docColumn),foldStartRow=docRow),this.$useWrapMode){for(var wrapRow=this.$wrapData[foldStartRow],screenRowOffset=0;textLine.length>=wrapRow[screenRowOffset];)screenRow++,screenRowOffset++;textLine=textLine.substring(wrapRow[screenRowOffset-1]||0,textLine.length)}return{row:screenRow,column:this.$getStringScreenWidth(textLine)[0]}},this.documentToScreenColumn=function(row,docColumn){return this.documentToScreenPosition(row,docColumn).column},this.documentToScreenRow=function(docRow,docColumn){return this.documentToScreenPosition(docRow,docColumn).row},this.getScreenLength=function(){var screenRows=0,fold=null;if(this.$useWrapMode)for(var lastRow=this.$wrapData.length,row=0,i=0,fold=this.$foldData[i++],foldStart=fold?fold.start.row:1/0;lastRow>row;)screenRows+=this.$wrapData[row].length+1,row++,row>foldStart&&(row=fold.end.row+1,fold=this.$foldData[i++],foldStart=fold?fold.start.row:1/0);else{screenRows=this.getLength();for(var foldData=this.$foldData,i=0;foldData.length>i;i++)fold=foldData[i],screenRows-=fold.end.row-fold.start.row}return screenRows}}).call(EditSession.prototype),acequire(\"./edit_session/folding\").Folding.call(EditSession.prototype),acequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype),config.defineOptions(EditSession.prototype,\"session\",{wrap:{set:function(value){if(value&&\"off\"!=value?\"free\"==value?value=!0:\"printMargin\"==value?value=-1:\"string\"==typeof value&&(value=parseInt(value,10)||!1):value=!1,this.$wrap!=value){if(value){var col=\"number\"==typeof value?value:null;this.setWrapLimitRange(col,col),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1);this.$wrap=value}},get:function(){return this.getUseWrapMode()?this.getWrapLimitRange().min||\"free\":\"off\"},handlesSet:!0},firstLineNumber:{set:function(){this._emit(\"changeBreakpoint\")},initialValue:1},useWorker:{set:function(useWorker){this.$useWorker=useWorker,this.$stopWorker(),useWorker&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(tabSize){isNaN(tabSize)||this.$tabSize===tabSize||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=tabSize,this._emit(\"changeTabSize\"))},initialValue:4,handlesSet:!0},overwrite:{set:function(){this._emit(\"changeOverwrite\")},initialValue:!1},newLineMode:{set:function(val){this.doc.setNewLineMode(val)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0}}),exports.EditSession=EditSession}),ace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),lang=acequire(\"./lib/lang\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Selection=function(session){this.session=session,this.doc=session.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var self=this;this.lead.on(\"change\",function(e){self._emit(\"changeCursor\"),self.$isEmpty||self._emit(\"changeSelection\"),self.$keepDesiredColumnOnChange||e.old.column==e.value.column||(self.$desiredColumn=null)}),this.selectionAnchor.on(\"change\",function(){self.$isEmpty||self._emit(\"changeSelection\")})};(function(){oop.implement(this,EventEmitter),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(row,column){this.anchor.setPosition(row,column),this.$isEmpty&&(this.$isEmpty=!1,this._emit(\"changeSelection\"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(columns){if(this.$isEmpty)return this.moveCursorTo(this.lead.row,this.lead.column+columns),void 0;var anchor=this.getSelectionAnchor(),lead=this.getSelectionLead(),isBackwards=this.isBackwards();isBackwards&&0===anchor.column||this.setSelectionAnchor(anchor.row,anchor.column+columns),(isBackwards||0!==lead.column)&&this.$moveSelection(function(){this.moveCursorTo(lead.row,lead.column+columns)})},this.isBackwards=function(){var anchor=this.anchor,lead=this.lead;return anchor.row>lead.row||anchor.row==lead.row&&anchor.column>lead.column},this.getRange=function(){var anchor=this.anchor,lead=this.lead;return this.isEmpty()?Range.fromPoints(lead,lead):this.isBackwards()?Range.fromPoints(lead,anchor):Range.fromPoints(anchor,lead)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit(\"changeSelection\"))},this.selectAll=function(){var lastRow=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(lastRow,this.doc.getLine(lastRow).length)},this.setRange=this.setSelectionRange=function(range,reverse){reverse?(this.setSelectionAnchor(range.end.row,range.end.column),this.selectTo(range.start.row,range.start.column)):(this.setSelectionAnchor(range.start.row,range.start.column),this.selectTo(range.end.row,range.end.column)),this.$desiredColumn=null},this.$moveSelection=function(mover){var lead=this.lead;this.$isEmpty&&this.setSelectionAnchor(lead.row,lead.column),mover.call(this)},this.selectTo=function(row,column){this.$moveSelection(function(){this.moveCursorTo(row,column)})},this.selectToPosition=function(pos){this.$moveSelection(function(){this.moveCursorToPosition(pos)})},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(row,column){if(column===void 0){var cursor=row||this.lead;row=cursor.row,column=cursor.column}return this.session.getWordRange(row,column)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var cursor=this.getCursor(),range=this.session.getAWordRange(cursor.row,cursor.column);this.setSelectionRange(range)},this.getLineRange=function(row,excludeLastChar){var rowEnd,rowStart=\"number\"==typeof row?row:this.lead.row,foldLine=this.session.getFoldLine(rowStart);return foldLine?(rowStart=foldLine.start.row,rowEnd=foldLine.end.row):rowEnd=rowStart,excludeLastChar?new Range(rowStart,0,rowEnd,this.session.getLine(rowEnd).length):new Range(rowStart,0,rowEnd+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var fold,cursor=this.lead.getPosition();if(fold=this.session.getFoldAt(cursor.row,cursor.column,-1))this.moveCursorTo(fold.start.row,fold.start.column);else if(0==cursor.column)cursor.row>0&&this.moveCursorTo(cursor.row-1,this.doc.getLine(cursor.row-1).length);else{var tabSize=this.session.getTabSize();this.session.isTabStop(cursor)&&this.doc.getLine(cursor.row).slice(cursor.column-tabSize,cursor.column).split(\" \").length-1==tabSize?this.moveCursorBy(0,-tabSize):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var fold,cursor=this.lead.getPosition();if(fold=this.session.getFoldAt(cursor.row,cursor.column,1))this.moveCursorTo(fold.end.row,fold.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row\u003Cthis.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0);else{var tabSize=this.session.getTabSize(),cursor=this.lead;this.session.isTabStop(cursor)&&this.doc.getLine(cursor.row).slice(cursor.column,cursor.column+tabSize).split(\" \").length-1==tabSize?this.moveCursorBy(0,tabSize):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var row=this.lead.row,column=this.lead.column,screenRow=this.session.documentToScreenRow(row,column),firstColumnPosition=this.session.screenToDocumentPosition(screenRow,0),beforeCursor=this.session.getDisplayLine(row,null,firstColumnPosition.row,firstColumnPosition.column),leadingSpace=beforeCursor.match(/^\\s*/);leadingSpace[0].length==column||this.session.$useEmacsStyleLineStart||(firstColumnPosition.column+=leadingSpace[0].length),this.moveCursorToPosition(firstColumnPosition)},this.moveCursorLineEnd=function(){var lead=this.lead,lineEnd=this.session.getDocumentLastRowColumnPosition(lead.row,lead.column);if(this.lead.column==lineEnd.column){var line=this.session.getLine(lineEnd.row);if(lineEnd.column==line.length){var textEnd=line.search(/\\s+$/);textEnd>0&&(lineEnd.column=textEnd)}}this.moveCursorTo(lineEnd.row,lineEnd.column)},this.moveCursorFileEnd=function(){var row=this.doc.getLength()-1,column=this.doc.getLine(row).length;this.moveCursorTo(row,column)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var match,row=this.lead.row,column=this.lead.column,line=this.doc.getLine(row),rightOfCursor=line.substring(column);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var fold=this.session.getFoldAt(row,column,1);return fold?(this.moveCursorTo(fold.end.row,fold.end.column),void 0):((match=this.session.nonTokenRe.exec(rightOfCursor))&&(column+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,rightOfCursor=line.substring(column)),column>=line.length?(this.moveCursorTo(row,line.length),this.moveCursorRight(),this.doc.getLength()-1>row&&this.moveCursorWordRight(),void 0):((match=this.session.tokenRe.exec(rightOfCursor))&&(column+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(row,column),void 0))},this.moveCursorLongWordLeft=function(){var fold,row=this.lead.row,column=this.lead.column;if(fold=this.session.getFoldAt(row,column,-1))return this.moveCursorTo(fold.start.row,fold.start.column),void 0;var str=this.session.getFoldStringAt(row,column,-1);null==str&&(str=this.doc.getLine(row).substring(0,column));var match,leftOfCursor=lang.stringReverse(str);return this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0,(match=this.session.nonTokenRe.exec(leftOfCursor))&&(column-=this.session.nonTokenRe.lastIndex,leftOfCursor=leftOfCursor.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0),0>=column?(this.moveCursorTo(row,0),this.moveCursorLeft(),row>0&&this.moveCursorWordLeft(),void 0):((match=this.session.tokenRe.exec(leftOfCursor))&&(column-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(row,column),void 0)},this.$shortWordEndIndex=function(rightOfCursor){var match,ch,index=0,whitespaceRe=/\\s/,tokenRe=this.session.tokenRe;if(tokenRe.lastIndex=0,match=this.session.tokenRe.exec(rightOfCursor))index=this.session.tokenRe.lastIndex;else{for(;(ch=rightOfCursor[index])&&whitespaceRe.test(ch);)index++;if(1>=index)for(tokenRe.lastIndex=0;(ch=rightOfCursor[index])&&!tokenRe.test(ch);)if(tokenRe.lastIndex=0,index++,whitespaceRe.test(ch)){if(index>2){index--;break}for(;(ch=rightOfCursor[index])&&whitespaceRe.test(ch);)index++;if(index>2)break}}return tokenRe.lastIndex=0,index},this.moveCursorShortWordRight=function(){var row=this.lead.row,column=this.lead.column,line=this.doc.getLine(row),rightOfCursor=line.substring(column),fold=this.session.getFoldAt(row,column,1);if(fold)return this.moveCursorTo(fold.end.row,fold.end.column);if(column==line.length){var l=this.doc.getLength();do row++,rightOfCursor=this.doc.getLine(row);while(l>row&&/^\\s*$/.test(rightOfCursor));/^\\s+/.test(rightOfCursor)||(rightOfCursor=\"\"),column=0}var index=this.$shortWordEndIndex(rightOfCursor);this.moveCursorTo(row,column+index)},this.moveCursorShortWordLeft=function(){var fold,row=this.lead.row,column=this.lead.column;if(fold=this.session.getFoldAt(row,column,-1))return this.moveCursorTo(fold.start.row,fold.start.column);var line=this.session.getLine(row).substring(0,column);if(0==column){do row--,line=this.doc.getLine(row);while(row>0&&/^\\s*$/.test(line));column=line.length,/\\s+$/.test(line)||(line=\"\")}var leftOfCursor=lang.stringReverse(line),index=this.$shortWordEndIndex(leftOfCursor);return this.moveCursorTo(row,column-index)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(rows,chars){var screenPos=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===chars&&(this.$desiredColumn?screenPos.column=this.$desiredColumn:this.$desiredColumn=screenPos.column);var docPos=this.session.screenToDocumentPosition(screenPos.row+rows,screenPos.column);this.moveCursorTo(docPos.row,docPos.column+chars,0===chars)},this.moveCursorToPosition=function(position){this.moveCursorTo(position.row,position.column)},this.moveCursorTo=function(row,column,keepDesiredColumn){var fold=this.session.getFoldAt(row,column,1);fold&&(row=fold.start.row,column=fold.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(row,column),this.$keepDesiredColumnOnChange=!1,keepDesiredColumn||(this.$desiredColumn=null)},this.moveCursorToScreen=function(row,column,keepDesiredColumn){var pos=this.session.screenToDocumentPosition(row,column);this.moveCursorTo(pos.row,pos.column,keepDesiredColumn)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(range){this.setSelectionRange(range,range.cursor==range.start),this.$desiredColumn=range.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(range){var r=this.getRange();return range?(range.start.column=r.start.column,range.start.row=r.start.row,range.end.column=r.end.column,range.end.row=r.end.row):range=r,range.cursor=this.isBackwards()?range.start:range.end,range.desiredColumn=this.$desiredColumn,range}}).call(Selection.prototype),exports.Selection=Selection}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour\",\"ace/unicode\",\"ace/lib/lang\"],function(acequire,exports){var Tokenizer=acequire(\"../tokenizer\").Tokenizer,TextHighlightRules=acequire(\"./text_highlight_rules\").TextHighlightRules,Behaviour=acequire(\"./behaviour\").Behaviour,unicode=acequire(\"../unicode\"),lang=acequire(\"../lib/lang\"),Mode=function(){this.$tokenizer=new Tokenizer((new TextHighlightRules).getRules()),this.$behaviour=new Behaviour};(function(){this.tokenRe=RegExp(\"^[\"+unicode.packages.L+unicode.packages.Mn+unicode.packages.Mc+unicode.packages.Nd+unicode.packages.Pc+\"\\\\$_]+\",\"g\"),this.nonTokenRe=RegExp(\"^(?:[^\"+unicode.packages.L+unicode.packages.Mn+unicode.packages.Mc+unicode.packages.Nd+unicode.packages.Pc+\"\\\\$_]|s])+\",\"g\"),this.getTokenizer=function(){return this.$tokenizer},this.toggleCommentLines=function(state,session,startRow,endRow){var regexpStart,lineCommentStart,doc=session.doc;if(!this.lineCommentStart)return!1;Array.isArray(this.lineCommentStart)?(regexpStart=this.lineCommentStart.map(lang.escapeRegExp).join(\"|\"),lineCommentStart=this.lineCommentStart[0]):(regexpStart=lang.escapeRegExp(this.lineCommentStart),lineCommentStart=this.lineCommentStart),regexpStart=RegExp(\"^\\\\s*(?:\"+regexpStart+\") ?\");for(var removeComment=!0,minSpace=1/0,indentations=[],i=startRow;endRow>=i;i++){var line=doc.getLine(i),indent=line.search(/\\S|$/);indentations[i]=indent,minSpace>indent&&(minSpace=indent),removeComment&&!regexpStart.test(line)&&(removeComment=!1)}if(removeComment)for(var i=startRow;endRow>=i;i++){var line=doc.getLine(i),m=line.match(regexpStart);doc.removeInLine(i,indentations[i],m[0].length)}else{lineCommentStart+=\" \";for(var i=startRow;endRow>=i;i++)doc.insertInLine({row:i,column:minSpace},lineCommentStart)}},this.getNextLineIndent=function(state,line){return this.$getIndent(line)},this.checkOutdent=function(){return!1},this.autoOutdent=function(){},this.$getIndent=function(line){return line.match(/^\\s*/)[0]},this.createWorker=function(){return null},this.createModeDelegates=function(mapping){if(this.$embeds){this.$modes={};for(var i=0;this.$embeds.length>i;i++)mapping[this.$embeds[i]]&&(this.$modes[this.$embeds[i]]=new mapping[this.$embeds[i]]);for(var delegations=[\"toggleCommentLines\",\"getNextLineIndent\",\"checkOutdent\",\"autoOutdent\",\"transformAction\"],i=0;delegations.length>i;i++)(function(scope){var functionName=delegations[i],defaultHandler=scope[functionName];scope[delegations[i]]=function(){return this.$delegator(functionName,arguments,defaultHandler)}})(this)}},this.$delegator=function(method,args,defaultHandler){for(var state=args[0],i=0;this.$embeds.length>i;i++)if(this.$modes[this.$embeds[i]]){var split=state.split(this.$embeds[i]);if(!split[0]&&split[1]){args[0]=split[1];var mode=this.$modes[this.$embeds[i]];return mode[method].apply(mode,args)}}var ret=defaultHandler.apply(this,args);return defaultHandler?ret:void 0},this.transformAction=function(state,action){if(this.$behaviour){var behaviours=this.$behaviour.getBehaviours();for(var key in behaviours)if(behaviours[key][action]){var ret=behaviours[key][action].apply(this,arguments);if(ret)return ret}}}}).call(Mode.prototype),exports.Mode=Mode}),ace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var MAX_TOKEN_COUNT=1e3,Tokenizer=function(rules){this.states=rules,this.regExps={},this.matchMappings={};for(var key in this.states){for(var state=this.states[key],ruleRegExps=[],matchTotal=0,mapping=this.matchMappings[key]={defaultToken:\"text\"},flag=\"g\",i=0;state.length>i;i++){var rule=state[i];if(rule.defaultToken&&(mapping.defaultToken=rule.defaultToken),rule.caseInsensitive&&(flag=\"gi\"),null!=rule.regex){rule.regex instanceof RegExp&&(rule.regex=(\"\"+rule.regex).slice(1,-1));var adjustedregex=rule.regex,matchcount=RegExp(\"(?:(\"+adjustedregex+\")|(.))\").exec(\"a\").length-2;if(Array.isArray(rule.token))if(1==rule.token.length||1==matchcount)rule.token=rule.token[0];else{if(matchcount-1!=rule.token.length)throw Error(\"number of classes and regexp groups in '\"+rule.token+\"'\\n'\"+rule.regex+\"' doesn't match\\n\"+(matchcount-1)+\"!=\"+rule.token.length);rule.tokenArray=rule.token,rule.onMatch=this.$arrayTokens}else\"function\"!=typeof rule.token||rule.onMatch||(rule.onMatch=matchcount>1?this.$applyToken:rule.token);matchcount>1&&(/\\\\\\d/.test(rule.regex)?adjustedregex=rule.regex.replace(/\\\\([0-9]+)/g,function(match,digit){return\"\\\\\"+(parseInt(digit,10)+matchTotal+1)}):(matchcount=1,adjustedregex=this.removeCapturingGroups(rule.regex)),rule.splitRegex||\"string\"==typeof rule.token||(rule.splitRegex=this.createSplitterRegexp(rule.regex,flag))),mapping[matchTotal]=i,matchTotal+=matchcount,ruleRegExps.push(adjustedregex),rule.onMatch||(rule.onMatch=null),rule.__proto__=null\n}}this.regExps[key]=RegExp(\"(\"+ruleRegExps.join(\")|(\")+\")|($)\",flag)}};(function(){this.$applyToken=function(str){var values=this.splitRegex.exec(str).slice(1),types=this.token.apply(this,values);if(\"string\"==typeof types)return[{type:types,value:str}];for(var tokens=[],i=0,l=types.length;l>i;i++)values[i]&&(tokens[tokens.length]={type:types[i],value:values[i]});return tokens},this.$arrayTokens=function(str){if(!str)return[];for(var values=this.splitRegex.exec(str),tokens=[],types=this.tokenArray,i=0,l=types.length;l>i;i++)values[i+1]&&(tokens[tokens.length]={type:types[i],value:values[i+1]});return tokens},this.removeCapturingGroups=function(src){var r=src.replace(/\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,function(x,y){return y?\"(?:\":x});return r},this.createSplitterRegexp=function(src,flag){if(-1!=src.indexOf(\"(?=\")){var stack=0,inChClass=!1,lastCapture={};src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g,function(m,esc,parenOpen,parenClose,square,index){return inChClass?inChClass=\"]\"!=square:square?inChClass=!0:parenClose?(stack==lastCapture.stack&&(lastCapture.end=index+1,lastCapture.stack=-1),stack--):parenOpen&&(stack++,1!=parenOpen.length&&(lastCapture.stack=stack,lastCapture.start=index)),m}),null!=lastCapture.end&&/^\\)*$/.test(src.substr(lastCapture.end))&&(src=src.substring(0,lastCapture.start)+src.substr(lastCapture.end))}return RegExp(src,(flag||\"\").replace(\"g\",\"\"))},this.getLineTokens=function(line,startState){if(startState&&\"string\"!=typeof startState){var stack=startState.slice(0);startState=stack[0]}else var stack=[];var currentState=startState||\"start\",state=this.states[currentState],mapping=this.matchMappings[currentState],re=this.regExps[currentState];re.lastIndex=0;for(var match,tokens=[],lastIndex=0,token={type:null,value:\"\"};match=re.exec(line);){var type=mapping.defaultToken,rule=null,value=match[0],index=re.lastIndex;if(index-value.length>lastIndex){var skipped=line.substring(lastIndex,index-value.length);token.type==type?token.value+=skipped:(token.type&&tokens.push(token),token={type:type,value:skipped})}for(var i=0;match.length-2>i;i++)if(void 0!==match[i+1]){rule=state[mapping[i]],type=rule.onMatch?rule.onMatch(value,currentState,stack):rule.token,rule.next&&(currentState=\"string\"==typeof rule.next?rule.next:rule.next(currentState,stack),state=this.states[currentState],state||(window.console&&console.error&&console.error(currentState,\"doesn't exist\"),currentState=\"start\",state=this.states[currentState]),mapping=this.matchMappings[currentState],lastIndex=index,re=this.regExps[currentState],re.lastIndex=index);break}if(value)if(\"string\"==typeof type)rule&&rule.merge===!1||token.type!==type?(token.type&&tokens.push(token),token={type:type,value:value}):token.value+=value;else if(type){token.type&&tokens.push(token),token={type:null,value:\"\"};for(var i=0;type.length>i;i++)tokens.push(type[i])}if(lastIndex==line.length)break;if(lastIndex=index,tokens.length>MAX_TOKEN_COUNT){token.value+=line.substr(lastIndex),currentState=\"start\";break}}return token.type&&tokens.push(token),{tokens:tokens,state:stack.length?stack:currentState}}}).call(Tokenizer.prototype),exports.Tokenizer=Tokenizer}),ace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"],function(acequire,exports){var lang=acequire(\"../lib/lang\"),TextHighlightRules=function(){this.$rules={start:[{token:\"empty_line\",regex:\"^$\"},{defaultToken:\"text\"}]}};(function(){this.addRules=function(rules,prefix){for(var key in rules){for(var state=rules[key],i=0;state.length>i;i++){var rule=state[i];rule.next&&(rule.next=prefix+rule.next)}this.$rules[prefix+key]=state}},this.getRules=function(){return this.$rules},this.embedRules=function(HighlightRules,prefix,escapeRules,states,append){var embedRules=(new HighlightRules).getRules();if(states)for(var i=0;states.length>i;i++)states[i]=prefix+states[i];else{states=[];for(var key in embedRules)states.push(prefix+key)}if(this.addRules(embedRules,prefix),escapeRules)for(var addRules=Array.prototype[append?\"push\":\"unshift\"],i=0;states.length>i;i++)addRules.apply(this.$rules[states[i]],lang.deepCopy(escapeRules));this.$embeds||(this.$embeds=[]),this.$embeds.push(prefix)},this.getEmbeds=function(){return this.$embeds};var pushState=function(currentState,stack){return\"start\"!=currentState&&stack.unshift(this.nextState,currentState),this.nextState},popState=function(currentState,stack){return stack[0]!==currentState?\"start\":(stack.shift(),stack.shift())};this.normalizeRules=function(){function processState(key){var state=rules[key];state.processed=!0;for(var i=0;state.length>i;i++){var rule=state[i];!rule.regex&&rule.start&&(rule.regex=rule.start,rule.next||(rule.next=[]),rule.next.push({defaultToken:rule.token},{token:rule.token+\".end\",regex:rule.end||rule.start,next:\"pop\"}),rule.token=rule.token+\".start\",rule.push=!0);var next=rule.next||rule.push;if(next&&Array.isArray(next)){var stateName=rule.stateName||rule.token+id++;rules[stateName]=next,rule.next=stateName,processState(stateName)}else\"pop\"==next&&(rule.next=popState);if(rule.push&&(rule.nextState=rule.next||rule.push,rule.next=pushState,delete rule.push),rule.rules)for(var r in rule.rules)rules[r]?rules[r].push&&rules[r].push.apply(rules[r],rule.rules[r]):rules[r]=rule.rules[r];if(rule.include||\"string\"==typeof rule)var includeName=rule.include||rule,toInsert=rules[includeName];else Array.isArray(rule)&&(toInsert=rule);if(toInsert){var args=[i,1].concat(toInsert);rule.noEscape&&(args=args.filter(function(x){return!x.next})),state.splice.apply(state,args),i--,toInsert=null}}}var id=0,rules=this.$rules;Object.keys(rules).forEach(processState)},this.createKeywordMapper=function(map,defaultToken,ignoreCase,splitChar){var keywords=Object.create(null);return Object.keys(map).forEach(function(className){var a=map[className];ignoreCase&&(a=a.toLowerCase());for(var list=a.split(splitChar||\"|\"),i=list.length;i--;)keywords[list[i]]=className}),map=null,ignoreCase?function(value){return keywords[value.toLowerCase()]||defaultToken}:function(value){return keywords[value]||defaultToken}},this.getKeywords=function(){return this.$keywords}}).call(TextHighlightRules.prototype),exports.TextHighlightRules=TextHighlightRules}),ace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var Behaviour=function(){this.$behaviours={}};(function(){this.add=function(name,action,callback){switch(void 0){case this.$behaviours:this.$behaviours={};case this.$behaviours[name]:this.$behaviours[name]={}}this.$behaviours[name][action]=callback},this.addBehaviours=function(behaviours){for(var key in behaviours)for(var action in behaviours[key])this.add(key,action,behaviours[key][action])},this.remove=function(name){this.$behaviours&&this.$behaviours[name]&&delete this.$behaviours[name]},this.inherit=function(mode,filter){if(\"function\"==typeof mode)var behaviours=(new mode).getBehaviours(filter);else var behaviours=mode.getBehaviours(filter);this.addBehaviours(behaviours)},this.getBehaviours=function(filter){if(filter){for(var ret={},i=0;filter.length>i;i++)this.$behaviours[filter[i]]&&(ret[filter[i]]=this.$behaviours[filter[i]]);return ret}return this.$behaviours}}).call(Behaviour.prototype),exports.Behaviour=Behaviour}),ace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"],function(acequire,exports){function addUnicodePackage(pack){var codePoint=/\\w{4}/g;for(var name in pack)exports.packages[name]=pack[name].replace(codePoint,\"\\\\u$&\")}exports.packages={},addUnicodePackage({L:\"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",Ll:\"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A\",Lu:\"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A\",Lt:\"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",Lm:\"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",Lo:\"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",M:\"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26\",Mn:\"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26\",Mc:\"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC\",Me:\"0488048906DE20DD-20E020E2-20E4A670-A672\",N:\"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nd:\"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nl:\"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",No:\"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",P:\"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65\",Pd:\"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",Ps:\"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",Pe:\"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",Pi:\"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",Pf:\"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",Pc:\"005F203F20402054FE33FE34FE4D-FE4FFF3F\",Po:\"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65\",S:\"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD\",Sm:\"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC\",Sc:\"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",Sk:\"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",So:\"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD\",Z:\"002000A01680180E2000-200A20282029202F205F3000\",Zs:\"002000A01680180E2000-200A202F205F3000\",Zl:\"2028\",Zp:\"2029\",C:\"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF\",Cc:\"0000-001F007F-009F\",Cf:\"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",Co:\"E000-F8FF\",Cs:\"D800-DFFF\",Cn:\"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF\"})\n}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(text){this.$lines=[],0==text.length?this.$lines=[\"\"]:Array.isArray(text)?this.insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode)},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){if(range.start.row==range.end.row)return this.$lines[range.start.row].substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row+1,range.end.row-1);return lines.unshift((this.$lines[range.start.row]||\"\").substring(range.start.column)),lines.push((this.$lines[range.end.row]||\"\").substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this.insertLines(position.row,lines),position=this.insertInLine(position,lastLine||\"\")),position},this.insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};if(lines.length>65535){var end=this.insertLines(row,lines.slice(65535));lines=lines.slice(0,65535)}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:\"insertLines\",range:range,lines:lines};return this._emit(\"change\",{data:delta}),end||range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:text};return this._emit(\"change\",{data:delta}),end},this.remove=function(range){if(range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this.removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:\"removeText\",range:range,text:removed};return this._emit(\"change\",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:\"removeLines\",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._emit(\"change\",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:\"removeText\",range:range,text:this.getNewLineCharacter()};this._emit(\"change\",{data:delta})},this.replace=function(range,text){if(0==text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"insertText\"==delta.action?this.insert(range.start,delta.text):\"removeLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"removeText\"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"insertText\"==delta.action?this.remove(range):\"removeLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"removeText\"==delta.action&&this.insert(range.start,delta.text)}},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length;return index+newlineLength*i+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.document=doc,column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column),this.$onChange=this.onChange.bind(this),doc.on(\"change\",this.$onChange)};(function(){oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;\"insertText\"===delta.action?start.row===row&&column>=start.column?start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):\"insertLines\"===delta.action?row>=start.row&&(row+=end.row-start.row):\"removeText\"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):\"removeLines\"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._emit(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,BackgroundTokenizer=function(tokenizer){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=tokenizer;var self=this;this.$worker=function(){if(self.running){for(var workerStart=new Date,startLine=self.currentLine,doc=self.doc,processedLines=0,len=doc.getLength();len>self.currentLine;){for(self.$tokenizeRow(self.currentLine);self.lines[self.currentLine];)self.currentLine++;if(processedLines++,0==processedLines%5&&new Date-workerStart>20)return self.fireUpdateEvent(startLine,self.currentLine-1),self.running=setTimeout(self.$worker,20),void 0}self.running=!1,self.fireUpdateEvent(startLine,len-1)}}};(function(){oop.implement(this,EventEmitter),this.setTokenizer=function(tokenizer){this.tokenizer=tokenizer,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(doc){this.doc=doc,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(firstRow,lastRow){var data={first:firstRow,last:lastRow};this._emit(\"update\",{data:data})},this.start=function(startRow){this.currentLine=Math.min(startRow||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.$updateOnChange=function(delta){var range=delta.range,startRow=range.start.row,len=range.end.row-startRow;if(0===len)this.lines[startRow]=null;else if(\"removeText\"==delta.action||\"removeLines\"==delta.action)this.lines.splice(startRow,len+1,null),this.states.splice(startRow,len+1,null);else{var args=Array(len+1);args.unshift(startRow,1),this.lines.splice.apply(this.lines,args),this.states.splice.apply(this.states,args)}this.currentLine=Math.min(startRow,this.currentLine,this.doc.getLength()),this.stop(),this.running=setTimeout(this.$worker,700)},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(row){return this.lines[row]||this.$tokenizeRow(row)},this.getState=function(row){return this.currentLine==row&&this.$tokenizeRow(row),this.states[row]||\"start\"},this.$tokenizeRow=function(row){var line=this.doc.getLine(row),state=this.states[row-1],data=this.tokenizer.getLineTokens(line,state,row);return this.states[row]+\"\"!=data.state+\"\"?(this.states[row]=data.state,this.lines[row+1]=null,this.currentLine>row+1&&(this.currentLine=row+1)):this.currentLine==row&&(this.currentLine=row+1),this.lines[row]=data.tokens}}).call(BackgroundTokenizer.prototype),exports.BackgroundTokenizer=BackgroundTokenizer}),ace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(acequire,exports){var lang=acequire(\"./lib/lang\");acequire(\"./lib/oop\");var Range=acequire(\"./range\").Range,SearchHighlight=function(regExp,clazz,type){this.setRegexp(regExp),this.clazz=clazz,this.type=type||\"text\"};(function(){this.MAX_RANGES=500,this.setRegexp=function(regExp){this.regExp+\"\"!=regExp+\"\"&&(this.regExp=regExp,this.cache=[])},this.update=function(html,markerLayer,session,config){if(this.regExp)for(var start=config.firstRow,end=config.lastRow,i=start;end>=i;i++){var ranges=this.cache[i];null==ranges&&(ranges=lang.getMatchOffsets(session.getLine(i),this.regExp),ranges.length>this.MAX_RANGES&&(ranges=ranges.slice(0,this.MAX_RANGES)),ranges=ranges.map(function(match){return new Range(i,match.offset,i,match.offset+match.length)}),this.cache[i]=ranges.length?ranges:\"\");for(var j=ranges.length;j--;)markerLayer.drawSingleLineMarker(html,ranges[j].toScreenRange(session),this.clazz,config,null,this.type)}}}).call(SearchHighlight.prototype),exports.SearchHighlight=SearchHighlight}),ace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"],function(acequire,exports){function Folding(){this.getFoldAt=function(row,column,side){var foldLine=this.getFoldLine(row);if(!foldLine)return null;for(var folds=foldLine.folds,i=0;folds.length>i;i++){var fold=folds[i];if(fold.range.contains(row,column)){if(1==side&&fold.range.isEnd(row,column))continue;if(-1==side&&fold.range.isStart(row,column))continue;return fold}}},this.getFoldsInRange=function(range){var start=range.start,end=range.end,foldLines=this.$foldData,foundFolds=[];start.column+=1,end.column-=1;for(var i=0;foldLines.length>i;i++){var cmp=foldLines[i].range.compareRange(range);if(2!=cmp){if(-2==cmp)break;for(var folds=foldLines[i].folds,j=0;folds.length>j;j++){var fold=folds[j];if(cmp=fold.range.compareRange(range),-2==cmp)break;if(2!=cmp){if(42==cmp)break;foundFolds.push(fold)}}}}return start.column-=1,end.column+=1,foundFolds},this.getAllFolds=function(){function addFold(fold){folds.push(fold)}for(var folds=[],foldLines=this.$foldData,i=0;foldLines.length>i;i++)for(var j=0;foldLines[i].folds.length>j;j++)addFold(foldLines[i].folds[j]);return folds},this.getFoldStringAt=function(row,column,trim,foldLine){if(foldLine=foldLine||this.getFoldLine(row),!foldLine)return null;for(var str,fold,lastFold={end:{column:0}},i=0;foldLine.folds.length>i;i++){fold=foldLine.folds[i];var cmp=fold.range.compareEnd(row,column);if(-1==cmp){str=this.getLine(fold.start.row).substring(lastFold.end.column,fold.start.column);break}if(0===cmp)return null;lastFold=fold}return str||(str=this.getLine(fold.start.row).substring(lastFold.end.column)),-1==trim?str.substring(0,column-lastFold.end.column):1==trim?str.substring(column-lastFold.end.column):str},this.getFoldLine=function(docRow,startFoldLine){var foldData=this.$foldData,i=0;for(startFoldLine&&(i=foldData.indexOf(startFoldLine)),-1==i&&(i=0),i;foldData.length>i;i++){var foldLine=foldData[i];if(docRow>=foldLine.start.row&&foldLine.end.row>=docRow)return foldLine;if(foldLine.end.row>docRow)return null}return null},this.getNextFoldLine=function(docRow,startFoldLine){var foldData=this.$foldData,i=0;for(startFoldLine&&(i=foldData.indexOf(startFoldLine)),-1==i&&(i=0),i;foldData.length>i;i++){var foldLine=foldData[i];if(foldLine.end.row>=docRow)return foldLine}return null},this.getFoldedRowCount=function(first,last){for(var foldData=this.$foldData,rowCount=last-first+1,i=0;foldData.length>i;i++){var foldLine=foldData[i],end=foldLine.end.row,start=foldLine.start.row;if(end>=last){last>start&&(start>=first?rowCount-=last-start:rowCount=0);break}end>=first&&(rowCount-=start>=first?end-start:end-first+1)}return rowCount},this.$addFoldLine=function(foldLine){return this.$foldData.push(foldLine),this.$foldData.sort(function(a,b){return a.start.row-b.start.row}),foldLine},this.addFold=function(placeholder,range){var fold,foldData=this.$foldData,added=!1;placeholder instanceof Fold?fold=placeholder:(fold=new Fold(range,placeholder),fold.collapseChildren=range.collapseChildren),this.$clipRangeToDocument(fold.range);var startRow=fold.start.row,startColumn=fold.start.column,endRow=fold.end.row,endColumn=fold.end.column;if(startRow==endRow&&2>endColumn-startColumn)throw\"The range has to be at least 2 characters width\";var startFold=this.getFoldAt(startRow,startColumn,1),endFold=this.getFoldAt(endRow,endColumn,-1);if(startFold&&endFold==startFold)return startFold.addSubFold(fold);if(startFold&&!startFold.range.isStart(startRow,startColumn)||endFold&&!endFold.range.isEnd(endRow,endColumn))throw\"A fold can't intersect already existing fold\"+fold.range+startFold.range;var folds=this.getFoldsInRange(fold.range);folds.length>0&&(this.removeFolds(folds),folds.forEach(function(subFold){fold.addSubFold(subFold)}));for(var i=0;foldData.length>i;i++){var foldLine=foldData[i];if(endRow==foldLine.start.row){foldLine.addFold(fold),added=!0;break}if(startRow==foldLine.end.row){if(foldLine.addFold(fold),added=!0,!fold.sameRow){var foldLineNext=foldData[i+1];if(foldLineNext&&foldLineNext.start.row==endRow){foldLine.merge(foldLineNext);break}}break}if(foldLine.start.row>=endRow)break}return added||(foldLine=this.$addFoldLine(new FoldLine(this.$foldData,fold))),this.$useWrapMode?this.$updateWrapData(foldLine.start.row,foldLine.start.row):this.$updateRowLengthCache(foldLine.start.row,foldLine.start.row),this.$modified=!0,this._emit(\"changeFold\",{data:fold}),fold},this.addFolds=function(folds){folds.forEach(function(fold){this.addFold(fold)},this)},this.removeFold=function(fold){var foldLine=fold.foldLine,startRow=foldLine.start.row,endRow=foldLine.end.row,foldLines=this.$foldData,folds=foldLine.folds;if(1==folds.length)foldLines.splice(foldLines.indexOf(foldLine),1);else if(foldLine.range.isEnd(fold.end.row,fold.end.column))folds.pop(),foldLine.end.row=folds[folds.length-1].end.row,foldLine.end.column=folds[folds.length-1].end.column;else if(foldLine.range.isStart(fold.start.row,fold.start.column))folds.shift(),foldLine.start.row=folds[0].start.row,foldLine.start.column=folds[0].start.column;else if(fold.sameRow)folds.splice(folds.indexOf(fold),1);else{var newFoldLine=foldLine.split(fold.start.row,fold.start.column);folds=newFoldLine.folds,folds.shift(),newFoldLine.start.row=folds[0].start.row,newFoldLine.start.column=folds[0].start.column}this.$updating||(this.$useWrapMode?this.$updateWrapData(startRow,endRow):this.$updateRowLengthCache(startRow,endRow)),this.$modified=!0,this._emit(\"changeFold\",{data:fold})},this.removeFolds=function(folds){for(var cloneFolds=[],i=0;folds.length>i;i++)cloneFolds.push(folds[i]);cloneFolds.forEach(function(fold){this.removeFold(fold)},this),this.$modified=!0},this.expandFold=function(fold){this.removeFold(fold),fold.subFolds.forEach(function(subFold){fold.restoreRange(subFold),this.addFold(subFold)},this),fold.collapseChildren>0&&this.foldAll(fold.start.row+1,fold.end.row,fold.collapseChildren-1),fold.subFolds=[]},this.expandFolds=function(folds){folds.forEach(function(fold){this.expandFold(fold)},this)},this.unfold=function(location,expandInner){var range,folds;if(null==location?(range=new Range(0,0,this.getLength(),0),expandInner=!0):range=\"number\"==typeof location?new Range(location,0,location,this.getLine(location).length):\"row\"in location?Range.fromPoints(location,location):location,folds=this.getFoldsInRange(range),expandInner)this.removeFolds(folds);else for(;folds.length;)this.expandFolds(folds),folds=this.getFoldsInRange(range)},this.isRowFolded=function(docRow,startFoldRow){return!!this.getFoldLine(docRow,startFoldRow)},this.getRowFoldEnd=function(docRow,startFoldRow){var foldLine=this.getFoldLine(docRow,startFoldRow);return foldLine?foldLine.end.row:docRow},this.getRowFoldStart=function(docRow,startFoldRow){var foldLine=this.getFoldLine(docRow,startFoldRow);return foldLine?foldLine.start.row:docRow},this.getFoldDisplayLine=function(foldLine,endRow,endColumn,startRow,startColumn){null==startRow&&(startRow=foldLine.start.row,startColumn=0),null==endRow&&(endRow=foldLine.end.row,endColumn=this.getLine(endRow).length);var doc=this.doc,textLine=\"\";return foldLine.walk(function(placeholder,row,column,lastColumn){if(!(startRow>row)){if(row==startRow){if(startColumn>column)return;lastColumn=Math.max(startColumn,lastColumn)}textLine+=null!=placeholder?placeholder:doc.getLine(row).substring(lastColumn,column)}},endRow,endColumn),textLine},this.getDisplayLine=function(row,endColumn,startRow,startColumn){var foldLine=this.getFoldLine(row);if(foldLine)return this.getFoldDisplayLine(foldLine,row,endColumn,startRow,startColumn);var line;return line=this.doc.getLine(row),line.substring(startColumn||0,endColumn||line.length)},this.$cloneFoldData=function(){var fd=[];return fd=this.$foldData.map(function(foldLine){var folds=foldLine.folds.map(function(fold){return fold.clone()});return new FoldLine(fd,folds)})},this.toggleFold=function(tryToUnfold){var fold,bracketPos,selection=this.selection,range=selection.getRange();if(range.isEmpty()){var cursor=range.start;if(fold=this.getFoldAt(cursor.row,cursor.column))return this.expandFold(fold),void 0;(bracketPos=this.findMatchingBracket(cursor))?1==range.comparePoint(bracketPos)?range.end=bracketPos:(range.start=bracketPos,range.start.column++,range.end.column--):(bracketPos=this.findMatchingBracket({row:cursor.row,column:cursor.column+1}))?(1==range.comparePoint(bracketPos)?range.end=bracketPos:range.start=bracketPos,range.start.column++):range=this.getCommentFoldRange(cursor.row,cursor.column)||range}else{var folds=this.getFoldsInRange(range);if(tryToUnfold&&folds.length)return this.expandFolds(folds),void 0;1==folds.length&&(fold=folds[0])}if(fold||(fold=this.getFoldAt(range.start.row,range.start.column)),fold&&\"\"+fold.range==\"\"+range)return this.expandFold(fold),void 0;var placeholder=\"...\";if(!range.isMultiLine()){if(placeholder=this.getTextRange(range),4>placeholder.length)return;placeholder=placeholder.trim().substring(0,2)+\"..\"}this.addFold(placeholder,range)},this.getCommentFoldRange=function(row,column,dir){var iterator=new TokenIterator(this,row,column),token=iterator.getCurrentToken();if(token&&/^comment|string/.test(token.type)){var range=new Range,re=RegExp(token.type.replace(/\\..*/,\"\\\\.\"));if(1!=dir){do token=iterator.stepBackward();while(token&&re.test(token.type));iterator.stepForward()}if(range.start.row=iterator.getCurrentTokenRow(),range.start.column=iterator.getCurrentTokenColumn()+2,iterator=new TokenIterator(this,row,column),-1!=dir){do token=iterator.stepForward();while(token&&re.test(token.type));token=iterator.stepBackward()}else token=iterator.getCurrentToken();return range.end.row=iterator.getCurrentTokenRow(),range.end.column=iterator.getCurrentTokenColumn()+token.value.length-2,range}},this.foldAll=function(startRow,endRow,depth){void 0==depth&&(depth=1e5);var foldWidgets=this.foldWidgets;endRow=endRow||this.getLength();for(var row=startRow||0;endRow>row;row++)if(null==foldWidgets[row]&&(foldWidgets[row]=this.getFoldWidget(row)),\"start\"==foldWidgets[row]){var range=this.getFoldWidgetRange(row);if(range&&endRow>=range.end.row)try{var fold=this.addFold(\"...\",range);fold.collapseChildren=depth}catch(e){}row=range.end.row}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle=\"markbegin\",this.setFoldStyle=function(style){if(!this.$foldStyles[style])throw Error(\"invalid fold style: \"+style+\"[\"+Object.keys(this.$foldStyles).join(\", \")+\"]\");if(this.$foldStyle!=style){this.$foldStyle=style,\"manual\"==style&&this.unfold();var mode=this.$foldMode;this.$setFolding(null),this.$setFolding(mode)}},this.$setFolding=function(foldMode){if(this.$foldMode!=foldMode){if(this.$foldMode=foldMode,this.removeListener(\"change\",this.$updateFoldWidgets),this._emit(\"changeAnnotation\"),!foldMode||\"manual\"==this.$foldStyle)return this.foldWidgets=null,void 0;this.foldWidgets=[],this.getFoldWidget=foldMode.getFoldWidget.bind(foldMode,this,this.$foldStyle),this.getFoldWidgetRange=foldMode.getFoldWidgetRange.bind(foldMode,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on(\"change\",this.$updateFoldWidgets)}},this.getParentFoldRangeData=function(row,ignoreCurrent){var fw=this.foldWidgets;if(!fw||ignoreCurrent&&fw[row])return{};for(var firstRange,i=row-1;i>=0;){var c=fw[i];if(null==c&&(c=fw[i]=this.getFoldWidget(i)),\"start\"==c){var range=this.getFoldWidgetRange(i);if(firstRange||(firstRange=range),range&&range.end.row>=row)break}i--}return{range:-1!==i&&range,firstRange:firstRange}},this.onFoldWidgetClick=function(row,e){var type=this.getFoldWidget(row),line=this.getLine(row);e=e.domEvent;var children=e.shiftKey,all=e.ctrlKey||e.metaKey,siblings=e.altKey,dir=\"end\"===type?-1:1,fold=this.getFoldAt(row,-1===dir?0:line.length,dir);if(fold)return children||all?this.removeFold(fold):this.expandFold(fold),void 0;var range=this.getFoldWidgetRange(row);if(range&&!range.isMultiLine()&&(fold=this.getFoldAt(range.start.row,range.start.column,1),fold&&range.isEqual(fold.range)))return this.removeFold(fold),void 0;if(siblings){var data=this.getParentFoldRangeData(row);if(data.range)var startRow=data.range.start.row+1,endRow=data.range.end.row;this.foldAll(startRow,endRow,all?1e4:0)}else if(children){var endRow=range?range.end.row:this.getLength();this.foldAll(row+1,range.end.row,all?1e4:0)}else range&&(all&&(range.collapseChildren=1e4),this.addFold(\"...\",range));range||((e.target||e.srcElement).className+=\" ace_invalid\")},this.updateFoldWidgets=function(e){var delta=e.data,range=delta.range,firstRow=range.start.row,len=range.end.row-firstRow;if(0===len)this.foldWidgets[firstRow]=null;else if(\"removeText\"==delta.action||\"removeLines\"==delta.action)this.foldWidgets.splice(firstRow,len+1,null);else{var args=Array(len+1);args.unshift(firstRow,1),this.foldWidgets.splice.apply(this.foldWidgets,args)}}}var Range=acequire(\"../range\").Range,FoldLine=acequire(\"./fold_line\").FoldLine,Fold=acequire(\"./fold\").Fold,TokenIterator=acequire(\"../token_iterator\").TokenIterator;exports.Folding=Folding}),ace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){function FoldLine(foldData,folds){this.foldData=foldData,Array.isArray(folds)?this.folds=folds:folds=this.folds=[folds];var last=folds[folds.length-1];this.range=new Range(folds[0].start.row,folds[0].start.column,last.end.row,last.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(fold){fold.setFoldLine(this)},this)}var Range=acequire(\"../range\").Range;(function(){this.shiftRow=function(shift){this.start.row+=shift,this.end.row+=shift,this.folds.forEach(function(fold){fold.start.row+=shift,fold.end.row+=shift})},this.addFold=function(fold){if(fold.sameRow){if(fold.start.row\u003Cthis.startRow||fold.endRow>this.endRow)throw\"Can't add a fold to this FoldLine as it has no connection\";this.folds.push(fold),this.folds.sort(function(a,b){return-a.range.compareEnd(b.start.row,b.start.column)}),this.range.compareEnd(fold.start.row,fold.start.column)>0?(this.end.row=fold.end.row,this.end.column=fold.end.column):0>this.range.compareStart(fold.end.row,fold.end.column)&&(this.start.row=fold.start.row,this.start.column=fold.start.column)}else if(fold.start.row==this.end.row)this.folds.push(fold),this.end.row=fold.end.row,this.end.column=fold.end.column;else{if(fold.end.row!=this.start.row)throw\"Trying to add fold to FoldRow that doesn't have a matching row\";this.folds.unshift(fold),this.start.row=fold.start.row,this.start.column=fold.start.column}fold.foldLine=this},this.containsRow=function(row){return row>=this.start.row&&this.end.row>=row},this.walk=function(callback,endRow,endColumn){var fold,comp,stop,lastEnd=0,folds=this.folds,isNewRow=!0;null==endRow&&(endRow=this.end.row,endColumn=this.end.column);for(var i=0;folds.length>i;i++){if(fold=folds[i],comp=fold.range.compareStart(endRow,endColumn),-1==comp)return callback(null,endRow,endColumn,lastEnd,isNewRow),void 0;if(stop=callback(null,fold.start.row,fold.start.column,lastEnd,isNewRow),stop=!stop&&callback(fold.placeholder,fold.start.row,fold.start.column,lastEnd),stop||0==comp)return;isNewRow=!fold.sameRow,lastEnd=fold.end.column}callback(null,endRow,endColumn,lastEnd,isNewRow)},this.getNextFoldTo=function(row,column){for(var fold,cmp,i=0;this.folds.length>i;i++){if(fold=this.folds[i],cmp=fold.range.compareEnd(row,column),-1==cmp)return{fold:fold,kind:\"after\"};if(0==cmp)return{fold:fold,kind:\"inside\"}}return null},this.addRemoveChars=function(row,column,len){var fold,folds,ret=this.getNextFoldTo(row,column);if(ret)if(fold=ret.fold,\"inside\"==ret.kind&&fold.start.column!=column&&fold.start.row!=row)window.console&&window.console.log(row,column,fold);else if(fold.start.row==row){folds=this.folds;var i=folds.indexOf(fold);for(0==i&&(this.start.column+=len),i;folds.length>i;i++){if(fold=folds[i],fold.start.column+=len,!fold.sameRow)return;fold.end.column+=len}this.end.column+=len}},this.split=function(row,column){var fold=this.getNextFoldTo(row,column).fold,folds=this.folds,foldData=this.foldData;if(!fold)return null;var i=folds.indexOf(fold),foldBefore=folds[i-1];this.end.row=foldBefore.end.row,this.end.column=foldBefore.end.column,folds=folds.splice(i,folds.length-i);var newFoldLine=new FoldLine(foldData,folds);return foldData.splice(foldData.indexOf(this)+1,0,newFoldLine),newFoldLine},this.merge=function(foldLineNext){for(var folds=foldLineNext.folds,i=0;folds.length>i;i++)this.addFold(folds[i]);var foldData=this.foldData;foldData.splice(foldData.indexOf(foldLineNext),1)},this.toString=function(){var ret=[\"\"+this.range+\": [\"];return this.folds.forEach(function(fold){ret.push(\" \"+(\"\"+fold))}),ret.push(\"]\"),ret.join(\"\\n\")},this.idxToPosition=function(idx){for(var fold,lastFoldEndColumn=0,i=0;this.folds.length>i;i++){var fold=this.folds[i];if(idx-=fold.start.column-lastFoldEndColumn,0>idx)return{row:fold.start.row,column:fold.start.column+idx};if(idx-=fold.placeholder.length,0>idx)return fold.start;lastFoldEndColumn=fold.end.column}return{row:this.end.row,column:this.end.column+idx}}}).call(FoldLine.prototype),exports.FoldLine=FoldLine}),ace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/range_list\",\"ace/lib/oop\"],function(acequire,exports){function consumePoint(point,anchor){point.row-=anchor.row,0==point.row&&(point.column-=anchor.column)}function consumeRange(range,anchor){consumePoint(range.start,anchor),consumePoint(range.end,anchor)}function restorePoint(point,anchor){0==point.row&&(point.column+=anchor.column),point.row+=anchor.row}function restoreRange(range,anchor){restorePoint(range.start,anchor),restorePoint(range.end,anchor)}acequire(\"../range\").Range;var RangeList=acequire(\"../range_list\").RangeList,oop=acequire(\"../lib/oop\"),Fold=exports.Fold=function(range,placeholder){this.foldLine=null,this.placeholder=placeholder,this.range=range,this.start=range.start,this.end=range.end,this.sameRow=range.start.row==range.end.row,this.subFolds=this.ranges=[]};oop.inherits(Fold,RangeList),function(){this.toString=function(){return'\"'+this.placeholder+'\" '+(\"\"+this.range)\n},this.setFoldLine=function(foldLine){this.foldLine=foldLine,this.subFolds.forEach(function(fold){fold.setFoldLine(foldLine)})},this.clone=function(){var range=this.range.clone(),fold=new Fold(range,this.placeholder);return this.subFolds.forEach(function(subFold){fold.subFolds.push(subFold.clone())}),fold.collapseChildren=this.collapseChildren,fold},this.addSubFold=function(fold){if(!this.range.isEqual(fold)){if(!this.range.containsRange(fold))throw\"A fold can't intersect already existing fold\"+fold.range+this.range;consumeRange(fold,this.start);for(var row=fold.start.row,column=fold.start.column,i=0,cmp=-1;this.subFolds.length>i&&(cmp=this.subFolds[i].range.compare(row,column),1==cmp);i++);var afterStart=this.subFolds[i];if(0==cmp)return afterStart.addSubFold(fold);for(var row=fold.range.end.row,column=fold.range.end.column,j=i,cmp=-1;this.subFolds.length>j&&(cmp=this.subFolds[j].range.compare(row,column),1==cmp);j++);if(this.subFolds[j],0==cmp)throw\"A fold can't intersect already existing fold\"+fold.range+this.range;return this.subFolds.splice(i,j-i,fold),fold.setFoldLine(this.foldLine),fold}},this.restoreRange=function(range){return restoreRange(range,this.start)}}.call(Fold.prototype)}),ace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){var Range=acequire(\"./range\").Range,comparePoints=Range.comparePoints,RangeList=function(){this.ranges=[]};(function(){this.comparePoints=comparePoints,this.pointIndex=function(pos,excludeEdges,startIndex){for(var list=this.ranges,i=startIndex||0;list.length>i;i++){var range=list[i],cmpEnd=comparePoints(pos,range.end);if(!(cmpEnd>0)){var cmpStart=comparePoints(pos,range.start);return 0===cmpEnd?excludeEdges&&0!==cmpStart?-i-2:i:cmpStart>0||0===cmpStart&&!excludeEdges?i:-i-1}}return-i-1},this.add=function(range){var excludeEdges=!range.isEmpty(),startIndex=this.pointIndex(range.start,excludeEdges);0>startIndex&&(startIndex=-startIndex-1);var endIndex=this.pointIndex(range.end,excludeEdges,startIndex);return 0>endIndex?endIndex=-endIndex-1:endIndex++,this.ranges.splice(startIndex,endIndex-startIndex,range)},this.addList=function(list){for(var removed=[],i=list.length;i--;)removed.push.call(removed,this.add(list[i]));return removed},this.substractPoint=function(pos){var i=this.pointIndex(pos);return i>=0?this.ranges.splice(i,1):void 0},this.merge=function(){var removed=[],list=this.ranges;list=list.sort(function(a,b){return comparePoints(a.start,b.start)});for(var range,next=list[0],i=1;list.length>i;i++){range=next,next=list[i];var cmp=comparePoints(range.end,next.start);0>cmp||(0!=cmp||range.isEmpty()||next.isEmpty())&&(0>comparePoints(range.end,next.end)&&(range.end.row=next.end.row,range.end.column=next.end.column),list.splice(i,1),removed.push(next),next=range,i--)}return this.ranges=list,removed},this.contains=function(row,column){return this.pointIndex({row:row,column:column})>=0},this.containsPoint=function(pos){return this.pointIndex(pos)>=0},this.rangeAtPoint=function(pos){var i=this.pointIndex(pos);return i>=0?this.ranges[i]:void 0},this.clipRows=function(startRow,endRow){var list=this.ranges;if(list[0].start.row>endRow||startRow>list[list.length-1].start.row)return[];var startIndex=this.pointIndex({row:startRow,column:0});0>startIndex&&(startIndex=-startIndex-1);var endIndex=this.pointIndex({row:endRow,column:0},startIndex);0>endIndex&&(endIndex=-endIndex-1);for(var clipped=[],i=startIndex;endIndex>i;i++)clipped.push(list[i]);return clipped},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(session){this.session&&this.detach(),this.session=session,this.onChange=this.$onChange.bind(this),this.session.on(\"change\",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener(\"change\",this.onChange),this.session=null)},this.$onChange=function(e){var changeRange=e.data.range;if(\"i\"==e.data.action[0])var start=changeRange.start,end=changeRange.end;else var end=changeRange.start,start=changeRange.end;for(var startRow=start.row,endRow=end.row,lineDif=endRow-startRow,colDiff=-start.column+end.column,ranges=this.ranges,i=0,n=ranges.length;n>i;i++){var r=ranges[i];if(!(startRow>r.end.row)){if(r.start.row>startRow)break;r.start.row==startRow&&r.start.column>=start.column&&(r.start.column+=colDiff,r.start.row+=lineDif),r.end.row==startRow&&r.end.column>=start.column&&(r.end.column==start.column&&colDiff>0&&n-1>i&&r.end.column>r.start.column&&r.end.column==ranges[i+1].start.column&&(r.end.column-=colDiff),r.end.column+=colDiff,r.end.row+=lineDif)}}if(0!=lineDif&&n>i)for(;n>i;i++){var r=ranges[i];r.start.row+=lineDif,r.end.row+=lineDif}}}).call(RangeList.prototype),exports.RangeList=RangeList}),ace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var TokenIterator=function(session,initialRow,initialColumn){this.$session=session,this.$row=initialRow,this.$rowTokens=session.getTokens(initialRow);var token=session.getTokenAt(initialRow,initialColumn);this.$tokenIndex=token?token.index:-1};(function(){this.stepBackward=function(){for(this.$tokenIndex-=1;0>this.$tokenIndex;){if(this.$row-=1,0>this.$row)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]},this.stepForward=function(){this.$tokenIndex+=1;for(var rowCount;this.$tokenIndex>=this.$rowTokens.length;){if(this.$row+=1,rowCount||(rowCount=this.$session.getLength()),this.$row>=rowCount)return this.$row=rowCount-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var rowTokens=this.$rowTokens,tokenIndex=this.$tokenIndex,column=rowTokens[tokenIndex].start;if(void 0!==column)return column;for(column=0;tokenIndex>0;)tokenIndex-=1,column+=rowTokens[tokenIndex].value.length;return column}}).call(TokenIterator.prototype),exports.TokenIterator=TokenIterator}),ace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"],function(acequire,exports){function BracketMatch(){this.findMatchingBracket=function(position,chr){if(0==position.column)return null;var charBeforeCursor=chr||this.getLine(position.row).charAt(position.column-1);if(\"\"==charBeforeCursor)return null;var match=charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);return match?match[1]?this.$findClosingBracket(match[1],position):this.$findOpeningBracket(match[2],position):null},this.getBracketRange=function(pos){var range,line=this.getLine(pos.row),before=!0,chr=line.charAt(pos.column-1),match=chr&&chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);if(match||(chr=line.charAt(pos.column),pos={row:pos.row,column:pos.column+1},match=chr&&chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/),before=!1),!match)return null;if(match[1]){var bracketPos=this.$findClosingBracket(match[1],pos);if(!bracketPos)return null;range=Range.fromPoints(pos,bracketPos),before||(range.end.column++,range.start.column--),range.cursor=range.end}else{var bracketPos=this.$findOpeningBracket(match[2],pos);if(!bracketPos)return null;range=Range.fromPoints(bracketPos,pos),before||(range.start.column++,range.end.column--),range.cursor=range.start}return range},this.$brackets={\")\":\"(\",\"(\":\")\",\"]\":\"[\",\"[\":\"]\",\"{\":\"}\",\"}\":\"{\"},this.$findOpeningBracket=function(bracket,position,typeRe){var openBracket=this.$brackets[bracket],depth=1,iterator=new TokenIterator(this,position.row,position.column),token=iterator.getCurrentToken();if(token||(token=iterator.stepForward()),token){typeRe||(typeRe=RegExp(\"(\\\\.?\"+token.type.replace(\".\",\"\\\\.\").replace(\"rparen\",\".paren\")+\")+\"));for(var valueIndex=position.column-iterator.getCurrentTokenColumn()-2,value=token.value;;){for(;valueIndex>=0;){var chr=value.charAt(valueIndex);if(chr==openBracket){if(depth-=1,0==depth)return{row:iterator.getCurrentTokenRow(),column:valueIndex+iterator.getCurrentTokenColumn()}}else chr==bracket&&(depth+=1);valueIndex-=1}do token=iterator.stepBackward();while(token&&!typeRe.test(token.type));if(null==token)break;value=token.value,valueIndex=value.length-1}return null}},this.$findClosingBracket=function(bracket,position,typeRe){var closingBracket=this.$brackets[bracket],depth=1,iterator=new TokenIterator(this,position.row,position.column),token=iterator.getCurrentToken();if(token||(token=iterator.stepForward()),token){typeRe||(typeRe=RegExp(\"(\\\\.?\"+token.type.replace(\".\",\"\\\\.\").replace(\"lparen\",\".paren\")+\")+\"));for(var valueIndex=position.column-iterator.getCurrentTokenColumn();;){for(var value=token.value,valueLength=value.length;valueLength>valueIndex;){var chr=value.charAt(valueIndex);if(chr==closingBracket){if(depth-=1,0==depth)return{row:iterator.getCurrentTokenRow(),column:valueIndex+iterator.getCurrentTokenColumn()}}else chr==bracket&&(depth+=1);valueIndex+=1}do token=iterator.stepForward();while(token&&!typeRe.test(token.type));if(null==token)break;valueIndex=0}return null}}}var TokenIterator=acequire(\"../token_iterator\").TokenIterator,Range=acequire(\"../range\").Range;exports.BracketMatch=BracketMatch}),ace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(acequire,exports){var lang=acequire(\"./lib/lang\"),oop=acequire(\"./lib/oop\"),Range=acequire(\"./range\").Range,Search=function(){this.$options={}};(function(){this.set=function(options){return oop.mixin(this.$options,options),this},this.getOptions=function(){return lang.copyObject(this.$options)},this.setOptions=function(options){this.$options=options},this.find=function(session){var iterator=this.$matchIterator(session,this.$options);if(!iterator)return!1;var firstRange=null;return iterator.forEach(function(range,row,offset){if(range.start)firstRange=range;else{var column=range.offset+(offset||0);firstRange=new Range(row,column,row,column+range.length)}return!0}),firstRange},this.findAll=function(session){var options=this.$options;if(!options.needle)return[];this.$assembleRegExp(options);var range=options.range,lines=range?session.getLines(range.start.row,range.end.row):session.doc.getAllLines(),ranges=[],re=options.re;if(options.$isMultiLine)for(var len=re.length,maxRow=lines.length-len,row=re.offset||0;maxRow>=row;row++){for(var j=0;len>j&&-1!=lines[row+j].search(re[j]);j++);var startLine=lines[row],line=lines[row+len-1],startIndex=startLine.match(re[0])[0].length,endIndex=line.match(re[len-1])[0].length;ranges.push(new Range(row,startLine.length-startIndex,row+len-1,endIndex))}else for(var i=0;lines.length>i;i++)for(var matches=lang.getMatchOffsets(lines[i],re),j=0;matches.length>j;j++){var match=matches[j];ranges.push(new Range(i,match.offset,i,match.offset+match.length))}if(range){for(var startColumn=range.start.column,endColumn=range.start.column,i=0,j=ranges.length-1;j>i&&startColumn>ranges[i].start.column&&ranges[i].start.row==range.start.row;)i++;for(;j>i&&ranges[j].end.column>endColumn&&ranges[j].end.row==range.end.row;)j--;return ranges.slice(i,j+1)}return ranges},this.replace=function(input,replacement){var options=this.$options,re=this.$assembleRegExp(options);if(options.$isMultiLine)return replacement;if(re){var match=re.exec(input);if(!match||match[0].length!=input.length)return null;if(replacement=input.replace(re,replacement),options.preserveCase){replacement=replacement.split(\"\");for(var i=Math.min(input.length,input.length);i--;){var ch=input[i];replacement[i]=ch&&ch.toLowerCase()!=ch?replacement[i].toUpperCase():replacement[i].toLowerCase()}replacement=replacement.join(\"\")}return replacement}},this.$matchIterator=function(session,options){var re=this.$assembleRegExp(options);if(!re)return!1;var callback,self=this,backwards=options.backwards;if(options.$isMultiLine)var len=re.length,matchIterator=function(line,row,offset){var startIndex=line.search(re[0]);if(-1!=startIndex){for(var i=1;len>i;i++)if(line=session.getLine(row+i),-1==line.search(re[i]))return;var endIndex=line.match(re[len-1])[0].length,range=new Range(row,startIndex,row+len-1,endIndex);return 1==re.offset?(range.start.row--,range.start.column=Number.MAX_VALUE):offset&&(range.start.column+=offset),callback(range)?!0:void 0}};else if(backwards)var matchIterator=function(line,row,startIndex){for(var matches=lang.getMatchOffsets(line,re),i=matches.length-1;i>=0;i--)if(callback(matches[i],row,startIndex))return!0};else var matchIterator=function(line,row,startIndex){for(var matches=lang.getMatchOffsets(line,re),i=0;matches.length>i;i++)if(callback(matches[i],row,startIndex))return!0};return{forEach:function(_callback){callback=_callback,self.$lineIterator(session,options).forEach(matchIterator)}}},this.$assembleRegExp=function(options){if(options.needle instanceof RegExp)return options.re=options.needle;var needle=options.needle;if(!options.needle)return options.re=!1;options.regExp||(needle=lang.escapeRegExp(needle)),options.wholeWord&&(needle=\"\\\\b\"+needle+\"\\\\b\");var modifier=options.caseSensitive?\"g\":\"gi\";if(options.$isMultiLine=/[\\n\\r]/.test(needle),options.$isMultiLine)return options.re=this.$assembleMultilineRegExp(needle,modifier);try{var re=RegExp(needle,modifier)}catch(e){re=!1}return options.re=re},this.$assembleMultilineRegExp=function(needle,modifier){for(var parts=needle.replace(/\\r\\n|\\r|\\n/g,\"$\\n^\").split(\"\\n\"),re=[],i=0;parts.length>i;i++)try{re.push(RegExp(parts[i],modifier))}catch(e){return!1}return\"\"==parts[0]?(re.shift(),re.offset=1):re.offset=0,re},this.$lineIterator=function(session,options){var backwards=1==options.backwards,skipCurrent=0!=options.skipCurrent,range=options.range,start=options.start;start||(start=range?range[backwards?\"end\":\"start\"]:session.selection.getRange()),start.start&&(start=start[skipCurrent!=backwards?\"end\":\"start\"]);var firstRow=range?range.start.row:0,lastRow=range?range.end.row:session.getLength()-1,forEach=backwards?function(callback){var row=start.row,line=session.getLine(row).substring(0,start.column);if(!callback(line,row)){for(row--;row>=firstRow;row--)if(callback(session.getLine(row),row))return;if(0!=options.wrap)for(row=lastRow,firstRow=start.row;row>=firstRow;row--)if(callback(session.getLine(row),row))return}}:function(callback){var row=start.row,line=session.getLine(row).substr(start.column);if(!callback(line,row,start.column)){for(row+=1;lastRow>=row;row++)if(callback(session.getLine(row),row))return;if(0!=options.wrap)for(row=firstRow,lastRow=start.row;lastRow>=row;row++)if(callback(session.getLine(row),row))return}};return{forEach:forEach}}}).call(Search.prototype),exports.Search=Search}),ace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),HashHandler=acequire(\"../keyboard/hash_handler\").HashHandler,EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,CommandManager=function(platform,commands){this.platform=platform,this.commands=this.byName={},this.commmandKeyBinding={},this.addCommands(commands),this.setDefaultHandler(\"exec\",function(e){return e.command.exec(e.editor,e.args||{})})};oop.inherits(CommandManager,HashHandler),function(){oop.implement(this,EventEmitter),this.exec=function(command,editor,args){if(\"string\"==typeof command&&(command=this.commands[command]),!command)return!1;if(editor&&editor.$readOnly&&!command.readOnly)return!1;var e={editor:editor,command:command,args:args},retvalue=this._emit(\"exec\",e);return this._signal(\"afterExec\",e),retvalue===!1?!1:!0},this.toggleRecording=function(editor){return this.$inReplay?void 0:(editor&&editor._emit(\"changeStatus\"),this.recording?(this.macro.pop(),this.removeEventListener(\"exec\",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on(\"exec\",this.$addCommandToMacro),this.recording=!0))},this.replay=function(editor){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(editor);try{this.$inReplay=!0,this.macro.forEach(function(x){\"string\"==typeof x?this.exec(x,editor):this.exec(x[0],editor,x[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(m){return m.map(function(x){return\"string\"!=typeof x[0]&&(x[0]=x[0].name),x[1]||(x=x[0]),x})}}.call(CommandManager.prototype),exports.CommandManager=CommandManager}),ace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"],function(acequire,exports){function HashHandler(config,platform){this.platform=platform||(useragent.isMac?\"mac\":\"win\"),this.commands={},this.commmandKeyBinding={},this.addCommands(config)}var keyUtil=acequire(\"../lib/keys\"),useragent=acequire(\"../lib/useragent\");(function(){this.addCommand=function(command){this.commands[command.name]&&this.removeCommand(command),this.commands[command.name]=command,command.bindKey&&this._buildKeyHash(command)},this.removeCommand=function(command){var name=\"string\"==typeof command?command:command.name;command=this.commands[name],delete this.commands[name];var ckb=this.commmandKeyBinding;for(var hashId in ckb)for(var key in ckb[hashId])ckb[hashId][key]==command&&delete ckb[hashId][key]},this.bindKey=function(key,command){if(key){if(\"function\"==typeof command)return this.addCommand({exec:command,bindKey:key,name:command.name||key}),void 0;var ckb=this.commmandKeyBinding;key.split(\"|\").forEach(function(keyPart){var binding=this.parseKeys(keyPart,command),hashId=binding.hashId;(ckb[hashId]||(ckb[hashId]={}))[binding.key]=command},this)}},this.addCommands=function(commands){commands&&Object.keys(commands).forEach(function(name){var command=commands[name];return\"string\"==typeof command?this.bindKey(command,name):(\"function\"==typeof command&&(command={exec:command}),command.name||(command.name=name),this.addCommand(command),void 0)},this)},this.removeCommands=function(commands){Object.keys(commands).forEach(function(name){this.removeCommand(commands[name])},this)},this.bindKeys=function(keyList){Object.keys(keyList).forEach(function(key){this.bindKey(key,keyList[key])},this)},this._buildKeyHash=function(command){var binding=command.bindKey;if(binding){var key=\"string\"==typeof binding?binding:binding[this.platform];this.bindKey(key,command)}},this.parseKeys=function(keys){-1!=keys.indexOf(\" \")&&(keys=keys.split(/\\s+/).pop());var parts=keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x}),key=parts.pop(),keyCode=keyUtil[key];if(keyUtil.FUNCTION_KEYS[keyCode])key=keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();else{if(!parts.length)return{key:key,hashId:-1};if(1==parts.length&&\"shift\"==parts[0])return{key:key.toUpperCase(),hashId:-1}}for(var hashId=0,i=parts.length;i--;){var modifier=keyUtil.KEY_MODS[parts[i]];if(null==modifier)return\"undefined\"!=typeof console&&console.error(\"invalid modifier \"+parts[i]+\" in \"+keys),!1;hashId|=modifier}return{key:key,hashId:hashId}},this.findKeyCommand=function(hashId,keyString){var ckbr=this.commmandKeyBinding;return ckbr[hashId]&&ckbr[hashId][keyString]},this.handleKeyboard=function(data,hashId,keyString){return{command:this.findKeyCommand(hashId,keyString)}}}).call(HashHandler.prototype),exports.HashHandler=HashHandler}),ace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\"],function(acequire,exports){function bindKey(win,mac){return{win:win,mac:mac}}var lang=acequire(\"../lib/lang\"),config=acequire(\"../config\");exports.commands=[{name:\"selectall\",bindKey:bindKey(\"Ctrl-A\",\"Command-A\"),exec:function(editor){editor.selectAll()},readOnly:!0},{name:\"centerselection\",bindKey:bindKey(null,\"Ctrl-L\"),exec:function(editor){editor.centerSelection()},readOnly:!0},{name:\"gotoline\",bindKey:bindKey(\"Ctrl-L\",\"Command-L\"),exec:function(editor){var line=parseInt(prompt(\"Enter line number:\"),10);isNaN(line)||editor.gotoLine(line)},readOnly:!0},{name:\"fold\",bindKey:bindKey(\"Alt-L|Ctrl-F1\",\"Command-Alt-L|Command-F1\"),exec:function(editor){editor.session.toggleFold(!1)},readOnly:!0},{name:\"unfold\",bindKey:bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\",\"Command-Alt-Shift-L|Command-Shift-F1\"),exec:function(editor){editor.session.toggleFold(!0)},readOnly:!0},{name:\"foldall\",bindKey:bindKey(\"Alt-0\",\"Command-Option-0\"),exec:function(editor){editor.session.foldAll()},readOnly:!0},{name:\"unfoldall\",bindKey:bindKey(\"Alt-Shift-0\",\"Command-Option-Shift-0\"),exec:function(editor){editor.session.unfold()},readOnly:!0},{name:\"findnext\",bindKey:bindKey(\"Ctrl-K\",\"Command-G\"),exec:function(editor){editor.findNext()},readOnly:!0},{name:\"findprevious\",bindKey:bindKey(\"Ctrl-Shift-K\",\"Command-Shift-G\"),exec:function(editor){editor.findPrevious()},readOnly:!0},{name:\"find\",bindKey:bindKey(\"Ctrl-F\",\"Command-F\"),exec:function(editor){config.loadModule(\"ace/ext/searchbox\",function(e){e.Search(editor)})},readOnly:!0},{name:\"overwrite\",bindKey:\"Insert\",exec:function(editor){editor.toggleOverwrite()},readOnly:!0},{name:\"selecttostart\",bindKey:bindKey(\"Ctrl-Shift-Home\",\"Command-Shift-Up\"),exec:function(editor){editor.getSelection().selectFileStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotostart\",bindKey:bindKey(\"Ctrl-Home\",\"Command-Home|Command-Up\"),exec:function(editor){editor.navigateFileStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectup\",bindKey:bindKey(\"Shift-Up\",\"Shift-Up\"),exec:function(editor){editor.getSelection().selectUp()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"golineup\",bindKey:bindKey(\"Up\",\"Up|Ctrl-P\"),exec:function(editor,args){editor.navigateUp(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttoend\",bindKey:bindKey(\"Ctrl-Shift-End\",\"Command-Shift-Down\"),exec:function(editor){editor.getSelection().selectFileEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoend\",bindKey:bindKey(\"Ctrl-End\",\"Command-End|Command-Down\"),exec:function(editor){editor.navigateFileEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectdown\",bindKey:bindKey(\"Shift-Down\",\"Shift-Down\"),exec:function(editor){editor.getSelection().selectDown()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"golinedown\",bindKey:bindKey(\"Down\",\"Down|Ctrl-N\"),exec:function(editor,args){editor.navigateDown(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectwordleft\",bindKey:bindKey(\"Ctrl-Shift-Left\",\"Option-Shift-Left\"),exec:function(editor){editor.getSelection().selectWordLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotowordleft\",bindKey:bindKey(\"Ctrl-Left\",\"Option-Left\"),exec:function(editor){editor.navigateWordLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttolinestart\",bindKey:bindKey(\"Alt-Shift-Left\",\"Command-Shift-Left\"),exec:function(editor){editor.getSelection().selectLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotolinestart\",bindKey:bindKey(\"Alt-Left|Home\",\"Command-Left|Home|Ctrl-A\"),exec:function(editor){editor.navigateLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectleft\",bindKey:bindKey(\"Shift-Left\",\"Shift-Left\"),exec:function(editor){editor.getSelection().selectLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoleft\",bindKey:bindKey(\"Left\",\"Left|Ctrl-B\"),exec:function(editor,args){editor.navigateLeft(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectwordright\",bindKey:bindKey(\"Ctrl-Shift-Right\",\"Option-Shift-Right\"),exec:function(editor){editor.getSelection().selectWordRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotowordright\",bindKey:bindKey(\"Ctrl-Right\",\"Option-Right\"),exec:function(editor){editor.navigateWordRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttolineend\",bindKey:bindKey(\"Alt-Shift-Right\",\"Command-Shift-Right\"),exec:function(editor){editor.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotolineend\",bindKey:bindKey(\"Alt-Right|End\",\"Command-Right|End|Ctrl-E\"),exec:function(editor){editor.navigateLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectright\",bindKey:bindKey(\"Shift-Right\",\"Shift-Right\"),exec:function(editor){editor.getSelection().selectRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoright\",bindKey:bindKey(\"Right\",\"Right|Ctrl-F\"),exec:function(editor,args){editor.navigateRight(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectpagedown\",bindKey:\"Shift-PageDown\",exec:function(editor){editor.selectPageDown()},readOnly:!0},{name:\"pagedown\",bindKey:bindKey(null,\"Option-PageDown\"),exec:function(editor){editor.scrollPageDown()},readOnly:!0},{name:\"gotopagedown\",bindKey:bindKey(\"PageDown\",\"PageDown|Ctrl-V\"),exec:function(editor){editor.gotoPageDown()},readOnly:!0},{name:\"selectpageup\",bindKey:\"Shift-PageUp\",exec:function(editor){editor.selectPageUp()},readOnly:!0},{name:\"pageup\",bindKey:bindKey(null,\"Option-PageUp\"),exec:function(editor){editor.scrollPageUp()},readOnly:!0},{name:\"gotopageup\",bindKey:\"PageUp\",exec:function(editor){editor.gotoPageUp()},readOnly:!0},{name:\"scrollup\",bindKey:bindKey(\"Ctrl-Up\",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"scrolldown\",bindKey:bindKey(\"Ctrl-Down\",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"selectlinestart\",bindKey:\"Shift-Home\",exec:function(editor){editor.getSelection().selectLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectlineend\",bindKey:\"Shift-End\",exec:function(editor){editor.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"togglerecording\",bindKey:bindKey(\"Ctrl-Alt-E\",\"Command-Option-E\"),exec:function(editor){editor.commands.toggleRecording(editor)},readOnly:!0},{name:\"replaymacro\",bindKey:bindKey(\"Ctrl-Shift-E\",\"Command-Shift-E\"),exec:function(editor){editor.commands.replay(editor)},readOnly:!0},{name:\"jumptomatching\",bindKey:bindKey(\"Ctrl-P\",\"Ctrl-Shift-P\"),exec:function(editor){editor.jumpToMatching()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttomatching\",bindKey:bindKey(\"Ctrl-Shift-P\",null),exec:function(editor){editor.jumpToMatching(!0)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"cut\",exec:function(editor){var range=editor.getSelectionRange();editor._emit(\"cut\",range),editor.selection.isEmpty()||(editor.session.remove(range),editor.clearSelection())},multiSelectAction:\"forEach\"},{name:\"removeline\",bindKey:bindKey(\"Ctrl-D\",\"Command-D\"),exec:function(editor){editor.removeLines()},multiSelectAction:\"forEachLine\"},{name:\"duplicateSelection\",bindKey:bindKey(\"Ctrl-Shift-D\",\"Command-Shift-D\"),exec:function(editor){editor.duplicateSelection()},multiSelectAction:\"forEach\"},{name:\"sortlines\",bindKey:bindKey(\"Ctrl-Alt-S\",\"Command-Alt-S\"),exec:function(editor){editor.sortLines()},multiSelectAction:\"forEachLine\"},{name:\"togglecomment\",bindKey:bindKey(\"Ctrl-/\",\"Command-/\"),exec:function(editor){editor.toggleCommentLines()},multiSelectAction:\"forEachLine\"},{name:\"modifyNumberUp\",bindKey:bindKey(\"Ctrl-Shift-Up\",\"Alt-Shift-Up\"),exec:function(editor){editor.modifyNumber(1)},multiSelectAction:\"forEach\"},{name:\"modifyNumberDown\",bindKey:bindKey(\"Ctrl-Shift-Down\",\"Alt-Shift-Down\"),exec:function(editor){editor.modifyNumber(-1)},multiSelectAction:\"forEach\"},{name:\"replace\",bindKey:bindKey(\"Ctrl-H\",\"Command-Option-F\"),exec:function(editor){config.loadModule(\"ace/ext/searchbox\",function(e){e.Search(editor,!0)})}},{name:\"undo\",bindKey:bindKey(\"Ctrl-Z\",\"Command-Z\"),exec:function(editor){editor.undo()}},{name:\"redo\",bindKey:bindKey(\"Ctrl-Shift-Z|Ctrl-Y\",\"Command-Shift-Z|Command-Y\"),exec:function(editor){editor.redo()}},{name:\"copylinesup\",bindKey:bindKey(\"Alt-Shift-Up\",\"Command-Option-Up\"),exec:function(editor){editor.copyLinesUp()}},{name:\"movelinesup\",bindKey:bindKey(\"Alt-Up\",\"Option-Up\"),exec:function(editor){editor.moveLinesUp()}},{name:\"copylinesdown\",bindKey:bindKey(\"Alt-Shift-Down\",\"Command-Option-Down\"),exec:function(editor){editor.copyLinesDown()}},{name:\"movelinesdown\",bindKey:bindKey(\"Alt-Down\",\"Option-Down\"),exec:function(editor){editor.moveLinesDown()}},{name:\"del\",bindKey:bindKey(\"Delete\",\"Delete|Ctrl-D\"),exec:function(editor){editor.remove(\"right\")},multiSelectAction:\"forEach\"},{name:\"backspace\",bindKey:bindKey(\"Command-Backspace|Option-Backspace|Shift-Backspace|Backspace\",\"Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),exec:function(editor){editor.remove(\"left\")},multiSelectAction:\"forEach\"},{name:\"removetolinestart\",bindKey:bindKey(\"Alt-Backspace\",\"Command-Backspace\"),exec:function(editor){editor.removeToLineStart()},multiSelectAction:\"forEach\"},{name:\"removetolineend\",bindKey:bindKey(\"Alt-Delete\",\"Ctrl-K\"),exec:function(editor){editor.removeToLineEnd()},multiSelectAction:\"forEach\"},{name:\"removewordleft\",bindKey:bindKey(\"Ctrl-Backspace\",\"Alt-Backspace|Ctrl-Alt-Backspace\"),exec:function(editor){editor.removeWordLeft()},multiSelectAction:\"forEach\"},{name:\"removewordright\",bindKey:bindKey(\"Ctrl-Delete\",\"Alt-Delete\"),exec:function(editor){editor.removeWordRight()},multiSelectAction:\"forEach\"},{name:\"outdent\",bindKey:bindKey(\"Shift-Tab\",\"Shift-Tab\"),exec:function(editor){editor.blockOutdent()},multiSelectAction:\"forEach\"},{name:\"indent\",bindKey:bindKey(\"Tab\",\"Tab\"),exec:function(editor){editor.indent()},multiSelectAction:\"forEach\"},{name:\"blockoutdent\",bindKey:bindKey(\"Ctrl-[\",\"Ctrl-[\"),exec:function(editor){editor.blockOutdent()},multiSelectAction:\"forEachLine\"},{name:\"blockindent\",bindKey:bindKey(\"Ctrl-]\",\"Ctrl-]\"),exec:function(editor){editor.blockIndent()},multiSelectAction:\"forEachLine\"},{name:\"insertstring\",exec:function(editor,str){editor.insert(str)},multiSelectAction:\"forEach\"},{name:\"inserttext\",exec:function(editor,args){editor.insert(lang.stringRepeat(args.text||\"\",args.times||1))},multiSelectAction:\"forEach\"},{name:\"splitline\",bindKey:bindKey(null,\"Ctrl-O\"),exec:function(editor){editor.splitLine()},multiSelectAction:\"forEach\"},{name:\"transposeletters\",bindKey:bindKey(\"Ctrl-T\",\"Ctrl-T\"),exec:function(editor){editor.transposeLetters()},multiSelectAction:function(editor){editor.transposeSelections(1)}},{name:\"touppercase\",bindKey:bindKey(\"Ctrl-U\",\"Ctrl-U\"),exec:function(editor){editor.toUpperCase()},multiSelectAction:\"forEach\"},{name:\"tolowercase\",bindKey:bindKey(\"Ctrl-Shift-U\",\"Ctrl-Shift-U\"),exec:function(editor){editor.toLowerCase()},multiSelectAction:\"forEach\"}]}),ace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var UndoManager=function(){this.reset()};(function(){this.execute=function(options){var deltas=options.args[0];this.$doc=options.args[1],this.$undoStack.push(deltas),this.$redoStack=[]},this.undo=function(dontSelect){var deltas=this.$undoStack.pop(),undoSelectionRange=null;return deltas&&(undoSelectionRange=this.$doc.undoChanges(deltas,dontSelect),this.$redoStack.push(deltas)),undoSelectionRange},this.redo=function(dontSelect){var deltas=this.$redoStack.pop(),redoSelectionRange=null;return deltas&&(redoSelectionRange=this.$doc.redoChanges(deltas,dontSelect),this.$undoStack.push(deltas)),redoSelectionRange},this.reset=function(){this.$undoStack=[],this.$redoStack=[]},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0}}).call(UndoManager.prototype),exports.UndoManager=UndoManager}),ace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),dom=acequire(\"./lib/dom\"),event=acequire(\"./lib/event\"),useragent=acequire(\"./lib/useragent\"),config=acequire(\"./config\"),GutterLayer=acequire(\"./layer/gutter\").Gutter,MarkerLayer=acequire(\"./layer/marker\").Marker,TextLayer=acequire(\"./layer/text\").Text,CursorLayer=acequire(\"./layer/cursor\").Cursor,ScrollBar=acequire(\"./scrollbar\").ScrollBar,RenderLoop=acequire(\"./renderloop\").RenderLoop,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,editorCss=\".ace_editor {position: relative;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;line-height: normal;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\\\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\\\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\\\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\\\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\\\");}.ace_scrollbar {position: absolute;overflow-x: hidden;overflow-y: scroll;right: 0;top: 0;bottom: 0;}.ace_scrollbar-inner {position: absolute;width: 1px;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: nowrap;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {color: black;font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\\\"opacity: 0\\\"]{-ms-filter: \\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\\\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_line {white-space: nowrap;}.ace_marker-layer .ace_step {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\\\"),url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\\\"),url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_editor.ace_dragging .ace_content {cursor: move;}.ace_gutter-tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;display: inline-block;max-width: 500px;padding: 4px;position: fixed;z-index: 300;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: inline-block;width: 11px;vertical-align: top;background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;}.ace_fold-widget.ace_end {background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\\\");}.ace_fold-widget.ace_closed {background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\\\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.ace_dark .ace_fold-widget {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}\";\ndom.importCssString(editorCss,\"ace_editor\");var VirtualRenderer=function(container,theme){var _self=this;this.container=container||dom.createElement(\"div\"),this.$keepTextAreaAtCursor=!useragent.isIE,dom.addCssClass(this.container,\"ace_editor\"),this.setTheme(theme),this.$gutter=dom.createElement(\"div\"),this.$gutter.className=\"ace_gutter\",this.container.appendChild(this.$gutter),this.scroller=dom.createElement(\"div\"),this.scroller.className=\"ace_scroller\",this.container.appendChild(this.scroller),this.content=dom.createElement(\"div\"),this.content.className=\"ace_content\",this.scroller.appendChild(this.content),this.$gutterLayer=new GutterLayer(this.$gutter),this.$gutterLayer.on(\"changeGutterWidth\",this.onGutterResize.bind(this)),this.$markerBack=new MarkerLayer(this.content);var textLayer=this.$textLayer=new TextLayer(this.content);this.canvas=textLayer.element,this.$markerFront=new MarkerLayer(this.content),this.$cursorLayer=new CursorLayer(this.content),this.$horizScroll=!1,this.scrollBar=new ScrollBar(this.container),this.scrollBar.addEventListener(\"scroll\",function(e){_self.$inScrollAnimation||_self.session.setScrollTop(e.data)}),this.scrollTop=0,this.scrollLeft=0,event.addListener(this.scroller,\"scroll\",function(){var scrollLeft=_self.scroller.scrollLeft;_self.scrollLeft=scrollLeft,_self.session.setScrollLeft(scrollLeft)}),this.cursorPos={row:0,column:0},this.$textLayer.addEventListener(\"changeCharacterSize\",function(){_self.updateCharacterSize(),_self.onResize(!0)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:1,characterWidth:1,minHeight:1,maxHeight:1,offset:0,height:1},this.$loop=new RenderLoop(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),config.resetOptions(this),config._emit(\"renderer\",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,oop.implement(this,EventEmitter),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle(\"ace_nobold\",!this.$allowBoldFonts)),this.characterWidth=this.$textLayer.getCharacterWidth(),this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(session){this.session=session,this.scroller.className=\"ace_scroller\",this.$cursorLayer.setSession(session),this.$markerBack.setSession(session),this.$markerFront.setSession(session),this.$gutterLayer.setSession(session),this.$textLayer.setSession(session),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(firstRow,lastRow){void 0===lastRow&&(lastRow=1/0),this.$changedLines?(this.$changedLines.firstRow>firstRow&&(this.$changedLines.firstRow=firstRow),lastRow>this.$changedLines.lastRow&&(this.$changedLines.lastRow=lastRow)):this.$changedLines={firstRow:firstRow,lastRow:lastRow},this.$changedLines.firstRow>this.layerConfig.lastRow||this.$changedLines.lastRow\u003Cthis.layerConfig.firstRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(force){force?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.onResize=function(force,gutterWidth,width,height){var changes=0,size=this.$size;if(!(this.resizing>2)){if(this.resizing>1?this.resizing++:this.resizing=force?1:0,height||(height=dom.getInnerHeight(this.container)),height&&(force||size.height!=height)&&(size.height=height,changes=this.CHANGE_SIZE,size.scrollerHeight=this.scroller.clientHeight,size.scrollerHeight||(size.scrollerHeight=size.height,this.$horizScroll&&(size.scrollerHeight-=this.scrollBar.getWidth())),this.scrollBar.setHeight(size.scrollerHeight),this.session&&(this.session.setScrollTop(this.getScrollTop()),changes|=this.CHANGE_FULL)),width||(width=dom.getInnerWidth(this.container)),width&&(force||this.resizing>1||size.width!=width)){changes=this.CHANGE_SIZE,size.width=width;var gutterWidth=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=gutterWidth+\"px\",size.scrollerWidth=Math.max(0,width-gutterWidth-this.scrollBar.getWidth()),this.scroller.style.right=this.scrollBar.getWidth()+\"px\",(this.session.getUseWrapMode()&&this.adjustWrapLimit()||force)&&(changes|=this.CHANGE_FULL)}this.$size.scrollerHeight&&(force?this.$renderChanges(changes,!0):this.$loop.schedule(changes),force&&(this.$gutterLayer.$padding=null),force&&delete this.resizing)}},this.onGutterResize=function(){var width=this.$size.width,gutterWidth=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=gutterWidth+\"px\",this.$size.scrollerWidth=Math.max(0,width-gutterWidth-this.scrollBar.getWidth()),this.session.getUseWrapMode()&&this.adjustWrapLimit()&&this.$loop.schedule(this.CHANGE_FULL)},this.adjustWrapLimit=function(){var availableWidth=this.$size.scrollerWidth-2*this.$padding,limit=Math.floor(availableWidth/this.characterWidth);return this.session.adjustWrapLimit(limit,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(shouldAnimate){this.setOption(\"animatedScroll\",shouldAnimate)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(showInvisibles){this.setOption(\"showInvisibles\",showInvisibles)},this.getShowInvisibles=function(){return this.getOption(\"showInvisibles\")},this.getDisplayIndentGuides=function(){return this.getOption(\"displayIndentGuides\")},this.setDisplayIndentGuides=function(display){this.setOption(\"displayIndentGuides\",display)},this.setShowPrintMargin=function(showPrintMargin){this.setOption(\"showPrintMargin\",showPrintMargin)},this.getShowPrintMargin=function(){return this.getOption(\"showPrintMargin\")},this.setPrintMarginColumn=function(showPrintMargin){this.setOption(\"printMarginColumn\",showPrintMargin)},this.getPrintMarginColumn=function(){return this.getOption(\"printMarginColumn\")},this.getShowGutter=function(){return this.getOption(\"showGutter\")},this.setShowGutter=function(show){return this.setOption(\"showGutter\",show)},this.getFadeFoldWidgets=function(){return this.getOption(\"fadeFoldWidgets\")},this.setFadeFoldWidgets=function(show){this.setOption(\"fadeFoldWidgets\",show)},this.setHighlightGutterLine=function(shouldHighlight){this.setOption(\"highlightGutterLine\",shouldHighlight)},this.getHighlightGutterLine=function(){return this.getOption(\"highlightGutterLine\")},this.$updateGutterLineHighlight=function(){var pos=this.$cursorLayer.$pixelPos,height=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var cursor=this.session.selection.getCursor();cursor.column=0,pos=this.$cursorLayer.getPixelPosition(cursor,!0),height*=this.session.getRowLength(cursor.row)}this.$gutterLineHighlight.style.top=pos.top-this.layerConfig.offset+\"px\",this.$gutterLineHighlight.style.height=height+\"px\"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var containerEl=dom.createElement(\"div\");containerEl.className=\"ace_layer ace_print-margin-layer\",this.$printMarginEl=dom.createElement(\"div\"),this.$printMarginEl.className=\"ace_print-margin\",containerEl.appendChild(this.$printMarginEl),this.content.insertBefore(containerEl,this.content.firstChild)}var style=this.$printMarginEl.style;style.left=this.characterWidth*this.$printMarginColumn+this.$padding+\"px\",style.visibility=this.$showPrintMargin?\"visible\":\"hidden\",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var config=this.layerConfig,posTop=this.$cursorLayer.$pixelPos.top,posLeft=this.$cursorLayer.$pixelPos.left;posTop-=config.offset;var h=this.lineHeight;if(!(0>posTop||posTop>config.height-h)){var w=this.characterWidth;if(this.$composition){var val=this.textarea.value.replace(/^\\x01+/,\"\");w*=this.session.$getStringScreenWidth(val)[0],h+=2,posTop-=1}posLeft-=this.scrollLeft,posLeft>this.$size.scrollerWidth-w&&(posLeft=this.$size.scrollerWidth-w),posLeft-=this.scrollBar.width,this.textarea.style.height=h+\"px\",this.textarea.style.width=w+\"px\",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-posLeft-w)+\"px\",this.textarea.style.bottom=Math.max(0,this.$size.height-posTop-h)+\"px\"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var flint=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+flint},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(padding){this.$padding=padding,this.$textLayer.setPadding(padding),this.$cursorLayer.setPadding(padding),this.$markerFront.setPadding(padding),this.$markerBack.setPadding(padding),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(alwaysVisible){this.setOption(\"hScrollBarAlwaysVisible\",alwaysVisible)},this.$updateScrollBar=function(){this.scrollBar.setInnerHeight(this.layerConfig.maxHeight),this.scrollBar.setScrollTop(this.scrollTop)},this.$renderChanges=function(changes,force){if(force||changes&&this.session&&this.container.offsetWidth){if(this._signal(\"beforeRender\"),(changes&this.CHANGE_FULL||changes&this.CHANGE_SIZE||changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES||changes&this.CHANGE_SCROLL)&&this.$computeLayerConfig(),changes&this.CHANGE_H_SCROLL){this.scroller.scrollLeft=this.scrollLeft;var scrollLeft=this.scroller.scrollLeft;this.scrollLeft=scrollLeft,this.session.setScrollLeft(scrollLeft),this.scroller.className=0==this.scrollLeft?\"ace_scroller\":\"ace_scroller ace_scroll-left\"}if(changes&this.CHANGE_FULL)return this.$textLayer.checkForSizeChanges(),this.$updateScrollBar(),this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal(\"afterRender\"),void 0;if(changes&this.CHANGE_SCROLL)return changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES?this.$textLayer.update(this.layerConfig):this.$textLayer.scrollLines(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this.$updateScrollBar(),this._signal(\"afterRender\"),void 0;changes&this.CHANGE_TEXT?(this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig)):changes&this.CHANGE_LINES?(this.$updateLines()||changes&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(this.layerConfig):(changes&this.CHANGE_TEXT||changes&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(this.layerConfig),changes&this.CHANGE_CURSOR&&(this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(this.layerConfig),changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(this.layerConfig),changes&this.CHANGE_SIZE&&this.$updateScrollBar(),this._signal(\"afterRender\")}},this.$computeLayerConfig=function(){if(!this.$size.scrollerHeight)return this.onResize(!0);var session=this.session,offset=this.scrollTop%this.lineHeight,minHeight=this.$size.scrollerHeight+this.lineHeight,longestLine=this.$getLongestLine(),horizScroll=this.$hScrollBarAlwaysVisible||0>this.$size.scrollerWidth-longestLine,horizScrollChanged=this.$horizScroll!==horizScroll;this.$horizScroll=horizScroll,horizScrollChanged&&(this.scroller.style.overflowX=horizScroll?\"scroll\":\"hidden\",horizScroll||this.session.setScrollLeft(0));var maxHeight=this.session.getScreenLength()*this.lineHeight;this.session.setScrollTop(Math.max(0,Math.min(this.scrollTop,maxHeight-this.$size.scrollerHeight)));var firstRowScreen,firstRowHeight,lineCount=Math.ceil(minHeight/this.lineHeight)-1,firstRow=Math.max(0,Math.round((this.scrollTop-offset)/this.lineHeight)),lastRow=firstRow+lineCount,lineHeight=this.lineHeight;firstRow=session.screenToDocumentRow(firstRow,0);var foldLine=session.getFoldLine(firstRow);foldLine&&(firstRow=foldLine.start.row),firstRowScreen=session.documentToScreenRow(firstRow,0),firstRowHeight=session.getRowLength(firstRow)*lineHeight,lastRow=Math.min(session.screenToDocumentRow(lastRow,0),session.getLength()-1),minHeight=this.$size.scrollerHeight+session.getRowLength(lastRow)*lineHeight+firstRowHeight,offset=this.scrollTop-firstRowScreen*lineHeight,this.layerConfig={width:longestLine,padding:this.$padding,firstRow:firstRow,firstRowScreen:firstRowScreen,lastRow:lastRow,lineHeight:lineHeight,characterWidth:this.characterWidth,minHeight:minHeight,maxHeight:maxHeight,offset:offset,height:this.$size.scrollerHeight},this.$gutterLayer.element.style.marginTop=-offset+\"px\",this.content.style.marginTop=-offset+\"px\",this.content.style.width=longestLine+2*this.$padding+\"px\",this.content.style.height=minHeight+\"px\",horizScrollChanged&&this.onResize(!0)},this.$updateLines=function(){var firstRow=this.$changedLines.firstRow,lastRow=this.$changedLines.lastRow;this.$changedLines=null;var layerConfig=this.layerConfig;return firstRow>layerConfig.lastRow+1||layerConfig.firstRow>lastRow?void 0:1/0===lastRow?(this.$showGutter&&this.$gutterLayer.update(layerConfig),this.$textLayer.update(layerConfig),void 0):(this.$textLayer.updateLines(layerConfig,firstRow,lastRow),!0)},this.$getLongestLine=function(){var charCount=this.session.getScreenWidth();return this.$textLayer.showInvisibles&&(charCount+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(charCount*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(row,className){this.$gutterLayer.addGutterDecoration(row,className)},this.removeGutterDecoration=function(row,className){this.$gutterLayer.removeGutterDecoration(row,className)},this.updateBreakpoints=function(){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(annotations){this.$gutterLayer.setAnnotations(annotations),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(anchor,lead,offset){this.scrollCursorIntoView(anchor,offset),this.scrollCursorIntoView(lead,offset)},this.scrollCursorIntoView=function(cursor,offset){if(0!==this.$size.scrollerHeight){var pos=this.$cursorLayer.getPixelPosition(cursor),left=pos.left,top=pos.top;this.scrollTop>top?(offset&&(top-=offset*this.$size.scrollerHeight),this.session.setScrollTop(top)):this.scrollTop+this.$size.scrollerHeight\u003Ctop+this.lineHeight&&(offset&&(top+=offset*this.$size.scrollerHeight),this.session.setScrollTop(top+this.lineHeight-this.$size.scrollerHeight));var scrollLeft=this.scrollLeft;scrollLeft>left?(this.$padding+2*this.layerConfig.characterWidth>left&&(left=0),this.session.setScrollLeft(left)):scrollLeft+this.$size.scrollerWidth\u003Cleft+this.characterWidth&&this.session.setScrollLeft(Math.round(left+this.characterWidth-this.$size.scrollerWidth))}},this.getScrollTop=function(){return this.session.getScrollTop()},this.getScrollLeft=function(){return this.session.getScrollLeft()},this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight},this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)},this.scrollToRow=function(row){this.session.setScrollTop(row*this.lineHeight)},this.alignCursor=function(cursor,alignment){\"number\"==typeof cursor&&(cursor={row:cursor,column:0});var pos=this.$cursorLayer.getPixelPosition(cursor),h=this.$size.scrollerHeight-this.lineHeight,offset=pos.top-h*(alignment||0);return this.session.setScrollTop(offset),offset},this.STEPS=8,this.$calcSteps=function(fromValue,toValue){var i=0,l=this.STEPS,steps=[],func=function(t,x_min,dx){return dx*(Math.pow(t-1,3)+1)+x_min};for(i=0;l>i;++i)steps.push(func(i/this.STEPS,fromValue,toValue-fromValue));return steps},this.scrollToLine=function(line,center,animate,callback){var pos=this.$cursorLayer.getPixelPosition({row:line,column:0}),offset=pos.top;center&&(offset-=this.$size.scrollerHeight/2);var initialScroll=this.scrollTop;this.session.setScrollTop(offset),animate!==!1&&this.animateScrolling(initialScroll,callback)},this.animateScrolling=function(fromValue,callback){var toValue=this.scrollTop;if(this.$animatedScroll&&1e5>Math.abs(fromValue-toValue)){var _self=this,steps=_self.$calcSteps(fromValue,toValue);this.$inScrollAnimation=!0,clearInterval(this.$timer),_self.session.setScrollTop(steps.shift()),this.$timer=setInterval(function(){steps.length?(_self.session.setScrollTop(steps.shift()),_self.session.$scrollTop=toValue):null!=toValue?(_self.session.$scrollTop=-1,_self.session.setScrollTop(toValue),toValue=null):(_self.$timer=clearInterval(_self.$timer),_self.$inScrollAnimation=!1,callback&&callback())},10)}},this.scrollToY=function(scrollTop){this.scrollTop!==scrollTop&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=scrollTop)},this.scrollToX=function(scrollLeft){0>scrollLeft&&(scrollLeft=0),this.scrollLeft!==scrollLeft&&(this.scrollLeft=scrollLeft),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollBy=function(deltaX,deltaY){deltaY&&this.session.setScrollTop(this.session.getScrollTop()+deltaY),deltaX&&this.session.setScrollLeft(this.session.getScrollLeft()+deltaX)},this.isScrollableBy=function(deltaX,deltaY){return 0>deltaY&&this.session.getScrollTop()>=1?!0:deltaY>0&&-1>this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight?!0:void 0},this.pixelToScreenCoordinates=function(x,y){var canvasPos=this.scroller.getBoundingClientRect(),offset=(x+this.scrollLeft-canvasPos.left-this.$padding)/this.characterWidth,row=Math.floor((y+this.scrollTop-canvasPos.top)/this.lineHeight),col=Math.round(offset);return{row:row,column:col,side:offset-col>0?1:-1}},this.screenToTextCoordinates=function(x,y){var canvasPos=this.scroller.getBoundingClientRect(),col=Math.round((x+this.scrollLeft-canvasPos.left-this.$padding)/this.characterWidth),row=Math.floor((y+this.scrollTop-canvasPos.top)/this.lineHeight);return this.session.screenToDocumentPosition(row,Math.max(col,0))},this.textToScreenCoordinates=function(row,column){var canvasPos=this.scroller.getBoundingClientRect(),pos=this.session.documentToScreenPosition(row,column),x=this.$padding+Math.round(pos.column*this.characterWidth),y=pos.row*this.lineHeight;return{pageX:canvasPos.left+x-this.scrollLeft,pageY:canvasPos.top+y-this.scrollTop}},this.visualizeFocus=function(){dom.addCssClass(this.container,\"ace_focus\")},this.visualizeBlur=function(){dom.removeCssClass(this.container,\"ace_focus\")},this.showComposition=function(){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,dom.addCssClass(this.textarea,\"ace_composition\"),this.textarea.style.cssText=\"\",this.$moveTextAreaToCursor()},this.setCompositionText=function(){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(dom.removeCssClass(this.textarea,\"ace_composition\"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(theme){function afterLoad(theme){if(theme.cssClass){dom.importCssString(theme.cssText,theme.cssClass,_self.container.ownerDocument),_self.theme&&dom.removeCssClass(_self.container,_self.theme.cssClass),_self.$theme=theme.cssClass,_self.theme=theme,dom.addCssClass(_self.container,theme.cssClass),dom.setCssClass(_self.container,\"ace_dark\",theme.isDark);var padding=theme.padding||4;_self.$padding&&padding!=_self.$padding&&_self.setPadding(padding),_self.$size&&(_self.$size.width=0,_self.onResize()),_self._dispatchEvent(\"themeLoaded\",{theme:theme})}}var _self=this;if(this.$themeValue=theme,_self._dispatchEvent(\"themeChange\",{theme:theme}),theme&&\"string\"!=typeof theme)afterLoad(theme);else{var moduleName=theme||\"ace/theme/textmate\";config.loadModule([\"theme\",moduleName],afterLoad)}},this.getTheme=function(){return this.$themeValue},this.setStyle=function(style,include){dom.setCssClass(this.container,style,0!=include)},this.unsetStyle=function(style){dom.removeCssClass(this.container,style)},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(VirtualRenderer.prototype),config.defineOptions(VirtualRenderer.prototype,\"renderer\",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(value){this.$textLayer.setShowInvisibles(value)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(val){\"number\"==typeof val&&(this.$printMarginColumn=val),this.$showPrintMargin=!!val,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(show){this.$gutter.style.display=show?\"block\":\"none\",this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(show){dom.setCssClass(this.$gutter,\"ace_fade-fold-widgets\",show)},initialValue:!1},showFoldWidgets:{set:function(show){this.$gutterLayer.setShowFoldWidgets(show)},initialValue:!0},displayIndentGuides:{set:function(show){this.$textLayer.setDisplayIndentGuides(show)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(shouldHighlight){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=shouldHighlight?\"\":\"none\",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight(),void 0):(this.$gutterLineHighlight=dom.createElement(\"div\"),this.$gutterLineHighlight.className=\"ace_gutter-active-line\",this.$gutter.appendChild(this.$gutterLineHighlight),void 0)},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(alwaysVisible){this.$hScrollBarAlwaysVisible=alwaysVisible,this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(size){\"number\"==typeof size&&(size+=\"px\"),this.container.style.fontSize=size,this.updateFontSize()},initialValue:12},fontFamily:{set:function(name){this.container.style.fontFamily=name,this.updateFontSize()}}}),exports.VirtualRenderer=VirtualRenderer}),ace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"],function(acequire,exports){var dom=acequire(\"../lib/dom\"),oop=acequire(\"../lib/oop\"),lang=acequire(\"../lib/lang\"),EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,Gutter=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_gutter-layer\",parentEl.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this)};(function(){oop.implement(this,EventEmitter),this.setSession=function(session){this.session&&this.session.removeEventListener(\"change\",this.$updateAnnotations),this.session=session,session.on(\"change\",this.$updateAnnotations)},this.addGutterDecoration=function(row,className){window.console&&console.warn&&console.warn(\"deprecated use session.addGutterDecoration\"),this.session.addGutterDecoration(row,className)},this.removeGutterDecoration=function(row,className){window.console&&console.warn&&console.warn(\"deprecated use session.removeGutterDecoration\"),this.session.removeGutterDecoration(row,className)},this.setAnnotations=function(annotations){this.$annotations=[];for(var rowInfo,row,i=0;annotations.length>i;i++){var annotation=annotations[i],row=annotation.row,rowInfo=this.$annotations[row];rowInfo||(rowInfo=this.$annotations[row]={text:[]});var annoText=annotation.text;annoText=annoText?lang.escapeHTML(annoText):annotation.html||\"\",-1===rowInfo.text.indexOf(annoText)&&rowInfo.text.push(annoText);var type=annotation.type;\"error\"==type?rowInfo.className=\" ace_error\":\"warning\"==type&&\" ace_error\"!=rowInfo.className?rowInfo.className=\" ace_warning\":\"info\"!=type||rowInfo.className||(rowInfo.className=\" ace_info\")}},this.$updateAnnotations=function(e){if(this.$annotations.length){var delta=e.data,range=delta.range,firstRow=range.start.row,len=range.end.row-firstRow;if(0===len);else if(\"removeText\"==delta.action||\"removeLines\"==delta.action)this.$annotations.splice(firstRow,len+1,null);else{var args=Array(len+1);args.unshift(firstRow,1),this.$annotations.splice.apply(this.$annotations,args)}}},this.update=function(config){for(var emptyAnno={className:\"\"},html=[],i=config.firstRow,lastRow=config.lastRow,fold=this.session.getNextFoldLine(i),foldStart=fold?fold.start.row:1/0,foldWidgets=this.$showFoldWidgets&&this.session.foldWidgets,breakpoints=this.session.$breakpoints,decorations=this.session.$decorations,firstLineNumber=this.session.$firstLineNumber,lastLineNumber=0;;){if(i>foldStart&&(i=fold.end.row+1,fold=this.session.getNextFoldLine(i,fold),foldStart=fold?fold.start.row:1/0),i>lastRow)break;var annotation=this.$annotations[i]||emptyAnno;if(html.push(\"\u003Cdiv class='ace_gutter-cell \",breakpoints[i]||\"\",decorations[i]||\"\",annotation.className,\"' style='height:\",this.session.getRowLength(i)*config.lineHeight,\"px;'>\",lastLineNumber=i+firstLineNumber),foldWidgets){var c=foldWidgets[i];null==c&&(c=foldWidgets[i]=this.session.getFoldWidget(i)),c&&html.push(\"\u003Cspan class='ace_fold-widget ace_\",c,\"start\"==c&&i==foldStart&&fold.end.row>i?\" ace_closed\":\" ace_open\",\"' style='height:\",config.lineHeight,\"px\",\"'>\u003C/span>\")}html.push(\"\u003C/div>\"),i++}this.element=dom.setInnerHtml(this.element,html.join(\"\")),this.element.style.height=config.minHeight+\"px\",this.session.$useWrapMode&&(lastLineNumber=this.session.getLength());var gutterWidth=(\"\"+lastLineNumber).length*config.characterWidth,padding=this.$padding||this.$computePadding();gutterWidth+=padding.left+padding.right,gutterWidth!==this.gutterWidth&&(this.gutterWidth=gutterWidth,this.element.style.width=Math.ceil(this.gutterWidth)+\"px\",this._emit(\"changeGutterWidth\",gutterWidth))},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(show){show?dom.addCssClass(this.element,\"ace_folding-enabled\"):dom.removeCssClass(this.element,\"ace_folding-enabled\"),this.$showFoldWidgets=show,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var style=dom.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(style.paddingLeft)+1,this.$padding.right=parseInt(style.paddingRight),this.$padding},this.getRegion=function(point){var padding=this.$padding||this.$computePadding(),rect=this.element.getBoundingClientRect();return point.x\u003Cpadding.left+rect.left?\"markers\":this.$showFoldWidgets&&point.x>rect.right-padding.right?\"foldWidgets\":void 0}}).call(Gutter.prototype),exports.Gutter=Gutter}),ace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"],function(acequire,exports){var Range=acequire(\"../range\").Range,dom=acequire(\"../lib/dom\"),Marker=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_marker-layer\",parentEl.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(padding){this.$padding=padding},this.setSession=function(session){this.session=session},this.setMarkers=function(markers){this.markers=markers},this.update=function(config){var config=config||this.config;if(config){this.config=config;var html=[];for(var key in this.markers){var marker=this.markers[key];if(marker.range){var range=marker.range.clipRows(config.firstRow,config.lastRow);if(!range.isEmpty())if(range=range.toScreenRange(this.session),marker.renderer){var top=this.$getTop(range.start.row,config),left=this.$padding+range.start.column*config.characterWidth;marker.renderer(html,range,left,top,config)}else\"fullLine\"==marker.type?this.drawFullLineMarker(html,range,marker.clazz,config):\"screenLine\"==marker.type?this.drawScreenLineMarker(html,range,marker.clazz,config):range.isMultiLine()?\"text\"==marker.type?this.drawTextMarker(html,range,marker.clazz,config):this.drawMultiLineMarker(html,range,marker.clazz,config):this.drawSingleLineMarker(html,range,marker.clazz+\" ace_start\",config)}else marker.update(html,this,this.session,config)}this.element=dom.setInnerHtml(this.element,html.join(\"\"))}},this.$getTop=function(row,layerConfig){return(row-layerConfig.firstRowScreen)*layerConfig.lineHeight},this.drawTextMarker=function(stringBuilder,range,clazz,layerConfig){var row=range.start.row,lineRange=new Range(row,range.start.column,row,this.session.getScreenLastRowColumn(row));for(this.drawSingleLineMarker(stringBuilder,lineRange,clazz+\" ace_start\",layerConfig,1,\"text\"),row=range.end.row,lineRange=new Range(row,0,row,range.end.column),this.drawSingleLineMarker(stringBuilder,lineRange,clazz,layerConfig,0,\"text\"),row=range.start.row+1;range.end.row>row;row++)lineRange.start.row=row,lineRange.end.row=row,lineRange.end.column=this.session.getScreenLastRowColumn(row),this.drawSingleLineMarker(stringBuilder,lineRange,clazz,layerConfig,1,\"text\")},this.drawMultiLineMarker=function(stringBuilder,range,clazz,config){var padding=this.$padding,height=config.lineHeight,top=this.$getTop(range.start.row,config),left=padding+range.start.column*config.characterWidth;stringBuilder.push(\"\u003Cdiv class='\",clazz,\" ace_start' style='\",\"height:\",height,\"px;\",\"right:0;\",\"top:\",top,\"px;\",\"left:\",left,\"px;'>\u003C/div>\"),top=this.$getTop(range.end.row,config);var width=range.end.column*config.characterWidth;stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"width:\",width,\"px;\",\"top:\",top,\"px;\",\"left:\",padding,\"px;'>\u003C/div>\"),height=(range.end.row-range.start.row-1)*config.lineHeight,0>height||(top=this.$getTop(range.start.row+1,config),stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"right:0;\",\"top:\",top,\"px;\",\"left:\",padding,\"px;'>\u003C/div>\"))},this.drawSingleLineMarker=function(stringBuilder,range,clazz,config,extraLength){var height=config.lineHeight,width=(range.end.column+(extraLength||0)-range.start.column)*config.characterWidth,top=this.$getTop(range.start.row,config),left=this.$padding+range.start.column*config.characterWidth;stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"width:\",width,\"px;\",\"top:\",top,\"px;\",\"left:\",left,\"px;'>\u003C/div>\")\n},this.drawFullLineMarker=function(stringBuilder,range,clazz,config){var top=this.$getTop(range.start.row,config),height=config.lineHeight;range.start.row!=range.end.row&&(height+=this.$getTop(range.end.row,config)-top),stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"top:\",top,\"px;\",\"left:0;right:0;'>\u003C/div>\")},this.drawScreenLineMarker=function(stringBuilder,range,clazz,config){var top=this.$getTop(range.start.row,config),height=config.lineHeight;stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"top:\",top,\"px;\",\"left:0;right:0;'>\u003C/div>\")}}).call(Marker.prototype),exports.Marker=Marker}),ace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),dom=acequire(\"../lib/dom\"),lang=acequire(\"../lib/lang\"),useragent=acequire(\"../lib/useragent\"),EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,Text=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_text-layer\",parentEl.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){oop.implement(this,EventEmitter),this.EOF_CHAR=\"¶\",this.EOL_CHAR=\"¬\",this.TAB_CHAR=\"→\",this.SPACE_CHAR=\"·\",this.$padding=0,this.setPadding=function(padding){this.$padding=padding,this.element.style.padding=\"0 \"+padding+\"px\"},this.getLineHeight=function(){return this.$characterSize.height||1},this.getCharacterWidth=function(){return this.$characterSize.width||1},this.checkForSizeChanges=function(){var size=this.$measureSizes();if(size&&(this.$characterSize.width!==size.width||this.$characterSize.height!==size.height)){this.$measureNode.style.fontWeight=\"bold\";var boldSize=this.$measureSizes();this.$measureNode.style.fontWeight=\"\",this.$characterSize=size,this.allowBoldFonts=boldSize&&boldSize.width===size.width&&boldSize.height===size.height,this._emit(\"changeCharacterSize\",{data:size})}},this.$pollSizeChanges=function(){var self=this;this.$pollSizeChangesTimer=setInterval(function(){self.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=useragent.isIE||useragent.isOldGecko?function(){var n=1e3;if(!this.$measureNode){var measureNode=this.$measureNode=dom.createElement(\"div\"),style=measureNode.style;if(style.width=style.height=\"auto\",style.left=style.top=40*-n+\"px\",style.visibility=\"hidden\",style.position=\"fixed\",style.overflow=\"visible\",style.whiteSpace=\"nowrap\",measureNode.innerHTML=lang.stringRepeat(\"Xy\",n),this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(measureNode);else{for(var container=this.element.parentNode;!dom.hasCssClass(container,\"ace_editor\");)container=container.parentNode;container.appendChild(measureNode)}}if(!this.element.offsetWidth)return null;var style=this.$measureNode.style,computedStyle=dom.computedStyle(this.element);for(var prop in this.$fontStyles)style[prop]=computedStyle[prop];var size={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(2*n)};return 0==size.width||0==size.height?null:size}:function(){if(!this.$measureNode){var measureNode=this.$measureNode=dom.createElement(\"div\"),style=measureNode.style;style.width=style.height=\"auto\",style.left=style.top=\"-100px\",style.visibility=\"hidden\",style.position=\"fixed\",style.overflow=\"visible\",style.whiteSpace=\"nowrap\",measureNode.innerHTML=\"X\";for(var container=this.element.parentNode;container&&!dom.hasCssClass(container,\"ace_editor\");)container=container.parentNode;if(!container)return this.$measureNode=null;container.appendChild(measureNode)}var rect=this.$measureNode.getBoundingClientRect(),size={height:rect.height,width:rect.width};return 0==size.width||0==size.height?null:size},this.setSession=function(session){this.session=session,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(showInvisibles){return this.showInvisibles==showInvisibles?!1:(this.showInvisibles=showInvisibles,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(display){return this.displayIndentGuides==display?!1:(this.displayIndentGuides=display,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var tabSize=this.session.getTabSize();this.tabSize=tabSize;for(var tabStr=this.$tabStrings=[0],i=1;tabSize+1>i;i++)this.showInvisibles?tabStr.push(\"\u003Cspan class='ace_invisible'>\"+this.TAB_CHAR+lang.stringRepeat(\" \",i-1)+\"\u003C/span>\"):tabStr.push(lang.stringRepeat(\" \",i));if(this.displayIndentGuides){this.$indentGuideRe=/\\s\\S| \\t|\\t |\\s$/;var className=\"ace_indent-guide\";if(this.showInvisibles){className+=\" ace_invisible\";var spaceContent=lang.stringRepeat(this.SPACE_CHAR,this.tabSize),tabContent=this.TAB_CHAR+lang.stringRepeat(\" \",this.tabSize-1)}else var spaceContent=lang.stringRepeat(\" \",this.tabSize),tabContent=spaceContent;this.$tabStrings[\" \"]=\"\u003Cspan class='\"+className+\"'>\"+spaceContent+\"\u003C/span>\",this.$tabStrings[\"\t\"]=\"\u003Cspan class='\"+className+\"'>\"+tabContent+\"\u003C/span>\"}},this.updateLines=function(config,firstRow,lastRow){(this.config.lastRow!=config.lastRow||this.config.firstRow!=config.firstRow)&&this.scrollLines(config),this.config=config;for(var first=Math.max(firstRow,config.firstRow),last=Math.min(lastRow,config.lastRow),lineElements=this.element.childNodes,lineElementsIdx=0,row=config.firstRow;first>row;row++){var foldLine=this.session.getFoldLine(row);if(foldLine){if(foldLine.containsRow(first)){first=foldLine.start.row;break}row=foldLine.end.row}lineElementsIdx++}for(var row=first,foldLine=this.session.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;;){if(row>foldStart&&(row=foldLine.end.row+1,foldLine=this.session.getNextFoldLine(row,foldLine),foldStart=foldLine?foldLine.start.row:1/0),row>last)break;var lineElement=lineElements[lineElementsIdx++];if(lineElement){var html=[];this.$renderLine(html,row,!this.$useLineGroups(),row==foldStart?foldLine:!1),dom.setInnerHtml(lineElement,html.join(\"\"))}row++}},this.scrollLines=function(config){var oldConfig=this.config;if(this.config=config,!oldConfig||oldConfig.lastRow\u003Cconfig.firstRow)return this.update(config);if(config.lastRow\u003ColdConfig.firstRow)return this.update(config);var el=this.element;if(oldConfig.firstRow\u003Cconfig.firstRow)for(var row=this.session.getFoldedRowCount(oldConfig.firstRow,config.firstRow-1);row>0;row--)el.removeChild(el.firstChild);if(oldConfig.lastRow>config.lastRow)for(var row=this.session.getFoldedRowCount(config.lastRow+1,oldConfig.lastRow);row>0;row--)el.removeChild(el.lastChild);if(config.firstRow\u003ColdConfig.firstRow){var fragment=this.$renderLinesFragment(config,config.firstRow,oldConfig.firstRow-1);el.firstChild?el.insertBefore(fragment,el.firstChild):el.appendChild(fragment)}if(config.lastRow>oldConfig.lastRow){var fragment=this.$renderLinesFragment(config,oldConfig.lastRow+1,config.lastRow);el.appendChild(fragment)}},this.$renderLinesFragment=function(config,firstRow,lastRow){for(var fragment=this.element.ownerDocument.createDocumentFragment(),row=firstRow,foldLine=this.session.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;;){if(row>foldStart&&(row=foldLine.end.row+1,foldLine=this.session.getNextFoldLine(row,foldLine),foldStart=foldLine?foldLine.start.row:1/0),row>lastRow)break;var container=dom.createElement(\"div\"),html=[];if(this.$renderLine(html,row,!1,row==foldStart?foldLine:!1),container.innerHTML=html.join(\"\"),this.$useLineGroups())container.className=\"ace_line_group\",fragment.appendChild(container);else for(var lines=container.childNodes;lines.length;)fragment.appendChild(lines[0]);row++}return fragment},this.update=function(config){this.config=config;for(var html=[],firstRow=config.firstRow,lastRow=config.lastRow,row=firstRow,foldLine=this.session.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;;){if(row>foldStart&&(row=foldLine.end.row+1,foldLine=this.session.getNextFoldLine(row,foldLine),foldStart=foldLine?foldLine.start.row:1/0),row>lastRow)break;this.$useLineGroups()&&html.push(\"\u003Cdiv class='ace_line_group'>\"),this.$renderLine(html,row,!1,row==foldStart?foldLine:!1),this.$useLineGroups()&&html.push(\"\u003C/div>\"),row++}this.element=dom.setInnerHtml(this.element,html.join(\"\"))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(stringBuilder,screenColumn,token,value){var self=this,replaceReg=/\\t|&|\u003C|( +)|([\\x00-\\x1f\\x80-\\xa0\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]/g,replaceFunc=function(c,a,b,tabIdx){if(a)return self.showInvisibles?\"\u003Cspan class='ace_invisible'>\"+lang.stringRepeat(self.SPACE_CHAR,c.length)+\"\u003C/span>\":lang.stringRepeat(\" \",c.length);if(\"&\"==c)return\"&\";if(\"\u003C\"==c)return\"<\";if(\"\t\"==c){var tabSize=self.session.getScreenTabSize(screenColumn+tabIdx);return screenColumn+=tabSize-1,self.$tabStrings[tabSize]}if(\" \"==c){var classToUse=self.showInvisibles?\"ace_cjk ace_invisible\":\"ace_cjk\",space=self.showInvisibles?self.SPACE_CHAR:\"\";return screenColumn+=1,\"\u003Cspan class='\"+classToUse+\"' style='width:\"+2*self.config.characterWidth+\"px'>\"+space+\"\u003C/span>\"}return b?\"\u003Cspan class='ace_invisible ace_invalid'>\"+self.SPACE_CHAR+\"\u003C/span>\":(screenColumn+=1,\"\u003Cspan class='ace_cjk' style='width:\"+2*self.config.characterWidth+\"px'>\"+c+\"\u003C/span>\")},output=value.replace(replaceReg,replaceFunc);if(this.$textToken[token.type])stringBuilder.push(output);else{var classes=\"ace_\"+token.type.replace(/\\./g,\" ace_\"),style=\"\";\"fold\"==token.type&&(style=\" style='width:\"+token.value.length*this.config.characterWidth+\"px;' \"),stringBuilder.push(\"\u003Cspan class='\",classes,\"'\",style,\">\",output,\"\u003C/span>\")}return screenColumn+value.length},this.renderIndentGuide=function(stringBuilder,value){var cols=value.search(this.$indentGuideRe);return 0>=cols?value:\" \"==value[0]?(cols-=cols%this.tabSize,stringBuilder.push(lang.stringRepeat(this.$tabStrings[\" \"],cols/this.tabSize)),value.substr(cols)):\"\t\"==value[0]?(stringBuilder.push(lang.stringRepeat(this.$tabStrings[\"\t\"],cols)),value.substr(cols)):value},this.$renderWrappedLine=function(stringBuilder,tokens,splits,onlyContents){for(var chars=0,split=0,splitChars=splits[0],screenColumn=0,i=0;tokens.length>i;i++){var token=tokens[i],value=token.value;if(0==i&&this.displayIndentGuides){if(chars=value.length,value=this.renderIndentGuide(stringBuilder,value),!value)continue;chars-=value.length}if(splitChars>chars+value.length)screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value),chars+=value.length;else{for(;chars+value.length>=splitChars;)screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value.substring(0,splitChars-chars)),value=value.substring(splitChars-chars),chars=splitChars,onlyContents||stringBuilder.push(\"\u003C/div>\",\"\u003Cdiv class='ace_line' style='height:\",this.config.lineHeight,\"px'>\"),split++,screenColumn=0,splitChars=splits[split]||Number.MAX_VALUE;0!=value.length&&(chars+=value.length,screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value))}}},this.$renderSimpleLine=function(stringBuilder,tokens){var screenColumn=0,token=tokens[0],value=token.value;this.displayIndentGuides&&(value=this.renderIndentGuide(stringBuilder,value)),value&&(screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value));for(var i=1;tokens.length>i;i++)token=tokens[i],value=token.value,screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value)},this.$renderLine=function(stringBuilder,row,onlyContents,foldLine){if(foldLine||0==foldLine||(foldLine=this.session.getFoldLine(row)),foldLine)var tokens=this.$getFoldLineTokens(row,foldLine);else var tokens=this.session.getTokens(row);if(onlyContents||stringBuilder.push(\"\u003Cdiv class='ace_line' style='height:\",this.config.lineHeight,\"px'>\"),tokens.length){var splits=this.session.getRowSplitData(row);splits&&splits.length?this.$renderWrappedLine(stringBuilder,tokens,splits,onlyContents):this.$renderSimpleLine(stringBuilder,tokens)}this.showInvisibles&&(foldLine&&(row=foldLine.end.row),stringBuilder.push(\"\u003Cspan class='ace_invisible'>\",row==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,\"\u003C/span>\")),onlyContents||stringBuilder.push(\"\u003C/div>\")},this.$getFoldLineTokens=function(row,foldLine){function addTokens(tokens,from,to){for(var idx=0,col=0;from>col+tokens[idx].value.length;)if(col+=tokens[idx].value.length,idx++,idx==tokens.length)return;if(col!=from){var value=tokens[idx].value.substring(from-col);value.length>to-from&&(value=value.substring(0,to-from)),renderTokens.push({type:tokens[idx].type,value:value}),col=from+value.length,idx+=1}for(;to>col&&tokens.length>idx;){var value=tokens[idx].value;value.length+col>to?renderTokens.push({type:tokens[idx].type,value:value.substring(0,to-col)}):renderTokens.push(tokens[idx]),col+=value.length,idx+=1}}var session=this.session,renderTokens=[],tokens=session.getTokens(row);return foldLine.walk(function(placeholder,row,column,lastColumn,isNewRow){null!=placeholder?renderTokens.push({type:\"fold\",value:placeholder}):(isNewRow&&(tokens=session.getTokens(row)),tokens.length&&addTokens(tokens,lastColumn,column))},foldLine.end.row,this.session.getLine(foldLine.end.row).length),renderTokens},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(Text.prototype),exports.Text=Text}),ace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){var dom=acequire(\"../lib/dom\"),Cursor=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_cursor-layer\",parentEl.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),dom.addCssClass(this.element,\"ace_hidden-cursors\")};(function(){this.$padding=0,this.setPadding=function(padding){this.$padding=padding},this.setSession=function(session){this.session=session},this.setBlinking=function(blinking){blinking!=this.isBlinking&&(this.isBlinking=blinking,this.restartTimer())},this.setBlinkInterval=function(blinkInterval){blinkInterval!=this.blinkInterval&&(this.blinkInterval=blinkInterval,this.restartTimer())},this.setSmoothBlinking=function(smoothBlinking){smoothBlinking!=this.smoothBlinking&&(this.smoothBlinking=smoothBlinking,smoothBlinking?dom.addCssClass(this.element,\"ace_smooth-blinking\"):dom.removeCssClass(this.element,\"ace_smooth-blinking\"),this.restartTimer())},this.addCursor=function(){var el=dom.createElement(\"div\");return el.className=\"ace_cursor\",this.element.appendChild(el),this.cursors.push(el),el},this.removeCursor=function(){if(this.cursors.length>1){var el=this.cursors.pop();return el.parentNode.removeChild(el),el}},this.hideCursor=function(){this.isVisible=!1,dom.addCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,dom.removeCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.restartTimer=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&dom.removeCssClass(this.element,\"ace_smooth-blinking\");for(var i=this.cursors.length;i--;)this.cursors[i].style.opacity=\"\";if(this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){dom.addCssClass(this.element,\"ace_smooth-blinking\")}.bind(this));var blink=function(){this.timeoutId=setTimeout(function(){for(var i=this.cursors.length;i--;)this.cursors[i].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){for(var i=this.cursors.length;i--;)this.cursors[i].style.opacity=\"\";blink()}.bind(this),this.blinkInterval),blink()}},this.getPixelPosition=function(position,onScreen){if(!this.config||!this.session)return{left:0,top:0};position||(position=this.session.selection.getCursor());var pos=this.session.documentToScreenPosition(position),cursorLeft=this.$padding+pos.column*this.config.characterWidth,cursorTop=(pos.row-(onScreen?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:cursorLeft,top:cursorTop}},this.update=function(config){this.config=config;var selections=this.session.$selectionMarkers,i=0,cursorIndex=0;(void 0===selections||0===selections.length)&&(selections=[{cursor:null}]);for(var i=0,n=selections.length;n>i;i++){var pixelPos=this.getPixelPosition(selections[i].cursor,!0);if(!((pixelPos.top>config.height+config.offset||pixelPos.top\u003C-config.offset)&&i>1)){var style=(this.cursors[cursorIndex++]||this.addCursor()).style;style.left=pixelPos.left+\"px\",style.top=pixelPos.top+\"px\",style.width=config.characterWidth+\"px\",style.height=config.lineHeight+\"px\"}}for(;this.cursors.length>cursorIndex;)this.removeCursor();var overwrite=this.session.getOverwrite();this.$setOverwrite(overwrite),this.$pixelPos=pixelPos,this.restartTimer()},this.$setOverwrite=function(overwrite){overwrite!=this.overwrite&&(this.overwrite=overwrite,overwrite?dom.addCssClass(this.element,\"ace_overwrite-cursors\"):dom.removeCssClass(this.element,\"ace_overwrite-cursors\"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(Cursor.prototype),exports.Cursor=Cursor}),ace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),dom=acequire(\"./lib/dom\"),event=acequire(\"./lib/event\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,ScrollBar=function(parent){this.element=dom.createElement(\"div\"),this.element.className=\"ace_scrollbar\",this.inner=dom.createElement(\"div\"),this.inner.className=\"ace_scrollbar-inner\",this.element.appendChild(this.inner),parent.appendChild(this.element),this.width=dom.scrollbarWidth(parent.ownerDocument),this.element.style.width=(this.width||15)+5+\"px\",event.addListener(this.element,\"scroll\",this.onScroll.bind(this))};(function(){oop.implement(this,EventEmitter),this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit(\"scroll\",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.width},this.setHeight=function(height){this.element.style.height=height+\"px\"},this.setInnerHeight=function(height){this.inner.style.height=height+\"px\"},this.setScrollTop=function(scrollTop){this.scrollTop!=scrollTop&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=scrollTop)}}).call(ScrollBar.prototype),exports.ScrollBar=ScrollBar}),ace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(acequire,exports){var event=acequire(\"./lib/event\"),RenderLoop=function(onRender,win){this.onRender=onRender,this.pending=!1,this.changes=0,this.window=win||window};(function(){this.schedule=function(change){if(this.changes=this.changes|change,!this.pending){this.pending=!0;var _self=this;event.nextFrame(function(){_self.pending=!1;for(var changes;changes=_self.changes;)_self.changes=0,_self.onRender(changes)},this.window)}}}).call(RenderLoop.prototype),exports.RenderLoop=RenderLoop}),ace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\"],function(acequire,exports){function find(session,needle,dir){return search.$options.wrap=!0,search.$options.needle=needle,search.$options.backwards=-1==dir,search.find(session)}function isSamePoint(p1,p2){return p1.row==p2.row&&p1.column==p2.column}function MultiSelect(editor){editor.$onAddRange=editor.$onAddRange.bind(editor),editor.$onRemoveRange=editor.$onRemoveRange.bind(editor),editor.$onMultiSelect=editor.$onMultiSelect.bind(editor),editor.$onSingleSelect=editor.$onSingleSelect.bind(editor),exports.onSessionChange.call(editor,editor),editor.on(\"changeSession\",exports.onSessionChange.bind(editor)),editor.on(\"mousedown\",onMouseDown),editor.commands.addCommands(commands.defaultCommands),addAltCursorListeners(editor)}function addAltCursorListeners(editor){function reset(){altCursor&&(contentEl.style.cursor=\"\",altCursor=!1)}var el=editor.textInput.getElement(),altCursor=!1,contentEl=editor.renderer.content;event.addListener(el,\"keydown\",function(e){18!=e.keyCode||e.ctrlKey||e.shiftKey||e.metaKey?altCursor&&(contentEl.style.cursor=\"\"):altCursor||(contentEl.style.cursor=\"crosshair\",altCursor=!0)}),event.addListener(el,\"keyup\",reset),event.addListener(el,\"blur\",reset)}var RangeList=acequire(\"./range_list\").RangeList,Range=acequire(\"./range\").Range,Selection=acequire(\"./selection\").Selection,onMouseDown=acequire(\"./mouse/multi_select_handler\").onMouseDown,event=acequire(\"./lib/event\"),lang=acequire(\"./lib/lang\"),commands=acequire(\"./commands/multi_select_commands\");exports.commands=commands.defaultCommands.concat(commands.multiSelectCommands);var Search=acequire(\"./search\").Search,search=new Search,EditSession=acequire(\"./edit_session\").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(EditSession.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(range,$blockChangeEvents){if(range){if(!this.inMultiSelectMode&&0==this.rangeCount){var oldRange=this.toOrientedRange();if(this.rangeList.add(oldRange),this.rangeList.add(range),2!=this.rangeList.ranges.length)return this.rangeList.removeAll(),$blockChangeEvents||this.fromOrientedRange(range);this.rangeList.removeAll(),this.rangeList.add(oldRange),this.$onAddRange(oldRange)}range.cursor||(range.cursor=range.end);var removed=this.rangeList.add(range);return this.$onAddRange(range),removed.length&&this.$onRemoveRange(removed),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit(\"multiSelect\"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),$blockChangeEvents||this.fromOrientedRange(range)}},this.toSingleRange=function(range){range=range||this.ranges[0];var removed=this.rangeList.removeAll();removed.length&&this.$onRemoveRange(removed),range&&this.fromOrientedRange(range)},this.substractPoint=function(pos){var removed=this.rangeList.substractPoint(pos);return removed?(this.$onRemoveRange(removed),removed[0]):void 0},this.mergeOverlappingRanges=function(){var removed=this.rangeList.merge();removed.length?this.$onRemoveRange(removed):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(range){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(range),this._emit(\"addRange\",{range:range})},this.$onRemoveRange=function(removed){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var lastRange=this.rangeList.ranges.pop();removed.push(lastRange),this.rangeCount=0}for(var i=removed.length;i--;){var index=this.ranges.indexOf(removed[i]);this.ranges.splice(index,1)}this._emit(\"removeRange\",{ranges:removed}),0==this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit(\"singleSelect\"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),lastRange=lastRange||this.ranges[0],lastRange&&!lastRange.isEqual(this.getRange())&&this.fromOrientedRange(lastRange)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new RangeList,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeList.ranges.concat()},this.splitIntoLines=function(){if(this.rangeCount>1){var ranges=this.rangeList.ranges,lastRange=ranges[ranges.length-1],range=Range.fromPoints(ranges[0].start,lastRange.end);this.toSingleRange(),this.setSelectionRange(range,lastRange.cursor==lastRange.start)}else{var range=this.getRange(),isBackwards=this.isBackwards(),startRow=range.start.row,endRow=range.end.row;if(startRow==endRow){if(isBackwards)var start=range.end,end=range.start;else var start=range.start,end=range.end;return this.addRange(Range.fromPoints(end,end)),this.addRange(Range.fromPoints(start,start)),void 0}var rectSel=[],r=this.getLineRange(startRow,!0);r.start.column=range.start.column,rectSel.push(r);for(var i=startRow+1;endRow>i;i++)rectSel.push(this.getLineRange(i,!0));r=this.getLineRange(endRow,!0),r.end.column=range.end.column,rectSel.push(r),rectSel.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var ranges=this.rangeList.ranges,lastRange=ranges[ranges.length-1],range=Range.fromPoints(ranges[0].start,lastRange.end);this.toSingleRange(),this.setSelectionRange(range,lastRange.cursor==lastRange.start)}else{var cursor=this.session.documentToScreenPosition(this.selectionLead),anchor=this.session.documentToScreenPosition(this.selectionAnchor),rectSel=this.rectangularRangeBlock(cursor,anchor);rectSel.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(screenCursor,screenAnchor,includeEmptyLines){var rectSel=[],xBackwards=screenCursor.column\u003CscreenAnchor.column;if(xBackwards)var startColumn=screenCursor.column,endColumn=screenAnchor.column;else var startColumn=screenAnchor.column,endColumn=screenCursor.column;var yBackwards=screenCursor.row\u003CscreenAnchor.row;if(yBackwards)var startRow=screenCursor.row,endRow=screenAnchor.row;else var startRow=screenAnchor.row,endRow=screenCursor.row;0>startColumn&&(startColumn=0),0>startRow&&(startRow=0),startRow==endRow&&(includeEmptyLines=!0);for(var row=startRow;endRow>=row;row++){var range=Range.fromPoints(this.session.screenToDocumentPosition(row,startColumn),this.session.screenToDocumentPosition(row,endColumn));if(range.isEmpty()){if(docEnd&&isSamePoint(range.end,docEnd))break;var docEnd=range.end}range.cursor=xBackwards?range.start:range.end,rectSel.push(range)}if(yBackwards&&rectSel.reverse(),!includeEmptyLines){for(var end=rectSel.length-1;rectSel[end].isEmpty()&&end>0;)end--;if(end>0)for(var start=0;rectSel[start].isEmpty();)start++;for(var i=end;i>=start;i--)rectSel[i].isEmpty()&&rectSel.splice(i,1)}return rectSel}}.call(Selection.prototype);var Editor=acequire(\"./editor\").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(orientedRange){orientedRange.cursor||(orientedRange.cursor=orientedRange.end);var style=this.getSelectionStyle();return orientedRange.marker=this.session.addMarker(orientedRange,\"ace_selection\",style),this.session.$selectionMarkers.push(orientedRange),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,orientedRange},this.removeSelectionMarker=function(range){if(range.marker){this.session.removeMarker(range.marker);var index=this.session.$selectionMarkers.indexOf(range);-1!=index&&this.session.$selectionMarkers.splice(index,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(ranges){for(var markerList=this.session.$selectionMarkers,i=ranges.length;i--;){var range=ranges[i];if(range.marker){this.session.removeMarker(range.marker);var index=markerList.indexOf(range);-1!=index&&markerList.splice(index,1)}}this.session.selectionMarkerCount=markerList.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle(\"ace_multiselect\"),this.keyBinding.addKeyboardHandler(commands.keyboardHandler),this.commands.on(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle(\"ace_multiselect\"),this.keyBinding.removeKeyboardHandler(commands.keyboardHandler),this.commands.removeEventListener(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onMultiSelectExec=function(e){var command=e.command,editor=e.editor;editor.multiSelect&&(command.multiSelectAction?\"forEach\"==command.multiSelectAction?editor.forEachSelection(command,e.args):\"forEachLine\"==command.multiSelectAction?editor.forEachSelection(command,e.args,!0):\"single\"==command.multiSelectAction?(editor.exitMultiSelectMode(),command.exec(editor,e.args||{})):command.multiSelectAction(editor,e.args||{}):(command.exec(editor,e.args||{}),editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()),editor.multiSelect.mergeOverlappingRanges()),e.preventDefault())},this.forEachSelection=function(cmd,args,$byLines){if(!this.inVirtualSelectionMode){var session=this.session,selection=this.selection,rangeList=selection.rangeList,reg=selection._eventRegistry;selection._eventRegistry={};var tmpSel=new Selection(session);this.inVirtualSelectionMode=!0;for(var i=rangeList.ranges.length;i--;){if($byLines)for(;i>0&&rangeList.ranges[i].start.row==rangeList.ranges[i-1].end.row;)i--;tmpSel.fromOrientedRange(rangeList.ranges[i]),this.selection=session.selection=tmpSel,cmd.exec(this,args||{}),tmpSel.toOrientedRange(rangeList.ranges[i])}tmpSel.detach(),this.selection=session.selection=selection,this.inVirtualSelectionMode=!1,selection._eventRegistry=reg,selection.mergeOverlappingRanges(),this.onCursorChange(),this.onSelectionChange()}},this.exitMultiSelectMode=function(){this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getCopyText=function(){var text=\"\";if(this.inMultiSelectMode){var ranges=this.multiSelect.rangeList.ranges;text=[];for(var i=0;ranges.length>i;i++)text.push(this.session.getTextRange(ranges[i]));text=text.join(this.session.getDocument().getNewLineCharacter())}else this.selection.isEmpty()||(text=this.session.getTextRange(this.getSelectionRange()));return text},this.onPaste=function(text){if(!this.$readOnly){if(this._signal(\"paste\",text),!this.inMultiSelectMode||this.inVirtualSelectionMode)return this.insert(text);var lines=text.split(/\\r\\n|\\r|\\n/),ranges=this.selection.rangeList.ranges;if(lines.length>ranges.length||2>=lines.length||!lines[1])return this.commands.exec(\"insertstring\",this,text);for(var i=ranges.length;i--;){var range=ranges[i];range.isEmpty()||this.session.remove(range),this.session.insert(range.start,lines[i])}}},this.findAll=function(needle,options,additive){options=options||{},options.needle=needle||options.needle,this.$search.set(options);var ranges=this.$search.findAll(this.session);if(!ranges.length)return 0;this.$blockScrolling+=1;var selection=this.multiSelect;additive||selection.toSingleRange(ranges[0]);for(var i=ranges.length;i--;)selection.addRange(ranges[i],!0);return this.$blockScrolling-=1,ranges.length},this.selectMoreLines=function(dir,skip){var range=this.selection.toOrientedRange(),isBackwards=range.cursor==range.end,screenLead=this.session.documentToScreenPosition(range.cursor);this.selection.$desiredColumn&&(screenLead.column=this.selection.$desiredColumn);var lead=this.session.screenToDocumentPosition(screenLead.row+dir,screenLead.column);if(range.isEmpty())var anchor=lead;else var screenAnchor=this.session.documentToScreenPosition(isBackwards?range.end:range.start),anchor=this.session.screenToDocumentPosition(screenAnchor.row+dir,screenAnchor.column);if(isBackwards){var newRange=Range.fromPoints(lead,anchor);newRange.cursor=newRange.start}else{var newRange=Range.fromPoints(anchor,lead);newRange.cursor=newRange.end\n}if(newRange.desiredColumn=screenLead.column,this.selection.inMultiSelectMode){if(skip)var toRemove=range.cursor}else this.selection.addRange(range);this.selection.addRange(newRange),toRemove&&this.selection.substractPoint(toRemove)},this.transposeSelections=function(dir){for(var session=this.session,sel=session.multiSelect,all=sel.ranges,i=all.length;i--;){var range=all[i];if(range.isEmpty()){var tmp=session.getWordRange(range.start.row,range.start.column);range.start.row=tmp.start.row,range.start.column=tmp.start.column,range.end.row=tmp.end.row,range.end.column=tmp.end.column}}sel.mergeOverlappingRanges();for(var words=[],i=all.length;i--;){var range=all[i];words.unshift(session.getTextRange(range))}0>dir?words.unshift(words.pop()):words.push(words.shift());for(var i=all.length;i--;){var range=all[i],tmp=range.clone();session.replace(range,words[i]),range.start.row=tmp.start.row,range.start.column=tmp.start.column}},this.selectMore=function(dir,skip){var session=this.session,sel=session.multiSelect,range=sel.toOrientedRange();if(range.isEmpty()){var range=session.getWordRange(range.start.row,range.start.column);range.cursor=range.end,this.multiSelect.addRange(range)}var needle=session.getTextRange(range),newRange=find(session,needle,dir);newRange&&(newRange.cursor=-1==dir?newRange.start:newRange.end,this.multiSelect.addRange(newRange)),skip&&this.multiSelect.substractPoint(range.cursor)},this.alignCursors=function(){var session=this.session,sel=session.multiSelect,ranges=sel.ranges;if(ranges.length){var row=-1,sameRowRanges=ranges.filter(function(r){return r.cursor.row==row?!0:(row=r.cursor.row,void 0)});sel.$onRemoveRange(sameRowRanges);var maxCol=0,minSpace=1/0,spaceOffsets=ranges.map(function(r){var p=r.cursor,line=session.getLine(p.row),spaceOffset=line.substr(p.column).search(/\\S/g);return-1==spaceOffset&&(spaceOffset=0),p.column>maxCol&&(maxCol=p.column),minSpace>spaceOffset&&(minSpace=spaceOffset),spaceOffset});ranges.forEach(function(r,i){var p=r.cursor,l=maxCol-p.column,d=spaceOffsets[i]-minSpace;l>d?session.insert(p,lang.stringRepeat(\" \",l-d)):session.remove(new Range(p.row,p.column,p.row,p.column-l+d)),r.start.column=r.end.column=maxCol,r.start.row=r.end.row=p.row,r.cursor=r.end}),sel.fromOrientedRange(ranges[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var range=this.selection.getRange(),fr=range.start.row,lr=range.end.row,lines=this.session.doc.removeLines(fr,lr);lines=this.$reAlignText(lines),this.session.doc.insertLines(fr,lines),range.start.column=0,range.end.column=lines[lines.length-1].length,this.selection.setRange(range)}},this.$reAlignText=function(lines){function spaces(n){return lang.stringRepeat(\" \",n)}function alignLeft(m){return m[2]?spaces(startW)+m[2]+spaces(textW-m[2].length+endW)+m[4].replace(/^([=:])\\s+/,\"$1 \"):m[0]}function alignRight(m){return m[2]?spaces(startW+textW-m[2].length)+m[2]+spaces(endW,\" \")+m[4].replace(/^([=:])\\s+/,\"$1 \"):m[0]}function unAlign(m){return m[2]?spaces(startW)+m[2]+spaces(endW)+m[4].replace(/^([=:])\\s+/,\"$1 \"):m[0]}var startW,textW,endW,isLeftAligned=!0,isRightAligned=!0;return lines.map(function(line){var m=line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);return m?null==startW?(startW=m[1].length,textW=m[2].length,endW=m[3].length,m):(startW+textW+endW!=m[1].length+m[2].length+m[3].length&&(isRightAligned=!1),startW!=m[1].length&&(isLeftAligned=!1),startW>m[1].length&&(startW=m[1].length),m[2].length>textW&&(textW=m[2].length),endW>m[3].length&&(endW=m[3].length),m):[line]}).map(isLeftAligned?isRightAligned?alignRight:alignLeft:unAlign)}}).call(Editor.prototype),exports.onSessionChange=function(e){var session=e.session;session.multiSelect||(session.$selectionMarkers=[],session.selection.$initRangeList(),session.multiSelect=session.selection),this.multiSelect=session.multiSelect;var oldSession=e.oldSession;oldSession&&(oldSession.multiSelect.removeEventListener(\"addRange\",this.$onAddRange),oldSession.multiSelect.removeEventListener(\"removeRange\",this.$onRemoveRange),oldSession.multiSelect.removeEventListener(\"multiSelect\",this.$onMultiSelect),oldSession.multiSelect.removeEventListener(\"singleSelect\",this.$onSingleSelect)),session.multiSelect.on(\"addRange\",this.$onAddRange),session.multiSelect.on(\"removeRange\",this.$onRemoveRange),session.multiSelect.on(\"multiSelect\",this.$onMultiSelect),session.multiSelect.on(\"singleSelect\",this.$onSingleSelect),this.inMultiSelectMode!=session.selection.inMultiSelectMode&&(session.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},exports.MultiSelect=MultiSelect}),ace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(acequire,exports){function isSamePoint(p1,p2){return p1.row==p2.row&&p1.column==p2.column}function onMouseDown(e){var ev=e.domEvent,alt=ev.altKey,shift=ev.shiftKey,ctrl=e.getAccelKey(),button=e.getButton();if(e.editor.inMultiSelectMode&&2==button)return e.editor.textInput.onContextMenu(e.domEvent),void 0;if(!ctrl&&!alt)return 0==button&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode(),void 0;var editor=e.editor,selection=editor.selection,isMultiSelect=editor.inMultiSelectMode,pos=e.getDocumentPosition(),cursor=selection.getCursor(),inSelection=e.inSelection()||selection.isEmpty()&&isSamePoint(pos,cursor),mouseX=e.x,mouseY=e.y,onMouseSelection=function(e){mouseX=e.clientX,mouseY=e.clientY},blockSelect=function(){var newCursor=editor.renderer.pixelToScreenCoordinates(mouseX,mouseY),cursor=session.screenToDocumentPosition(newCursor.row,newCursor.column);isSamePoint(screenCursor,newCursor)&&isSamePoint(cursor,selection.selectionLead)||(screenCursor=newCursor,editor.selection.moveCursorToPosition(cursor),editor.selection.clearSelection(),editor.renderer.scrollCursorIntoView(),editor.removeSelectionMarkers(rectSel),rectSel=selection.rectangularRangeBlock(screenCursor,screenAnchor),rectSel.forEach(editor.addSelectionMarker,editor),editor.updateSelectionMarkers())},session=editor.session,screenAnchor=editor.renderer.pixelToScreenCoordinates(mouseX,mouseY),screenCursor=screenAnchor;if(!ctrl||shift||alt||0!=button){if(alt&&0==button){e.stop(),isMultiSelect&&!ctrl?selection.toSingleRange():!isMultiSelect&&ctrl&&selection.addRange();var rectSel=[];shift?(screenAnchor=session.documentToScreenPosition(selection.lead),blockSelect()):(selection.moveCursorToPosition(pos),selection.clearSelection());var onMouseSelectionEnd=function(){clearInterval(timerId),editor.removeSelectionMarkers(rectSel);for(var i=0;rectSel.length>i;i++)selection.addRange(rectSel[i])},onSelectionInterval=blockSelect;event.capture(editor.container,onMouseSelection,onMouseSelectionEnd);var timerId=setInterval(function(){onSelectionInterval()},20);return e.preventDefault()}}else{if(!isMultiSelect&&inSelection)return;if(!isMultiSelect){var range=selection.toOrientedRange();editor.addSelectionMarker(range)}var oldRange=selection.rangeList.rangeAtPoint(pos);editor.once(\"mouseup\",function(){var tmpSel=selection.toOrientedRange();oldRange&&tmpSel.isEmpty()&&isSamePoint(oldRange.cursor,tmpSel.cursor)?selection.substractPoint(tmpSel.cursor):(range&&(editor.removeSelectionMarker(range),selection.addRange(range)),selection.addRange(tmpSel))})}}var event=acequire(\"../lib/event\");exports.onMouseDown=onMouseDown}),ace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"],function(acequire,exports){exports.defaultCommands=[{name:\"addCursorAbove\",exec:function(editor){editor.selectMoreLines(-1)},bindKey:{win:\"Ctrl-Alt-Up\",mac:\"Ctrl-Alt-Up\"},readonly:!0},{name:\"addCursorBelow\",exec:function(editor){editor.selectMoreLines(1)},bindKey:{win:\"Ctrl-Alt-Down\",mac:\"Ctrl-Alt-Down\"},readonly:!0},{name:\"addCursorAboveSkipCurrent\",exec:function(editor){editor.selectMoreLines(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Up\",mac:\"Ctrl-Alt-Shift-Up\"},readonly:!0},{name:\"addCursorBelowSkipCurrent\",exec:function(editor){editor.selectMoreLines(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Down\",mac:\"Ctrl-Alt-Shift-Down\"},readonly:!0},{name:\"selectMoreBefore\",exec:function(editor){editor.selectMore(-1)},bindKey:{win:\"Ctrl-Alt-Left\",mac:\"Ctrl-Alt-Left\"},readonly:!0},{name:\"selectMoreAfter\",exec:function(editor){editor.selectMore(1)},bindKey:{win:\"Ctrl-Alt-Right\",mac:\"Ctrl-Alt-Right\"},readonly:!0},{name:\"selectNextBefore\",exec:function(editor){editor.selectMore(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Left\",mac:\"Ctrl-Alt-Shift-Left\"},readonly:!0},{name:\"selectNextAfter\",exec:function(editor){editor.selectMore(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Right\",mac:\"Ctrl-Alt-Shift-Right\"},readonly:!0},{name:\"splitIntoLines\",exec:function(editor){editor.multiSelect.splitIntoLines()},bindKey:{win:\"Ctrl-Alt-L\",mac:\"Ctrl-Alt-L\"},readonly:!0},{name:\"alignCursors\",exec:function(editor){editor.alignCursors()},bindKey:{win:\"Ctrl-Alt-A\",mac:\"Ctrl-Alt-A\"}}],exports.multiSelectCommands=[{name:\"singleSelection\",bindKey:\"esc\",exec:function(editor){editor.exitMultiSelectMode()},readonly:!0,isAvailable:function(editor){return editor&&editor.inMultiSelectMode}}];var HashHandler=acequire(\"../keyboard/hash_handler\").HashHandler;exports.keyboardHandler=new HashHandler(exports.multiSelectCommands)}),ace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/config\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,config=acequire(\"../config\"),WorkerClient=function(topLevelNamespaces,mod,classname){this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.onError=this.onError.bind(this);var workerUrl;if(config.get(\"packaged\"))workerUrl=config.moduleUrl(mod.id,\"worker\");else{var normalizePath=this.$normalizePath;acequire.nameToUrl&&!acequire.toUrl&&(acequire.toUrl=acequire.nameToUrl),workerUrl=normalizePath(acequire.toUrl(\"ace/worker/worker.js\",null,\"_\"));var tlns={};topLevelNamespaces.forEach(function(ns){tlns[ns]=normalizePath(acequire.toUrl(ns,null,\"_\").replace(/(\\.js)?(\\?.*)?$/,\"\"))})}var workerSrc=mod.src,Blob=require(\"w3c-blob\"),blob=new Blob([workerSrc],{type:\"application/javascript\"}),blobUrl=(window.URL||window.webkitURL).createObjectURL(blob);this.$worker=new Worker(blobUrl),this.$worker.postMessage({init:!0,tlns:tlns,module:mod.id,classname:classname}),this.callbackId=1,this.callbacks={},this.$worker.onerror=this.onError,this.$worker.onmessage=this.onMessage};(function(){oop.implement(this,EventEmitter),this.onError=function(e){throw window.console&&console.log&&console.log(e),e},this.onMessage=function(e){var msg=e.data;switch(msg.type){case\"log\":window.console&&console.log&&console.log.apply(console,msg.data);break;case\"event\":this._emit(msg.name,{data:msg.data});break;case\"call\":var callback=this.callbacks[msg.id];callback&&(callback(msg.data),delete this.callbacks[msg.id])}},this.$normalizePath=function(path){return location.host?(path=path.replace(/^[a-z]+:\\/\\/[^\\/]+/,\"\"),path=location.protocol+\"//\"+location.host+(\"/\"==path.charAt(0)?\"\":location.pathname.replace(/\\/[^\\/]*$/,\"\"))+\"/\"+path.replace(/^[\\/]+/,\"\")):path},this.terminate=function(){this._emit(\"terminate\",{}),this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener(\"change\",this.changeListener),this.$doc=null},this.send=function(cmd,args){this.$worker.postMessage({command:cmd,args:args})},this.call=function(cmd,args,callback){if(callback){var id=this.callbackId++;this.callbacks[id]=callback,args.push(id)}this.send(cmd,args)},this.emit=function(event,data){try{this.$worker.postMessage({event:event,data:{data:data.data}})}catch(ex){}},this.attachToDocument=function(doc){this.$doc&&this.terminate(),this.$doc=doc,this.call(\"setValue\",[doc.getValue()]),doc.on(\"change\",this.changeListener)},this.changeListener=function(e){e.range={start:e.data.range.start,end:e.data.range.end},this.emit(\"change\",e)}}).call(WorkerClient.prototype);var UIWorkerClient=function(topLevelNamespaces,mod,classname){this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var main=null,sender=Object.create(EventEmitter),_self=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){_self.messageBuffer.push(e),main&&setTimeout(processNext)};var processNext=function(){var msg=_self.messageBuffer.shift();msg.command?main[msg.command].apply(main,msg.args):msg.event&&sender._emit(msg.event,msg.data)};sender.postMessage=function(msg){_self.onMessage({data:msg})},sender.callback=function(data,callbackId){this.postMessage({type:\"call\",id:callbackId,data:data})},sender.emit=function(name,data){this.postMessage({type:\"event\",name:name,data:data})},config.loadModule([\"worker\",mod],function(Main){for(main=new Main[classname](sender);_self.messageBuffer.length;)processNext()})};UIWorkerClient.prototype=WorkerClient.prototype,exports.UIWorkerClient=UIWorkerClient,exports.WorkerClient=WorkerClient}),ace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"],function(acequire,exports){var Range=acequire(\"./range\").Range,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,oop=acequire(\"./lib/oop\"),PlaceHolder=function(session,length,pos,others,mainClass,othersClass){var _self=this;this.length=length,this.session=session,this.doc=session.getDocument(),this.mainClass=mainClass,this.othersClass=othersClass,this.$onUpdate=this.onUpdate.bind(this),this.doc.on(\"change\",this.$onUpdate),this.$others=others,this.$onCursorChange=function(){setTimeout(function(){_self.onCursorChange()})},this.$pos=pos;var undoStack=session.getUndoManager().$undoStack||session.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=undoStack.length,this.setup(),session.selection.on(\"changeCursor\",this.$onCursorChange)};(function(){oop.implement(this,EventEmitter),this.setup=function(){var _self=this,doc=this.doc,session=this.session,pos=this.$pos;this.pos=doc.createAnchor(pos.row,pos.column),this.markerId=session.addMarker(new Range(pos.row,pos.column,pos.row,pos.column+this.length),this.mainClass,null,!1),this.pos.on(\"change\",function(event){session.removeMarker(_self.markerId),_self.markerId=session.addMarker(new Range(event.value.row,event.value.column,event.value.row,event.value.column+_self.length),_self.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(other){var anchor=doc.createAnchor(other.row,other.column);_self.others.push(anchor)}),session.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var session=this.session,_self=this;this.othersActive=!0,this.others.forEach(function(anchor){anchor.markerId=session.addMarker(new Range(anchor.row,anchor.column,anchor.row,anchor.column+_self.length),_self.othersClass,null,!1),anchor.on(\"change\",function(event){session.removeMarker(anchor.markerId),anchor.markerId=session.addMarker(new Range(event.value.row,event.value.column,event.value.row,event.value.column+_self.length),_self.othersClass,null,!1)})})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var i=0;this.others.length>i;i++)this.session.removeMarker(this.others[i].markerId)}},this.onUpdate=function(event){var delta=event.data,range=delta.range;if(range.start.row===range.end.row&&range.start.row===this.pos.row&&!this.$updating){this.$updating=!0;var lengthDiff=\"insertText\"===delta.action?range.end.column-range.start.column:range.start.column-range.end.column;if(range.start.column>=this.pos.column&&range.start.column\u003C=this.pos.column+this.length+1){var distanceFromStart=range.start.column-this.pos.column;if(this.length+=lengthDiff,!this.session.$fromUndo){if(\"insertText\"===delta.action)for(var i=this.others.length-1;i>=0;i--){var otherPos=this.others[i],newPos={row:otherPos.row,column:otherPos.column+distanceFromStart};otherPos.row===range.start.row&&range.start.column\u003CotherPos.column&&(newPos.column+=lengthDiff),this.doc.insert(newPos,delta.text)}else if(\"removeText\"===delta.action)for(var i=this.others.length-1;i>=0;i--){var otherPos=this.others[i],newPos={row:otherPos.row,column:otherPos.column+distanceFromStart};otherPos.row===range.start.row&&range.start.column\u003CotherPos.column&&(newPos.column+=lengthDiff),this.doc.remove(new Range(newPos.row,newPos.column,newPos.row,newPos.column-lengthDiff))}range.start.column===this.pos.column&&\"insertText\"===delta.action?setTimeout(function(){this.pos.setPosition(this.pos.row,this.pos.column-lengthDiff);for(var i=0;this.others.length>i;i++){var other=this.others[i],newPos={row:other.row,column:other.column-lengthDiff};other.row===range.start.row&&range.start.column\u003Cother.column&&(newPos.column+=lengthDiff),other.setPosition(newPos.row,newPos.column)}}.bind(this),0):range.start.column===this.pos.column&&\"removeText\"===delta.action&&setTimeout(function(){for(var i=0;this.others.length>i;i++){var other=this.others[i];other.row===range.start.row&&range.start.column\u003Cother.column&&other.setPosition(other.row,other.column-lengthDiff)}}.bind(this),0)}this.pos._emit(\"change\",{value:this.pos});for(var i=0;this.others.length>i;i++)this.others[i]._emit(\"change\",{value:this.others[i]})}this.$updating=!1}},this.onCursorChange=function(event){if(!this.$updating){var pos=this.session.selection.getCursor();pos.row===this.pos.row&&pos.column>=this.pos.column&&pos.column\u003C=this.pos.column+this.length?(this.showOtherMarkers(),this._emit(\"cursorEnter\",event)):(this.hideOtherMarkers(),this._emit(\"cursorLeave\",event))}},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener(\"change\",this.$onUpdate),this.session.selection.removeEventListener(\"changeCursor\",this.$onCursorChange),this.pos.detach();for(var i=0;this.others.length>i;i++)this.others[i].detach();this.session.setUndoSelect(!0)},this.cancel=function(){if(-1===this.$undoStackDepth)throw Error(\"Canceling placeholders only supported with undo manager attached to session.\");for(var undoManager=this.session.getUndoManager(),undosRequired=(undoManager.$undoStack||undoManager.$undostack).length-this.$undoStackDepth,i=0;undosRequired>i;i++)undoManager.undo(!0)}}).call(PlaceHolder.prototype),exports.PlaceHolder=PlaceHolder}),ace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){var Range=acequire(\"../../range\").Range,FoldMode=exports.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);return this.foldingStartMarker.test(line)?\"start\":\"markbeginend\"==foldStyle&&this.foldingStopMarker&&this.foldingStopMarker.test(line)?\"end\":\"\"},this.getFoldWidgetRange=function(){return null},this.indentationBlock=function(session,row,column){var re=/\\S/,line=session.getLine(row),startLevel=line.search(re);if(-1!=startLevel){for(var startColumn=column||line.length,maxRow=session.getLength(),startRow=row,endRow=row;maxRow>++row;){var level=session.getLine(row).search(re);if(-1!=level){if(startLevel>=level)break;endRow=row}}if(endRow>startRow){var endColumn=session.getLine(endRow).length;return new Range(startRow,startColumn,endRow,endColumn)}}},this.openingBracketBlock=function(session,bracket,row,column,typeRe){var start={row:row,column:column+1},end=session.$findClosingBracket(bracket,start,typeRe);if(end){var fw=session.foldWidgets[end.row];return null==fw&&(fw=this.getFoldWidget(session,end.row)),\"start\"==fw&&end.row>start.row&&(end.row--,end.column=session.getLine(end.row).length),Range.fromPoints(start,end)}},this.closingBracketBlock=function(session,bracket,row,column){var end={row:row,column:column},start=session.$findOpeningBracket(bracket,end);return start?(start.column++,end.column--,Range.fromPoints(start,end)):void 0}}).call(FoldMode.prototype)}),ace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){exports.isDark=!1,exports.cssClass=\"ace-tm\",exports.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm .ace_scroller {background-color: #FFFFFF;}.ace-tm .ace_cursor {border-left: 2px solid black;}.ace-tm .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}';var dom=acequire(\"../lib/dom\");dom.importCssString(exports.cssText,exports.cssClass)}),function(){ace.acequire([\"ace/ace\"],function(a){a&&a.config.init(),window.ace||(window.ace={});for(var key in a)a.hasOwnProperty(key)&&(ace[key]=a[key])})}(),module.exports=window.ace.acequire(\"ace/ace\")})()},{\"w3c-blob\":30}],31:[function(require,module,exports){var Object_keys=function(obj){if(Object.keys)return Object.keys(obj);var res=[];for(var key in obj)res.push(key);return res},forEach=function(xs,fn){if(xs.forEach)return xs.forEach(fn);for(var i=0;xs.length>i;i++)fn(xs[i],i,xs)},Script=exports.Script=function NodeScript(code){return this instanceof Script?(this.code=code,void 0):new Script(code)};Script.prototype.runInNewContext=function(context){context||(context={});var iframe=document.createElement(\"iframe\");iframe.style||(iframe.style={}),iframe.style.display=\"none\",document.body.appendChild(iframe);var win=iframe.contentWindow;forEach(Object_keys(context),function(key){win[key]=context[key]}),!win.eval&&win.execScript&&win.execScript(\"null\");var res=win.eval(this.code);return forEach(Object_keys(win),function(key){context[key]=win[key]}),document.body.removeChild(iframe),res},Script.prototype.runInThisContext=function(){return eval(this.code)},Script.prototype.runInContext=function(context){return this.runInNewContext(context)},forEach(Object_keys(Script.prototype),function(name){exports[name]=Script[name]=function(code){var s=Script(code);return s[name].apply(s,[].slice.call(arguments,1))}}),exports.createScript=function(code){return exports.Script(code)},exports.createContext=Script.createContext=function(context){var copy={};return\"object\"==typeof context&&forEach(Object_keys(context),function(key){copy[key]=context[key]}),copy}},{}],24:[function(require,module){\"use strict\";function Terminal(opts){if(opts=opts||{},!(this instanceof Terminal))return new Terminal(opts);this.cols=opts.cols||500,this.rows=opts.rows||500,this.ybase=0,this.ydisp=0,this.x=0,this.y=0,this.cursorState=0,this.cursorHidden=!1,this.convertEol=!1,this.state=states.normal,this.queue=\"\",this.scrollTop=0,this.scrollBottom=this.rows-1,this.applicationKeypad=!1,this.originMode=!1,this.insertMode=!1,this.wraparoundMode=!1,this.normal=null,this.charset=null,this.gcharset=null,this.glevel=0,this.charsets=[null],this.element,this.children,this.refreshStart,this.refreshEnd,this.savedX,this.savedY,this.savedCols,this.readable=!0,this.writable=!0,this.defAttr=131840,this.curAttr=this.defAttr,this.params=[],this.currentParam=0,this.prefix=\"\",this.postfix=\"\",this.lines=[];for(var i=this.rows;i--;)this.lines.push(this.blankLine());this.tabs,this.setupStops()}var states=require(\"./lib/states\");module.exports=Terminal,require(\"./lib/colors\")(Terminal),require(\"./lib/options\")(Terminal),require(\"./lib/open\")(Terminal),require(\"./lib/destroy\")(Terminal),require(\"./lib/refresh\")(Terminal),require(\"./lib/write\")(Terminal),require(\"./lib/setgLevel\"),require(\"./lib/setgCharset\"),require(\"./lib/debug\")(Terminal),require(\"./lib/stops\")(Terminal),require(\"./lib/erase\")(Terminal),require(\"./lib/blankLine\")(Terminal),require(\"./lib/range\")(Terminal),require(\"./lib/util\")(Terminal),require(\"./lib/esc/index.js\")(Terminal),require(\"./lib/esc/reset.js\")(Terminal),require(\"./lib/esc/tabSet.js\")(Terminal),require(\"./lib/csi/charAttributes\")(Terminal),require(\"./lib/csi/insert-delete\")(Terminal),require(\"./lib/csi/position\")(Terminal),require(\"./lib/csi/cursor\")(Terminal),require(\"./lib/csi/repeatPrecedingCharacter\")(Terminal),require(\"./lib/csi/tabClear\")(Terminal),require(\"./lib/csi/softReset\")(Terminal),require(\"./lib/charsets.js\")(Terminal)},{\"./lib/esc/index.js\":32,\"./lib/esc/reset.js\":33,\"./lib/esc/tabSet.js\":34,\"./lib/charsets.js\":35,\"./lib/states\":36,\"./lib/colors\":37,\"./lib/options\":38,\"./lib/open\":39,\"./lib/destroy\":40,\"./lib/refresh\":41,\"./lib/write\":42,\"./lib/setgLevel\":43,\"./lib/setgCharset\":44,\"./lib/debug\":45,\"./lib/stops\":46,\"./lib/erase\":47,\"./lib/blankLine\":48,\"./lib/range\":49,\"./lib/util\":50,\"./lib/csi/charAttributes\":51,\"./lib/csi/insert-delete\":52,\"./lib/csi/position\":53,\"./lib/csi/cursor\":54,\"./lib/csi/repeatPrecedingCharacter\":55,\"./lib/csi/tabClear\":56,\"./lib/csi/softReset\":57}],25:[function(require,module,exports){(function(process){function through(write,end){function drain(){for(;buffer.length&&!stream.paused;){var data=buffer.shift();if(null===data)return stream.emit(\"end\");stream.emit(\"data\",data)}}function _end(){stream.writable=!1,end.call(stream),stream.readable||stream.destroy()}write=write||function(data){this.queue(data)},end=end||function(){this.queue(null)};var ended=!1,destroyed=!1,buffer=[],stream=new Stream;return stream.readable=stream.writable=!0,stream.paused=!1,stream.write=function(data){return write.call(this,data),!stream.paused},stream.queue=stream.push=function(data){return buffer.push(data),drain(),stream},stream.on(\"end\",function(){stream.readable=!1,stream.writable||process.nextTick(function(){stream.destroy()})}),stream.end=function(data){return ended?void 0:(ended=!0,arguments.length&&stream.write(data),_end(),stream)},stream.destroy=function(){return destroyed?void 0:(destroyed=!0,ended=!0,buffer.length=0,stream.writable=stream.readable=!1,stream.emit(\"close\"),stream)},stream.pause=function(){return stream.paused?void 0:(stream.paused=!0,stream.emit(\"pause\"),stream)},stream.resume=function(){return stream.paused&&(stream.paused=!1),drain(),stream.paused||stream.emit(\"drain\"),stream},stream}var Stream=require(\"stream\");exports=module.exports=through,through.through=through})(require(\"__browserify_process\"))},{stream:58,__browserify_process:16}],30:[function(require,module){(function(global){function get_blob(){if(global.Blob)try{return new Blob([\"asdf\"],{type:\"text/plain\"}),Blob}catch(err){}var Builder=global.BlobBuilder;return\"function\"!=typeof Builder&&(Builder=global.WebKitBlobBuilder||global.MozBlobBuilder||global.MSBlobBuilder),function(parts,bag){var builder=new Builder,endings=bag.endings,type=bag.type;if(endings)for(var i=0,len=parts.length;len>i;++i)builder.append(parts[i],endings);else for(var i=0,len=parts.length;len>i;++i)builder.append(parts[i]);return type?builder.getBlob(type):builder.getBlob()}}module.exports=get_blob()})(window)},{}],33:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.reset=function(){Terminal.call(this,this.cols,this.rows),this.refresh(0,this.rows-1)}}},{}],35:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.charsets={},Terminal.charsets.SCLD={\"`\":\"◆\",a:\"▒\",b:\"\t\",c:\"\\f\",d:\"\\r\",e:\"\\n\",f:\"°\",g:\"±\",h:\"\",i:\"\u000b\",j:\"┘\",k:\"┐\",l:\"┌\",m:\"└\",n:\"┼\",o:\"⎺\",p:\"⎻\",q:\"─\",r:\"⎼\",s:\"⎽\",t:\"├\",u:\"┤\",v:\"┴\",w:\"┬\",x:\"│\",y:\"≤\",z:\"≥\",\"{\":\"π\",\"|\":\"≠\",\"}\":\"£\",\"~\":\"·\"},Terminal.charsets.UK=null,Terminal.charsets.US=null,Terminal.charsets.Dutch=null,Terminal.charsets.Finnish=null,Terminal.charsets.French=null,Terminal.charsets.FrenchCanadian=null,Terminal.charsets.German=null,Terminal.charsets.Italian=null,Terminal.charsets.NorwegianDanish=null,Terminal.charsets.Spanish=null,Terminal.charsets.Swedish=null,Terminal.charsets.Swiss=null,Terminal.charsets.ISOLatin=null}},{}],36:[function(require,module){\"use strict\";module.exports={normal:0,escaped:1,csi:2,osc:3,charset:4,dcs:5,ignore:6}},{}],37:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.colors=[\"#2e3436\",\"#cc0000\",\"#4e9a06\",\"#c4a000\",\"#3465a4\",\"#75507b\",\"#06989a\",\"#d3d7cf\",\"#555753\",\"#ef2929\",\"#8ae234\",\"#fce94f\",\"#729fcf\",\"#ad7fa8\",\"#34e2e2\",\"#eeeeec\"],Terminal.colors=function(){function out(r,g,b){colors.push(\"#\"+hex(r)+hex(g)+hex(b))}function hex(c){return c=c.toString(16),2>c.length?\"0\"+c:c}var i,colors=Terminal.colors,r=[0,95,135,175,215,255];for(i=0;216>i;i++)out(r[0|i/36%6],r[0|i/6%6],r[i%6]);for(i=0;24>i;i++)r=8+10*i,out(r,r,r);return colors}(),Terminal.defaultColors={bg:\"#000000\",fg:\"#f0f0f0\"},Terminal.colors[256]=Terminal.defaultColors.bg,Terminal.colors[257]=Terminal.defaultColors.fg}},{}],38:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.termName=\"xterm\",Terminal.geometry=[80,24],Terminal.cursorBlink=!0,Terminal.visualBell=!1,Terminal.popOnBell=!1,Terminal.scrollback=1e3,Terminal.screenKeys=!1,Terminal.programFeatures=!1,Terminal.debug=!1}},{}],39:[function(require,module){\"use strict\";function isBoldBroken(){var el=document.createElement(\"span\");el.innerHTML=\"hello world\",document.body.appendChild(el);var w1=el.scrollWidth;el.style.fontWeight=\"bold\";var w2=el.scrollWidth;return document.body.removeChild(el),w1!==w2}module.exports=function(Terminal){Terminal.prototype.open=function(){var div,i=0;for(this.element=document.createElement(\"div\"),this.element.className=\"terminal\",this.children=[];this.rows>i;i++)div=document.createElement(\"div\"),this.element.appendChild(div),this.children.push(div);this.refresh(0,this.rows-1),null===Terminal.brokenBold&&(Terminal.brokenBold=isBoldBroken()),this.element.style.backgroundColor=Terminal.defaultColors.bg,this.element.style.color=Terminal.defaultColors.fg}}},{}],40:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.destroy=function(){this.readable=!1,this.writable=!1,this._events={},this.handler=function(){},this.write=function(){}}}},{}],41:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.refresh=function(start,end){var x,y,i,line,out,ch,width,data,attr,fgColor,bgColor,flags,row,parent;\nfor(width=this.cols,y=start;end>=y;y++){if(row=y+this.ydisp,line=this.lines[row],!line)return this.reset();for(out=\"\",x=y===this.y&&this.cursorState&&this.ydisp===this.ybase&&!this.cursorHidden?this.x:-1,attr=this.defAttr,i=0;width>i;i++){switch(data=line[i][0],ch=line[i][1],i===x&&(data=-1),data!==attr&&(attr!==this.defAttr&&(out+=\"\u003C/span>\"),data!==this.defAttr&&(-1===data?out+='\u003Cspan class=\"reverse-video\">':(out+='\u003Cspan style=\"',bgColor=511&data,fgColor=511&data>>9,flags=data>>18,1&flags&&(Terminal.brokenBold||(out+=\"font-weight:bold;\"),8>fgColor&&(fgColor+=8)),2&flags&&(out+=\"text-decoration:underline;\"),256!==bgColor&&(out+=\"background-color:\"+Terminal.colors[bgColor]+\";\"),257!==fgColor&&(out+=\"color:\"+Terminal.colors[fgColor]+\";\"),out+='\">'))),ch){case\"&\":out+=\"&\";break;case\"\u003C\":out+=\"\u003C\";break;case\">\":out+=\">\";break;default:out+=\" \">=ch?\" \":ch}attr=data}attr!==this.defAttr&&(out+=\"\u003C/span>\"),this.children[y].innerHTML=out}parent&&parent.appendChild(this.element)}}},{}],43:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.setgLevel=function(g){this.glevel=g,this.charset=this.charsets[g]}}},{}],44:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.setgCharset=function(g,charset){this.charsets[g]=charset,this.glevel===g&&(this.charset=charset)}}},{}],45:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.log=function(){if(Terminal.debug&&window.console&&window.console.log){var args=Array.prototype.slice.call(arguments);window.console.log.apply(window.console,args)}},Terminal.prototype.error=function(){if(Terminal.debug&&window.console&&window.console.error){var args=Array.prototype.slice.call(arguments);window.console.error.apply(window.console,args)}}}},{}],47:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.eraseRight=function(x,y){for(var line=this.lines[this.ybase+y],ch=[this.curAttr,\" \"];this.cols>x;x++)line[x]=ch;this.updateRange(y)},Terminal.prototype.eraseLeft=function(x,y){var line=this.lines[this.ybase+y],ch=[this.curAttr,\" \"];for(x++;x--;)line[x]=ch;this.updateRange(y)},Terminal.prototype.eraseLine=function(y){this.eraseRight(0,y)},Terminal.prototype.eraseInDisplay=function(params){var j;switch(params[0]){case 0:for(this.eraseRight(this.x,this.y),j=this.y+1;this.rows>j;j++)this.eraseLine(j);break;case 1:for(this.eraseLeft(this.x,this.y),j=this.y;j--;)this.eraseLine(j);break;case 2:for(j=this.rows;j--;)this.eraseLine(j);break;case 3:}},Terminal.prototype.eraseInLine=function(params){switch(params[0]){case 0:this.eraseRight(this.x,this.y);break;case 1:this.eraseLeft(this.x,this.y);break;case 2:this.eraseLine(this.y)}}}},{}],46:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.setupStops=function(i){for(null!=i?this.tabs[i]||(i=this.prevStop(i)):(this.tabs={},i=0);this.cols>i;i+=8)this.tabs[i]=!0},Terminal.prototype.prevStop=function(x){for(null==x&&(x=this.x);!this.tabs[--x]&&x>0;);return x>=this.cols?this.cols-1:0>x?0:x},Terminal.prototype.nextStop=function(x){for(null==x&&(x=this.x);!this.tabs[++x]&&this.cols>x;);return x>=this.cols?this.cols-1:0>x?0:x}}},{}],48:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.blankLine=function(cur){for(var attr=cur?this.curAttr:this.defAttr,ch=[attr,\" \"],line=[],i=0;this.cols>i;i++)line[i]=ch;return line}}},{}],49:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.updateRange=function(y){this.refreshStart>y&&(this.refreshStart=y),y>this.refreshEnd&&(this.refreshEnd=y)},Terminal.prototype.maxRange=function(){this.refreshStart=0,this.refreshEnd=this.rows-1}}},{}],50:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.ch=function(cur){return cur?[this.curAttr,\" \"]:[this.defAttr,\" \"]},Terminal.prototype.is=function(term){var name=this.termName||Terminal.termName;return 0===(name+\"\").indexOf(term)}}},{}],51:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.charAttributes=function(params){for(var bg,fg,p,l=params.length,i=0;l>i;i++)if(p=params[i],p>=30&&37>=p)this.curAttr=-261633&this.curAttr|p-30\u003C\u003C9;else if(p>=40&&47>=p)this.curAttr=-512&this.curAttr|p-40;else if(p>=90&&97>=p)p+=8,this.curAttr=-261633&this.curAttr|p-90\u003C\u003C9;else if(p>=100&&107>=p)p+=8,this.curAttr=-512&this.curAttr|p-100;else if(0===p)this.curAttr=this.defAttr;else if(1===p)this.curAttr=this.curAttr|1\u003C\u003C18;else if(4===p)this.curAttr=this.curAttr|2\u003C\u003C18;else if(7===p||27===p){if(7===p){if(4&this.curAttr>>18)continue;this.curAttr=this.curAttr|4\u003C\u003C18}else if(27===p){if(4&~(this.curAttr>>18))continue;this.curAttr=-1048577&this.curAttr}bg=511&this.curAttr,fg=511&this.curAttr>>9,this.curAttr=-262144&this.curAttr|(bg\u003C\u003C9|fg)}else if(22===p)this.curAttr=-262145&this.curAttr;else if(24===p)this.curAttr=-524289&this.curAttr;else if(39===p)this.curAttr=-261633&this.curAttr,this.curAttr=this.curAttr|(511&this.defAttr>>9)\u003C\u003C9;else if(49===p)this.curAttr=-512&this.curAttr,this.curAttr=this.curAttr|511&this.defAttr;else if(38===p){if(5!==params[i+1])continue;i+=2,p=255¶ms[i],this.curAttr=-261633&this.curAttr|p\u003C\u003C9}else if(48===p){if(5!==params[i+1])continue;i+=2,p=255¶ms[i],this.curAttr=-512&this.curAttr|p}}}},{}],52:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.insertChars=function(params){var param,row,j,ch;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.x,ch=[this.curAttr,\" \"];param--&&this.cols>j;)this.lines[row].splice(j++,0,ch),this.lines[row].pop()},Terminal.prototype.insertLines=function(params){var param,row,j;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.rows-1-this.scrollBottom,j=this.rows-1+this.ybase-j+1;param--;)this.lines.splice(row,0,this.blankLine(!0)),this.lines.splice(j,1);this.updateRange(this.y),this.updateRange(this.scrollBottom)},Terminal.prototype.deleteLines=function(params){var param,row,j;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.rows-1-this.scrollBottom,j=this.rows-1+this.ybase-j;param--;)this.lines.splice(j+1,0,this.blankLine(!0)),this.lines.splice(row,1);this.updateRange(this.y),this.updateRange(this.scrollBottom)},Terminal.prototype.deleteChars=function(params){var param,row,ch;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,ch=[this.curAttr,\" \"];param--;)this.lines[row].splice(this.x,1),this.lines[row].push(ch)},Terminal.prototype.eraseChars=function(params){var param,row,j,ch;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.x,ch=[this.curAttr,\" \"];param--&&this.cols>j;)this.lines[row][j++]=ch}}},{}],53:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.charPosAbsolute=function(params){var param=params[0];1>param&&(param=1),this.x=param-1,this.x>=this.cols&&(this.x=this.cols-1)},Terminal.prototype.HPositionRelative=function(params){var param=params[0];1>param&&(param=1),this.x+=param,this.x>=this.cols&&(this.x=this.cols-1)},Terminal.prototype.linePosAbsolute=function(params){var param=params[0];1>param&&(param=1),this.y=param-1,this.y>=this.rows&&(this.y=this.rows-1)},Terminal.prototype.VPositionRelative=function(params){var param=params[0];1>param&&(param=1),this.y+=param,this.y>=this.rows&&(this.y=this.rows-1)},Terminal.prototype.HVPosition=function(params){1>params[0]&&(params[0]=1),1>params[1]&&(params[1]=1),this.y=params[0]-1,this.y>=this.rows&&(this.y=this.rows-1),this.x=params[1]-1,this.x>=this.cols&&(this.x=this.cols-1)}}},{}],54:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.saveCursor=function(){this.savedX=this.x,this.savedY=this.y},Terminal.prototype.restoreCursor=function(){this.x=this.savedX||0,this.y=this.savedY||0},Terminal.prototype.cursorUp=function(params){var param=params[0];1>param&&(param=1),this.y-=param,0>this.y&&(this.y=0)},Terminal.prototype.cursorDown=function(params){var param=params[0];1>param&&(param=1),this.y+=param,this.y>=this.rows&&(this.y=this.rows-1)},Terminal.prototype.cursorForward=function(params){var param=params[0];1>param&&(param=1),this.x+=param,this.x>=this.cols&&(this.x=this.cols-1)},Terminal.prototype.cursorBackward=function(params){var param=params[0];1>param&&(param=1),this.x-=param,0>this.x&&(this.x=0)},Terminal.prototype.cursorPos=function(params){var row,col;row=params[0]-1,col=params.length>=2?params[1]-1:0,0>row?row=0:row>=this.rows&&(row=this.rows-1),0>col?col=0:col>=this.cols&&(col=this.cols-1),this.x=col,this.y=row},Terminal.prototype.cursorNextLine=function(params){var param=params[0];1>param&&(param=1),this.y+=param,this.y>=this.rows&&(this.y=this.rows-1),this.x=0},Terminal.prototype.cursorPrecedingLine=function(params){var param=params[0];1>param&&(param=1),this.y-=param,0>this.y&&(this.y=0),this.x=0},Terminal.prototype.cursorCharAbsolute=function(params){var param=params[0];1>param&&(param=1),this.x=param-1},Terminal.prototype.cursorForwardTab=function(params){for(var param=params[0]||1;param--;)this.x=this.nextStop()},Terminal.prototype.cursorBackwardTab=function(params){for(var param=params[0]||1;param--;)this.x=this.prevStop()}}},{}],55:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.repeatPrecedingCharacter=function(params){for(var param=params[0]||1,line=this.lines[this.ybase+this.y],ch=line[this.x-1]||[this.defAttr,\" \"];param--;)line[this.x++]=ch}}},{}],56:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.tabClear=function(params){var param=params[0];0>=param?delete this.tabs[this.x]:3===param&&(this.tabs={})}}},{}],57:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.softReset=function(){this.cursorHidden=!1,this.insertMode=!1,this.originMode=!1,this.wraparoundMode=!1,this.applicationKeypad=!1,this.scrollTop=0,this.scrollBottom=this.rows-1,this.curAttr=this.defAttr,this.x=this.y=0,this.charset=null,this.glevel=0,this.charsets=[null]}}},{}],58:[function(require,module){function Stream(){events.EventEmitter.call(this)}var events=require(\"events\"),util=require(\"util\");util.inherits(Stream,events.EventEmitter),module.exports=Stream,Stream.Stream=Stream,Stream.prototype.pipe=function(dest,options){function ondata(chunk){dest.writable&&!1===dest.write(chunk)&&source.pause&&source.pause()}function ondrain(){source.readable&&source.resume&&source.resume()}function onend(){didOnEnd||(didOnEnd=!0,dest._pipeCount--,cleanup(),dest._pipeCount>0||dest.end())}function onclose(){didOnEnd||(didOnEnd=!0,dest._pipeCount--,cleanup(),dest._pipeCount>0||dest.destroy())}function onerror(er){if(cleanup(),0===this.listeners(\"error\").length)throw er}function cleanup(){source.removeListener(\"data\",ondata),dest.removeListener(\"drain\",ondrain),source.removeListener(\"end\",onend),source.removeListener(\"close\",onclose),source.removeListener(\"error\",onerror),dest.removeListener(\"error\",onerror),source.removeListener(\"end\",cleanup),source.removeListener(\"close\",cleanup),dest.removeListener(\"end\",cleanup),dest.removeListener(\"close\",cleanup)}var source=this;source.on(\"data\",ondata),dest.on(\"drain\",ondrain),dest._isStdio||options&&options.end===!1||(dest._pipeCount=dest._pipeCount||0,dest._pipeCount++,source.on(\"end\",onend),source.on(\"close\",onclose));var didOnEnd=!1;return source.on(\"error\",onerror),dest.on(\"error\",onerror),source.on(\"end\",cleanup),source.on(\"close\",cleanup),dest.on(\"end\",cleanup),dest.on(\"close\",cleanup),dest.emit(\"pipe\",source),dest}},{events:15,util:6}],59:[function(require,module,exports){\"use strict\";var vm=require(\"vm\");exports.createCtx=function(sandbox){return vm.createContext(sandbox)},exports.runInCtx=function(code,ctx){return vm.runInContext(code,ctx)}},{vm:31}],60:[function(require,module){\"use strict\";module.exports=function(arr){return arr.filter(function(k){return!filterOut.hasOwnProperty(k)})};var filterOuts=[\"ArrayBuffer\",\"Attr\",\"BeforeLoadEvent\",\"Blob\",\"CDATASection\",\"CSSCharsetRule\",\"CSSImportRule\",\"CSSMediaRule\",\"CSSPageRule\",\"CSSPrimitiveValue\",\"CSSRuleList\",\"CSSStyleDeclaration\",\"CSSStyleSheet\",\"CSSValue\",\"CanvasGradient\",\"ClientRectList\",\"Clipboard\",\"CompositionEvent\",\"Counter\",\"DOMException\",\"DOMParser\",\"DOMStringMap\",\"DOMTokenList\",\"Document\",\"DocumentFragment\",\"DocumentType\",\"Element\",\"ErrorEvent\",\"Event\",\"EventSource\",\"File\",\"FileError\",\"FileList\",\"Float32Array\",\"HTMLAllCollection\",\"HTMLAreaElement\",\"HTMLBRElement\",\"HTMLButtonElement\",\"HTMLCanvasElement\",\"HTMLCollection\",\"HTMLDListElement\",\"HTMLDirectoryElement\",\"HTMLDivElement\",\"HTMLFormElement\",\"HTMLFrameElement\",\"HTMLHRElement\",\"HTMLIFrameElement\",\"HTMLImageElement\",\"HTMLInputElement\",\"HTMLLinkElement\",\"HTMLMapElement\",\"HTMLMediaElement\",\"HTMLMenuElement\",\"HTMLMeterElement\",\"HTMLOptGroupElement\",\"HTMLParamElement\",\"HTMLProgressElement\",\"HTMLQuoteElement\",\"HTMLSelectElement\",\"HTMLTableCaptionElement\",\"HTMLTableColElement\",\"HTMLTableSectionElement\",\"HTMLUListElement\",\"HTMLUnknownElement\",\"HashChangeEvent\",\"ImageData\",\"Int16Array\",\"Int8Array\",\"MediaController\",\"MediaError\",\"MediaList\",\"MessageChannel\",\"MimeType\",\"MutationEvent\",\"NamedNodeMap\",\"NodeFilter\",\"Notation\",\"OverflowEvent\",\"Plugin\",\"PluginArray\",\"PopStateEvent\",\"RGBColor\",\"Range\",\"Rect\",\"SQLException\",\"SVGAltGlyphItemElement\",\"SVGAnimateColorElement\",\"SVGAnimatedAngle\",\"SVGAnimatedEnumeration\",\"SVGAnimatedLength\",\"SVGAnimatedLengthList\",\"SVGAnimatedNumberList\",\"SVGAnimatedRect\",\"SVGAnimatedString\",\"SVGAnimatedTransformList\",\"SVGClipPathElement\",\"SVGDefsElement\",\"SVGElementInstanceList\",\"SVGEllipseElement\",\"SVGException\",\"SVGFEComponentTransferElement\",\"SVGFEConvolveMatrixElement\",\"SVGFEDiffuseLightingElement\",\"SVGFEDistantLightElement\",\"SVGFEFloodElement\",\"SVGFEFuncBElement\",\"SVGFEFuncGElement\",\"SVGFEFuncRElement\",\"SVGFEGaussianBlurElement\",\"SVGFEImageElement\",\"SVGFEMergeNodeElement\",\"SVGFEOffsetElement\",\"SVGFESpecularLightingElement\",\"SVGFilterElement\",\"SVGFontElement\",\"SVGFontFaceNameElement\",\"SVGFontFaceUriElement\",\"SVGGlyphElement\",\"SVGGlyphRefElement\",\"SVGGradientElement\",\"SVGHKernElement\",\"SVGLengthList\",\"SVGLinearGradientElement\",\"SVGMarkerElement\",\"SVGMatrix\",\"SVGNumber\",\"SVGPaint\",\"SVGPathSegArcAbs\",\"SVGPathSegArcRel\",\"SVGPathSegCurvetoCubicAbs\",\"SVGPathSegCurvetoCubicSmoothAbs\",\"SVGPathSegCurvetoCubicSmoothRel\",\"SVGPathSegCurvetoQuadraticRel\",\"SVGPathSegCurvetoQuadraticSmoothAbs\",\"SVGPathSegCurvetoQuadraticSmoothRel\",\"SVGPathSegLinetoHorizontalRel\",\"SVGPathSegLinetoVerticalRel\",\"SVGPathSegList\",\"SVGPathSegMovetoAbs\",\"SVGPatternElement\",\"SVGPointList\",\"SVGPolylineElement\",\"SVGPreserveAspectRatio\",\"SVGRectElement\",\"SVGSetElement\",\"SVGStopElement\",\"SVGStringList\",\"SVGSymbolElement\",\"SVGTSpanElement\",\"SVGTextPathElement\",\"SVGTransformList\",\"SVGZoomEvent\",\"Selection\",\"Storage\",\"StorageEvent\",\"TextEvent\",\"TextMetrics\",\"TextTrackCueList\",\"UIEvent\",\"Uint32Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"WebGLActiveInfo\",\"WebGLProgram\",\"WebGLRenderbuffer\",\"WebGLRenderingContext\",\"WebGLShader\",\"WebKitAnimationEvent\",\"WebKitCSSFilterValue\",\"WebKitCSSKeyframeRule\",\"WebKitCSSTransformValue\",\"WebKitPoint\",\"WebKitTransitionEvent\",\"Window\",\"Worker\",\"XMLDocument\",\"XMLHttpRequest\",\"XMLHttpRequestException\",\"XPathEvaluator\",\"XPathResult\",\"clientInformation\",\"console\",\"exports\",\"frameElement\",\"frames\",\"history\",\"localStorage\",\"location\",\"locationbar\",\"menubar\",\"navigator\",\"onbeforeunload\",\"onblur\",\"oncanplaythrough\",\"onclick\",\"ondragenter\",\"ondragleave\",\"ondragover\",\"ondragstart\",\"ondrop\",\"ondurationchange\",\"onemptied\",\"onerror\",\"onkeydown\",\"onkeypress\",\"onloadeddata\",\"onloadstart\",\"onmessage\",\"onmouseout\",\"onmouseover\",\"onoffline\",\"ononline\",\"onplay\",\"onplaying\",\"onprogress\",\"onratechange\",\"onscroll\",\"onsearch\",\"onselect\",\"onsuspend\",\"ontimeupdate\",\"onwebkittransitionend\",\"opener\",\"scrollbars\",\"styleMedia\",\"toolbar\",\"webkitAudioContext\",\"webkitAudioPannerNode\",\"webkitURL\",\"Audio\",\"AudioProcessingEvent\",\"CSSFontFaceRule\",\"CSSRule\",\"CSSStyleRule\",\"CSSValueList\",\"CanvasPattern\",\"CanvasRenderingContext2D\",\"CharacterData\",\"ClientRect\",\"CloseEvent\",\"Comment\",\"CustomEvent\",\"DOMImplementation\",\"DOMSettableTokenList\",\"DOMStringList\",\"DataView\",\"Entity\",\"EntityReference\",\"EventException\",\"FileReader\",\"Float64Array\",\"FormData\",\"HTMLAnchorElement\",\"HTMLAppletElement\",\"HTMLAudioElement\",\"HTMLBaseElement\",\"HTMLBaseFontElement\",\"HTMLBodyElement\",\"HTMLDocument\",\"HTMLElement\",\"HTMLEmbedElement\",\"HTMLFieldSetElement\",\"HTMLFontElement\",\"HTMLFrameSetElement\",\"HTMLHeadElement\",\"HTMLHeadingElement\",\"HTMLHtmlElement\",\"HTMLKeygenElement\",\"HTMLLIElement\",\"HTMLLabelElement\",\"HTMLLegendElement\",\"HTMLMarqueeElement\",\"HTMLMetaElement\",\"HTMLModElement\",\"HTMLOListElement\",\"HTMLObjectElement\",\"HTMLOptionElement\",\"HTMLOutputElement\",\"HTMLParagraphElement\",\"HTMLPreElement\",\"HTMLScriptElement\",\"HTMLSourceElement\",\"HTMLSpanElement\",\"HTMLStyleElement\",\"HTMLTableCellElement\",\"HTMLTableElement\",\"HTMLTableRowElement\",\"HTMLTextAreaElement\",\"HTMLTitleElement\",\"HTMLTrackElement\",\"HTMLVideoElement\",\"Image\",\"Int32Array\",\"KeyboardEvent\",\"MessageEvent\",\"MessagePort\",\"MimeTypeArray\",\"MouseEvent\",\"Node\",\"NodeList\",\"OfflineAudioCompletionEvent\",\"Option\",\"PageTransitionEvent\",\"ProcessingInstruction\",\"ProgressEvent\",\"RangeException\",\"SVGAElement\",\"SVGAltGlyphDefElement\",\"SVGAltGlyphElement\",\"SVGAngle\",\"SVGAnimateElement\",\"SVGAnimateMotionElement\",\"SVGAnimateTransformElement\",\"SVGAnimatedBoolean\",\"SVGAnimatedInteger\",\"SVGAnimatedNumber\",\"SVGAnimatedPreserveAspectRatio\",\"SVGCircleElement\",\"SVGColor\",\"SVGComponentTransferFunctionElement\",\"SVGCursorElement\",\"SVGDescElement\",\"SVGDocument\",\"SVGElement\",\"SVGElementInstance\",\"SVGFEBlendElement\",\"SVGFEColorMatrixElement\",\"SVGFECompositeElement\",\"SVGFEDisplacementMapElement\",\"SVGFEDropShadowElement\",\"SVGFEFuncAElement\",\"SVGFEMergeElement\",\"SVGFEMorphologyElement\",\"SVGFEPointLightElement\",\"SVGFESpotLightElement\",\"SVGFETileElement\",\"SVGFETurbulenceElement\",\"SVGFontFaceElement\",\"SVGFontFaceFormatElement\",\"SVGFontFaceSrcElement\",\"SVGForeignObjectElement\",\"SVGGElement\",\"SVGImageElement\",\"SVGLength\",\"SVGLineElement\",\"SVGMPathElement\",\"SVGMaskElement\",\"SVGMetadataElement\",\"SVGMissingGlyphElement\",\"SVGNumberList\",\"SVGPathElement\",\"SVGPathSeg\",\"SVGPathSegClosePath\",\"SVGPathSegCurvetoCubicRel\",\"SVGPathSegCurvetoQuadraticAbs\",\"SVGPathSegLinetoAbs\",\"SVGPathSegLinetoHorizontalAbs\",\"SVGPathSegLinetoRel\",\"SVGPathSegLinetoVerticalAbs\",\"SVGPathSegMovetoRel\",\"SVGPoint\",\"SVGPolygonElement\",\"SVGRadialGradientElement\",\"SVGRect\",\"SVGRenderingIntent\",\"SVGSVGElement\",\"SVGScriptElement\",\"SVGStyleElement\",\"SVGSwitchElement\",\"SVGTRefElement\",\"SVGTextContentElement\",\"SVGTextElement\",\"SVGTextPositioningElement\",\"SVGTitleElement\",\"SVGTransform\",\"SVGUnitTypes\",\"SVGUseElement\",\"SVGVKernElement\",\"SVGViewElement\",\"SharedWorker\",\"StyleSheet\",\"StyleSheetList\",\"Text\",\"TextTrack\",\"TextTrackCue\",\"TextTrackList\",\"TimeRanges\",\"TrackEvent\",\"Uint16Array\",\"WebGLBuffer\",\"WebGLContextEvent\",\"WebGLFramebuffer\",\"WebGLShaderPrecisionFormat\",\"WebGLTexture\",\"WebGLUniformLocation\",\"WebKitCSSKeyframesRule\",\"WebKitCSSMatrix\",\"WebKitMutationObserver\",\"WebSocket\",\"WheelEvent\",\"XMLHttpRequestProgressEvent\",\"XMLHttpRequestUpload\",\"XMLSerializer\",\"XPathException\",\"XSLTProcessor\",\"applicationCache\",\"closed\",\"crypto\",\"defaultStatus\",\"defaultstatus\",\"devicePixelRatio\",\"event\",\"innerHeight\",\"innerWidth\",\"length\",\"module\",\"name\",\"offscreenBuffering\",\"onabort\",\"oncanplay\",\"onchange\",\"oncontextmenu\",\"ondblclick\",\"ondrag\",\"ondragend\",\"onended\",\"onfocus\",\"onhashchange\",\"oninput\",\"oninvalid\",\"onkeyup\",\"onload\",\"onloadedmetadata\",\"onmousedown\",\"onmousemove\",\"onmouseup\",\"onmousewheel\",\"onpagehide\",\"onpageshow\",\"onpause\",\"onpopstate\",\"onreset\",\"onresize\",\"onseeked\",\"onseeking\",\"onstalled\",\"onstorage\",\"onsubmit\",\"onunload\",\"onvolumechange\",\"onwaiting\",\"onwebkitanimationend\",\"onwebkitanimationiteration\",\"onwebkitanimationstart\",\"outerHeight\",\"outerWidth\",\"pageXOffset\",\"pageYOffset\",\"parent\",\"personalbar\",\"screen\",\"screenLeft\",\"screenTop\",\"screenX\",\"screenY\",\"scrollX\",\"scrollY\",\"self\",\"sessionStorage\",\"status\",\"statusbar\",\"Touch\",\"TouchList\",\"TouchEvent\",\"DeviceMotionEvent\",\"DeviceOrientationEvent\",\"orientation\",\"onorientationchange\",\"ontouched\",\"ondeviceorientation\",\"ontouchmove\",\"ondevicemotion\",\"ontouchcancel\",\"ontouchstart\",\"ongestureend\",\"ontouchend\",\"ongesturestart\",\"ongesturechange\",\"getSearchEngine\",\"setSearchEngine\",\"canSetSearchEngine\",\"InstallTrigger\",\"getInterface\",\"sidebar\"],filterOut={};filterOuts.forEach(function(k){filterOut[k]=!0})},{}],61:[function(require,module){\"use strict\";var exclude={};module.exports=function(thing,exclude_){var t={},ex=exclude_||exclude;return thing?(Object.keys(thing).filter(function(k){return!ex[k]}).forEach(function(k){thing.hasOwnProperty(k)&&(t[k]=thing[k])}),t):t},[\"top\",\"Intl\",\"chrome\",\"document\",\"external\",\"v8Intl\",\"window\",\"frameElement\",\"parent\"].forEach(function(k){exclude[k]=!0})},{}],28:[function(require,module){module.exports={highlight:require(\"./lib/highlight\"),highlightFile:require(\"./lib/highlightFile\"),highlightFileSync:require(\"./lib/highlightFileSync\")}},{\"./lib/highlight\":62,\"./lib/highlightFile\":63,\"./lib/highlightFileSync\":64}],65:[function(require,module,exports){(function(process){function filter(xs,fn){for(var res=[],i=0;xs.length>i;i++)fn(xs[i],i,xs)&&res.push(xs[i]);return res}function normalizeArray(parts,allowAboveRoot){for(var up=0,i=parts.length;i>=0;i--){var last=parts[i];\".\"==last?parts.splice(i,1):\"..\"===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up--;up)parts.unshift(\"..\");return parts}var splitPathRe=/^(.+\\/(?!$)|\\/)?((?:.+?)?(\\.[^.]*)?)$/;exports.resolve=function(){for(var resolvedPath=\"\",resolvedAbsolute=!1,i=arguments.length;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();\"string\"==typeof path&&path&&(resolvedPath=path+\"/\"+resolvedPath,resolvedAbsolute=\"/\"===path.charAt(0))}return resolvedPath=normalizeArray(filter(resolvedPath.split(\"/\"),function(p){return!!p}),!resolvedAbsolute).join(\"/\"),(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},exports.normalize=function(path){var isAbsolute=\"/\"===path.charAt(0),trailingSlash=\"/\"===path.slice(-1);return path=normalizeArray(filter(path.split(\"/\"),function(p){return!!p}),!isAbsolute).join(\"/\"),path||isAbsolute||(path=\".\"),path&&trailingSlash&&(path+=\"/\"),(isAbsolute?\"/\":\"\")+path},exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p){return p&&\"string\"==typeof p}).join(\"/\"))},exports.dirname=function(path){var dir=splitPathRe.exec(path)[1]||\"\",isWindows=!1;return dir?1===dir.length||isWindows&&3>=dir.length&&\":\"===dir.charAt(1)?dir:dir.substring(0,dir.length-1):\".\"},exports.basename=function(path,ext){var f=splitPathRe.exec(path)[2]||\"\";return ext&&f.substr(-1*ext.length)===ext&&(f=f.substr(0,f.length-ext.length)),f},exports.extname=function(path){return splitPathRe.exec(path)[3]||\"\"},exports.relative=function(from,to){function trim(arr){for(var start=0;arr.length>start&&\"\"===arr[start];start++);for(var end=arr.length-1;end>=0&&\"\"===arr[end];end--);return start>end?[]:arr.slice(start,end-start+1)}from=exports.resolve(from).substr(1),to=exports.resolve(to).substr(1);for(var fromParts=trim(from.split(\"/\")),toParts=trim(to.split(\"/\")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length,i=0;length>i;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}for(var outputParts=[],i=samePartsLength;fromParts.length>i;i++)outputParts.push(\"..\");return outputParts=outputParts.concat(toParts.slice(samePartsLength)),outputParts.join(\"/\")}})(require(\"__browserify_process\"))},{__browserify_process:16}],42:[function(require,module){\"use strict\";function fixLinefeed(data){return data.replace(/([^\\r])\\n/g,\"$1\\r\\n\")}function fixIndent(data){return/(^|\\n) /.test(data)?data.split(\"\\n\").map(function(line){for(var count=0;\" \"===line.charAt(0);)line=line.slice(1),count++;for(;count--;)line=\" \"+line;return line}).join(\"\\r\\n\"):data}var states=require(\"./states\");module.exports=function(Terminal){Terminal.prototype.write=function(data){data=fixLinefeed(data),data=fixIndent(data);var cs,ch,l=data.length,i=0;for(this.refreshStart=this.y,this.refreshEnd=this.y,this.ybase!==this.ydisp&&(this.ydisp=this.ybase,this.maxRange());l>i;i++)switch(ch=data[i],this.state){case states.normal:switch(ch){case\"\u0007\":this.bell();break;case\"\\n\":case\"\u000b\":case\"\\f\":this.convertEol&&(this.x=0),this.y++;break;case\"\\r\":this.x=0;break;case\"\\b\":this.x>0&&this.x--;break;case\"\t\":this.x=this.nextStop();break;case\"\u000e\":this.setgLevel(1);break;case\"\u000f\":this.setgLevel(0);break;case\"\u001b\":this.state=states.escaped;break;default:ch>=\" \"&&(this.charset&&this.charset[ch]&&(ch=this.charset[ch]),this.x>=this.cols&&(this.x=0,this.y++),this.lines[this.y+this.ybase][this.x]=[this.curAttr,ch],this.x++,this.updateRange(this.y))}break;case states.escaped:switch(ch){case\"[\":this.params=[],this.currentParam=0,this.state=states.csi;break;case\"]\":this.params=[],this.currentParam=0,this.state=states.osc;break;case\"P\":this.params=[],this.currentParam=0,this.state=states.dcs;break;case\"_\":this.stateType=\"apc\",this.state=states.ignore;break;case\"^\":this.stateType=\"pm\",this.state=states.ignore;break;case\"c\":this.reset();break;case\"E\":this.x=0;break;case\"D\":this.index();break;case\"M\":this.reverseIndex();break;case\"%\":this.setgLevel(0),this.setgCharset(0,Terminal.charsets.US),this.state=states.normal,i++;break;case\"(\":case\")\":case\"*\":case\"+\":case\"-\":case\".\":switch(ch){case\"(\":this.gcharset=0;break;case\")\":this.gcharset=1;break;case\"*\":this.gcharset=2;break;case\"+\":this.gcharset=3;break;case\"-\":this.gcharset=1;break;case\".\":this.gcharset=2}this.state=states.charset;break;case\"/\":this.gcharset=3,this.state=states.charset,i--;break;case\"N\":break;case\"O\":break;case\"n\":this.setgLevel(2);break;case\"o\":this.setgLevel(3);break;case\"|\":this.setgLevel(3);break;case\"}\":this.setgLevel(2);break;case\"~\":this.setgLevel(1);break;case\"7\":this.saveCursor(),this.state=states.normal;break;case\"8\":this.restoreCursor(),this.state=states.normal;break;case\"#\":this.state=states.normal,i++;break;case\"H\":this.tabSet();break;case\"=\":this.log(\"Serial port requested application keypad.\"),this.applicationKeypad=!0,this.state=states.normal;break;case\">\":this.log(\"Switching back to normal keypad.\"),this.applicationKeypad=!1,this.state=states.normal;break;default:this.state=states.normal,this.error(\"Unknown ESC control: %s.\",ch)}break;case states.charset:switch(ch){case\"0\":cs=Terminal.charsets.SCLD;break;case\"A\":cs=Terminal.charsets.UK;break;case\"B\":cs=Terminal.charsets.US;break;case\"4\":cs=Terminal.charsets.Dutch;break;case\"C\":case\"5\":cs=Terminal.charsets.Finnish;break;case\"R\":cs=Terminal.charsets.French;break;case\"Q\":cs=Terminal.charsets.FrenchCanadian;break;case\"K\":cs=Terminal.charsets.German;break;case\"Y\":cs=Terminal.charsets.Italian;break;case\"E\":case\"6\":cs=Terminal.charsets.NorwegianDanish;break;case\"Z\":cs=Terminal.charsets.Spanish;break;case\"H\":case\"7\":cs=Terminal.charsets.Swedish;break;case\"=\":cs=Terminal.charsets.Swiss;break;case\"/\":cs=Terminal.charsets.ISOLatin,i++;break;default:cs=Terminal.charsets.US}this.setgCharset(this.gcharset,cs),this.gcharset=null,this.state=states.normal;break;case states.osc:if(\"\u001b\"===ch||\"\u0007\"===ch){switch(\"\u001b\"===ch&&i++,this.params.push(this.currentParam),this.params[0]){case 0:case 1:case 2:this.params[1]&&(this.title=this.params[1],this.handleTitle(this.title));break;case 3:break;case 4:case 5:break;case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:break;case 46:break;case 50:break;case 51:break;case 52:break;case 104:case 105:case 110:case 111:case 112:case 113:case 114:case 115:case 116:case 117:case 118:}this.params=[],this.currentParam=0,this.state=states.normal}else this.params.length?this.currentParam+=ch:ch>=\"0\"&&\"9\">=ch?this.currentParam=10*this.currentParam+ch.charCodeAt(0)-48:\";\"===ch&&(this.params.push(this.currentParam),this.currentParam=\"\");break;case states.csi:if(\"?\"===ch||\">\"===ch||\"!\"===ch){this.prefix=ch;break}if(ch>=\"0\"&&\"9\">=ch){this.currentParam=10*this.currentParam+ch.charCodeAt(0)-48;break}if(\"$\"===ch||'\"'===ch||\" \"===ch||\"'\"===ch){this.postfix=ch;break}if(this.params.push(this.currentParam),this.currentParam=0,\";\"===ch)break;switch(this.state=states.normal,ch){case\"A\":this.cursorUp(this.params);break;case\"B\":this.cursorDown(this.params);break;case\"C\":this.cursorForward(this.params);break;case\"D\":this.cursorBackward(this.params);break;case\"H\":this.cursorPos(this.params);break;case\"J\":this.eraseInDisplay(this.params);break;case\"K\":this.eraseInLine(this.params);break;case\"m\":this.charAttributes(this.params);break;case\"n\":this.deviceStatus(this.params);break;case\"@\":this.insertChars(this.params);break;case\"E\":this.cursorNextLine(this.params);break;case\"F\":this.cursorPrecedingLine(this.params);break;case\"G\":this.cursorCharAbsolute(this.params);break;case\"L\":this.insertLines(this.params);break;case\"M\":this.deleteLines(this.params);break;case\"P\":this.deleteChars(this.params);break;case\"X\":this.eraseChars(this.params);break;case\"`\":this.charPosAbsolute(this.params);break;case\"a\":this.HPositionRelative(this.params);break;case\"c\":break;case\"d\":this.linePosAbsolute(this.params);break;case\"e\":this.VPositionRelative(this.params);break;case\"f\":this.HVPosition(this.params);break;case\"h\":break;case\"l\":break;case\"r\":break;case\"s\":this.saveCursor(this.params);break;case\"u\":this.restoreCursor(this.params);break;case\"I\":this.cursorForwardTab(this.params);break;case\"S\":break;case\"T\":2>this.params.length&&!this.prefix;break;case\"Z\":this.cursorBackwardTab(this.params);break;case\"b\":this.repeatPrecedingCharacter(this.params);break;case\"g\":this.tabClear(this.params);break;case\"p\":switch(this.prefix){case\"!\":this.softReset(this.params)}break;default:this.error(\"Unknown CSI code: %s.\",ch)}this.prefix=\"\",this.postfix=\"\";break;case states.dcs:if(\"\u001b\"===ch||\"\u0007\"===ch){switch(\"\u001b\"===ch&&i++,this.prefix){case\"\":break;case\"$q\":var pt=this.currentParam;switch(pt){case'\"q':pt='0\"q';break;case'\"p':pt='61\"p';break;case\"r\":pt=\"\"+(this.scrollTop+1)+\";\"+(this.scrollBottom+1)+\"r\";break;case\"m\":pt=\"0m\";break;default:this.error(\"Unknown DCS Pt: %s.\",pt),pt=\"\"}break;case\"+p\":break;default:this.error(\"Unknown DCS prefix: %s.\",this.prefix)}this.currentParam=0,this.prefix=\"\",this.state=states.normal}else this.currentParam?this.currentParam+=ch:this.prefix||\"$\"===ch||\"+\"===ch?2===this.prefix.length?this.currentParam=ch:this.prefix+=ch:this.currentParam=ch;break;case states.ignore:\"\u001b\"===ch||\"\u0007\"===ch?(\"\u001b\"===ch&&i++,this.stateData=\"\",this.state=states.normal):(this.stateData||(this.stateData=\"\"),this.stateData+=ch)}this.updateRange(this.y),this.refresh(this.refreshStart,this.refreshEnd)},Terminal.prototype.writeln=function(data){data=data.replace(/ /g,\" \"),this.write(data+\" \\r\\n\")}}},{\"./states\":36}],32:[function(require,module){\"use strict\";var states=require(\"../states\");module.exports=function(Terminal){Terminal.prototype.index=function(){this.y++,this.y>this.scrollBottom&&(this.y--,this.scroll()),this.state=states.normal},Terminal.prototype.reverseIndex=function(){var j;this.y--,this.y\u003Cthis.scrollTop&&(this.y++,this.lines.splice(this.y+this.ybase,0,this.blankLine(!0)),j=this.rows-1-this.scrollBottom,this.lines.splice(this.rows-1+this.ybase-j+1,1),this.updateRange(this.scrollTop),this.updateRange(this.scrollBottom)),this.state=states.normal}}},{\"../states\":36}],34:[function(require,module){\"use strict\";var states=require(\"../states\");module.exports=function(Terminal){Terminal.prototype.tabSet=function(){this.tabs[this.x]=!0,this.state=states.normal}}},{\"../states\":36}],26:[function(require,module){(function(process){\"use strict\";function isFunctionDeclaration(snippet){var firstStatement=snippet.ast.body&&snippet.ast.body[0]&&snippet.ast.body[0];return firstStatement&&\"FunctionDeclaration\"===firstStatement.type}function added(origKeys,keys){return keys.filter(function(k){return!~origKeys.indexOf(k)\n})}function changed(ctx,prevCtx,prevKeys){return prevKeys.filter(function(k){return!deepIs(prevCtx[k],ctx[k])})}function keyValues(keys,ctx,prevCtx){return keys.map(function(k){return{key:k,value:ctx[k],prevValue:prevCtx?prevCtx[k]:void 0}})}function cleaned(ctx,add){var cleanedCtx=removeProblematic(ctx);return Object.keys(add).forEach(function(k){cleanedCtx[k]=add[k]}),cleanedCtx}function evalSnippet(ctx,snippet,isStrict,allTrackedKeyValues){browser&&(ctx=cleaned(ctx,allTrackedKeyValues));var result,prevCtx=clone(ctx),prevKeys=Object.keys(prevCtx),code=snippet.code;try{isStrict&&!useStrictRx.test(code)&&parse('\"use strict\";'+snippet.code),result=runner.runInCtx(code,ctx)}catch(e){ctx[ErrorIndicator]=\"\"+e}browser&&(ctx=cleaned(ctx,{}));var crntCtx=clone(ctx),keys=Object.keys(crntCtx),addedValues=added(prevKeys,keys);browser&&(addedValues=removeIFrameGenerated(addedValues));var addedKeyValues=keyValues(addedValues,crntCtx),changedValues=changed(crntCtx,prevCtx,prevKeys),changedKeyValues=keyValues(changedValues,crntCtx,prevCtx);snippet.evaluated={result:result,ctx:prevCtx,added:clone(addedKeyValues),changed:clone(changedKeyValues)},browser&&(addedKeyValues.concat(changedKeyValues).forEach(function(x){allTrackedKeyValues[x.key]=x.value}),delete allTrackedKeyValues[ErrorIndicator]),delete ctx[ErrorIndicator]}var browser=process.browser,clone=(require(\"vm\"),require(\"clone\")),deepIs=require(\"deep-is\"),runner=require(\"./runner-vm\"),colors=require(\"ansicolors\"),parse=require(\"esprima\").parse,removeIFrameGenerated=require(\"./remove-iframe-generated\"),removeProblematic=require(\"./remove-problematic\"),createSandbox=require(\"./create-sandbox\"),ErrorIndicator=colors.red(\"!\"),useStrictRx=/^ *['\"]use strict['\"]/;module.exports=function(snippets,fullSrcPath){var fndecs,sandbox=createSandbox(fullSrcPath),ctx=runner.createCtx(sandbox),allTrackedKeyValues={},nonEmptySnippets=snippets.filter(function(snippet){return snippet.code.length}),isStrict=nonEmptySnippets.some(function(snippet){return useStrictRx.test(snippet.raw)});return browser||(fndecs=nonEmptySnippets.filter(function(snippet,idx){return isFunctionDeclaration(snippet)?(nonEmptySnippets.splice(idx,1),!0):!1}),fndecs.forEach(function(snippet){evalSnippet(ctx,snippet,isStrict,allTrackedKeyValues)})),nonEmptySnippets.forEach(function(snippet){evalSnippet(ctx,snippet,isStrict,allTrackedKeyValues)}),ctx}})(require(\"__browserify_process\"))},{vm:31,\"./runner-vm\":59,\"./remove-iframe-generated\":60,\"./remove-problematic\":61,\"./create-sandbox\":66,clone:67,ansicolors:68,\"deep-is\":69,esprima:70,__browserify_process:16}],66:[function(require,module){(function(process,global){\"use strict\";function cleanProcess(process){var exclude={stdout:!0,stderr:!0,stdin:!0,mainModule:!0};return removeProblematic(process,exclude)}var browser=process.browser,requireLikeName=\"require-like\",requireLike=browser?function(){}:require(requireLikeName),path=require(\"path\"),removeProblematic=require(\"./remove-problematic\");module.exports=function(fullSrcPath){var exports={},sandbox={console:global.console,module:{exports:exports,parent:null},exports:exports,process:cleanProcess(process)},serverside={require:requireLike(fullSrcPath),__filename:fullSrcPath,__dirname:path.dirname(fullSrcPath),Buffer:require(\"buffer\").Buffer,ArrayBuffer:global.ArrayBuffer,Int8Array:global.Int8Array,Uint8Array:global.Uint8Array,Uint8ClampedArray:global.Uint8ClampedArray,Int16Array:global.Int16Array,Uint16Array:global.Uint16Array,Int32Array:global.Int32Array,Uint32Array:global.Uint32Array,Float32Array:global.Float32Array,Float64Array:global.Float64Array,DataView:global.DataView};return browser||Object.keys(serverside).forEach(function(k){sandbox[k]=serverside[k]}),sandbox}})(require(\"__browserify_process\"),window)},{path:65,buffer:71,\"./remove-problematic\":61,__browserify_process:16}],27:[function(require,module){\"use strict\";function formatAdd(key,value,diffopts){return format(\"%s %s: %s\",colors.brightGreen(\"+\"),key,diffValues({},value,diffopts))}function formatChange(key,prevValue,value,diffopts){return format(\"%s %s: %s\",colors.brightBlue(\"~\"),key,diffValues(prevValue,value,diffopts))}function formatResult(result,diffopts){return format(\"%s %s\",colors.cyan(\"=>\"),diffValues({},result,diffopts))}function formatSectionEnd(multiLine,lastOne){return!multiLine||lastOne?\"\\n\":colors.brightBlack(\"\\n--------\\n\")}function resolveTale(evaluated,opts){if(!evaluated)return\"\";var tales=[];return evaluated.added.length&&evaluated.added.forEach(function(x){tales.push(opts.formatAdd(x.key,x.value,opts.diff))}),evaluated.changed.length&&evaluated.changed.forEach(function(x){tales.push(opts.formatChange(x.key,x.prevValue,x.value,opts.diff))}),evaluated.result!==void 0&&tales.push(opts.formatResult(evaluated.result,opts.diff)),tales.reduce(function(s,tale,idx,all){var lastOne=idx===all.length-1,multiLine=~tale.indexOf(\"\\n\");return s+tale+opts.formatSectionEnd(multiLine,lastOne)},\"\")}var diffValues=require(\"./diff-values\"),format=require(\"util\").format,colors=require(\"ansicolors\");module.exports=function(snippets,opts){return opts=opts||{},opts.formatAdd=opts.formatAdd||formatAdd,opts.formatChange=opts.formatChange||formatChange,opts.formatResult=opts.formatResult||formatResult,opts.formatSectionEnd=opts.formatSectionEnd||formatSectionEnd,snippets.map(function(snippet){var tale=resolveTale(snippet.evaluated,opts);return{tale:tale,insertAfter:snippet.end}})}},{util:6,\"./diff-values\":72,ansicolors:68}],73:[function(require,module){(function(){function objectKeys(object){if(Object.keys)return Object.keys(object);var result=[];for(var name in object)Object.prototype.hasOwnProperty.call(object,name)&&result.push(name);return result}function replacer(key,value){return void 0===value?\"\"+value:\"number\"!=typeof value||!isNaN(value)&&isFinite(value)?\"function\"==typeof value||value instanceof RegExp?\"\"+value:value:\"\"+value}function truncate(s,n){return\"string\"==typeof s?n>s.length?s:s.slice(0,n):s}function fail(actual,expected,message,operator,stackStartFunction){throw new assert.AssertionError({message:message,actual:actual,expected:expected,operator:operator,stackStartFunction:stackStartFunction})}function ok(value,message){value||fail(value,!0,message,\"==\",assert.ok)}function _deepEqual(actual,expected){if(actual===expected)return!0;if(Buffer.isBuffer(actual)&&Buffer.isBuffer(expected)){if(actual.length!=expected.length)return!1;for(var i=0;actual.length>i;i++)if(actual[i]!==expected[i])return!1;return!0}return actual instanceof Date&&expected instanceof Date?actual.getTime()===expected.getTime():\"object\"!=typeof actual&&\"object\"!=typeof expected?actual==expected:objEquiv(actual,expected)}function isUndefinedOrNull(value){return null===value||void 0===value}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function objEquiv(a,b){if(isUndefinedOrNull(a)||isUndefinedOrNull(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),_deepEqual(a,b)):!1;try{var key,i,ka=objectKeys(a),kb=objectKeys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!_deepEqual(a[key],b[key]))return!1;return!0}function expectedException(actual,expected){return actual&&expected?expected instanceof RegExp?expected.test(actual):actual instanceof expected?!0:expected.call({},actual)===!0?!0:!1:!1}function _throws(shouldThrow,block,expected,message){var actual;\"string\"==typeof expected&&(message=expected,expected=null);try{block()}catch(e){actual=e}if(message=(expected&&expected.name?\" (\"+expected.name+\").\":\".\")+(message?\" \"+message:\".\"),shouldThrow&&!actual&&fail(\"Missing expected exception\"+message),!shouldThrow&&expectedException(actual,expected)&&fail(\"Got unwanted exception\"+message),shouldThrow&&actual&&expected&&!expectedException(actual,expected)||!shouldThrow&&actual)throw actual}var util=require(\"util\"),Buffer=require(\"buffer\").Buffer,pSlice=Array.prototype.slice,assert=module.exports=ok;assert.AssertionError=function(options){this.name=\"AssertionError\",this.message=options.message,this.actual=options.actual,this.expected=options.expected,this.operator=options.operator;var stackStartFunction=options.stackStartFunction||fail;Error.captureStackTrace&&Error.captureStackTrace(this,stackStartFunction)},util.inherits(assert.AssertionError,Error),assert.AssertionError.prototype.toString=function(){return this.message?[this.name+\":\",this.message].join(\" \"):[this.name+\":\",truncate(JSON.stringify(this.actual,replacer),128),this.operator,truncate(JSON.stringify(this.expected,replacer),128)].join(\" \")},assert.AssertionError.__proto__=Error.prototype,assert.fail=fail,assert.ok=ok,assert.equal=function(actual,expected,message){actual!=expected&&fail(actual,expected,message,\"==\",assert.equal)},assert.notEqual=function(actual,expected,message){actual==expected&&fail(actual,expected,message,\"!=\",assert.notEqual)},assert.deepEqual=function(actual,expected,message){_deepEqual(actual,expected)||fail(actual,expected,message,\"deepEqual\",assert.deepEqual)},assert.notDeepEqual=function(actual,expected,message){_deepEqual(actual,expected)&&fail(actual,expected,message,\"notDeepEqual\",assert.notDeepEqual)},assert.strictEqual=function(actual,expected,message){actual!==expected&&fail(actual,expected,message,\"===\",assert.strictEqual)},assert.notStrictEqual=function(actual,expected,message){actual===expected&&fail(actual,expected,message,\"!==\",assert.notStrictEqual)},assert.throws=function(){_throws.apply(this,[!0].concat(pSlice.call(arguments)))},assert.doesNotThrow=function(){_throws.apply(this,[!1].concat(pSlice.call(arguments)))},assert.ifError=function(err){if(err)throw err}})()},{util:6,buffer:71}],74:[function(){},{}],69:[function(require,module){function isUndefinedOrNull(value){return null===value||void 0===value}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function isNumberNaN(value){return\"number\"==typeof value&&value!==value}function areZerosEqual(zeroA,zeroB){return 1/zeroA===1/zeroB}function objEquiv(a,b){if(isUndefinedOrNull(a)||isUndefinedOrNull(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),deepEqual(a,b)):!1;try{var key,i,ka=Object_keys(a),kb=Object_keys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!deepEqual(a[key],b[key]))return!1;return!0}var pSlice=Array.prototype.slice,Object_keys=\"function\"==typeof Object.keys?Object.keys:function(obj){var keys=[];for(var key in obj)keys.push(key);return keys},deepEqual=module.exports=function(actual,expected){return 0===actual&&0===expected?areZerosEqual(actual,expected):actual===expected?!0:actual instanceof Date&&expected instanceof Date?actual.getTime()===expected.getTime():isNumberNaN(actual)?isNumberNaN(expected):\"object\"!=typeof actual&&\"object\"!=typeof expected?actual==expected:objEquiv(actual,expected)}},{}],68:[function(require,module){\"use strict\";var colorNums={white:37,black:30,blue:34,cyan:36,green:32,magenta:35,red:31,yellow:33,brightBlack:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97},backgroundColorNums={bgBlack:40,bgRed:41,bgGreen:42,bgYellow:43,bgBlue:44,bgMagenta:45,bgCyan:46,bgWhite:47,bgBrightBlack:100,bgBrightRed:101,bgBrightGreen:102,bgBrightYellow:103,bgBrightBlue:104,bgBrightMagenta:105,bgBrightCyan:106,bgBrightWhite:107},colors={};Object.keys(colorNums).forEach(function(k){colors[k]=function(s){return\"\u001b[\"+colorNums[k]+\"m\"+s+\"\u001b[39m\"}}),Object.keys(backgroundColorNums).forEach(function(k){colors[k]=function(s){return\"\u001b[\"+backgroundColorNums[k]+\"m\"+s+\"\u001b[49m\"}}),module.exports=colors},{}],70:[function(require,module,exports){(function(){(function(root,factory){\"use strict\";\"function\"==typeof define&&define.amd?define([\"exports\"],factory):exports!==void 0?factory(exports):factory(root.esprima={})})(this,function(exports){\"use strict\";function assert(condition,message){if(!condition)throw Error(\"ASSERT: \"+message)}function sliceSource(from,to){return source.slice(from,to)}function isDecimalDigit(ch){return\"0123456789\".indexOf(ch)>=0}function isHexDigit(ch){return\"0123456789abcdefABCDEF\".indexOf(ch)>=0}function isOctalDigit(ch){return\"01234567\".indexOf(ch)>=0}function isWhiteSpace(ch){return\" \"===ch||\"\t\"===ch||\"\u000b\"===ch||\"\\f\"===ch||\" \"===ch||ch.charCodeAt(0)>=5760&&\" \".indexOf(ch)>=0}function isLineTerminator(ch){return\"\\n\"===ch||\"\\r\"===ch||\"\\u2028\"===ch||\"\\u2029\"===ch}function isIdentifierStart(ch){return\"$\"===ch||\"_\"===ch||\"\\\\\"===ch||ch>=\"a\"&&\"z\">=ch||ch>=\"A\"&&\"Z\">=ch||ch.charCodeAt(0)>=128&&Regex.NonAsciiIdentifierStart.test(ch)}function isIdentifierPart(ch){return\"$\"===ch||\"_\"===ch||\"\\\\\"===ch||ch>=\"a\"&&\"z\">=ch||ch>=\"A\"&&\"Z\">=ch||ch>=\"0\"&&\"9\">=ch||ch.charCodeAt(0)>=128&&Regex.NonAsciiIdentifierPart.test(ch)}function isFutureReservedWord(id){switch(id){case\"class\":case\"enum\":case\"export\":case\"extends\":case\"import\":case\"super\":return!0}return!1}function isStrictModeReservedWord(id){switch(id){case\"implements\":case\"interface\":case\"package\":case\"private\":case\"protected\":case\"public\":case\"static\":case\"yield\":case\"let\":return!0}return!1}function isRestrictedWord(id){return\"eval\"===id||\"arguments\"===id}function isKeyword(id){var keyword=!1;switch(id.length){case 2:keyword=\"if\"===id||\"in\"===id||\"do\"===id;break;case 3:keyword=\"var\"===id||\"for\"===id||\"new\"===id||\"try\"===id;break;case 4:keyword=\"this\"===id||\"else\"===id||\"case\"===id||\"void\"===id||\"with\"===id;break;case 5:keyword=\"while\"===id||\"break\"===id||\"catch\"===id||\"throw\"===id;break;case 6:keyword=\"return\"===id||\"typeof\"===id||\"delete\"===id||\"switch\"===id;break;case 7:keyword=\"default\"===id||\"finally\"===id;break;case 8:keyword=\"function\"===id||\"continue\"===id||\"debugger\"===id;break;case 10:keyword=\"instanceof\"===id}if(keyword)return!0;switch(id){case\"const\":return!0;case\"yield\":case\"let\":return!0}return strict&&isStrictModeReservedWord(id)?!0:isFutureReservedWord(id)}function skipComment(){var ch,blockComment,lineComment;for(blockComment=!1,lineComment=!1;length>index;)if(ch=source[index],lineComment)ch=source[index++],isLineTerminator(ch)&&(lineComment=!1,\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index);else if(blockComment)isLineTerminator(ch)?(\"\\r\"===ch&&\"\\n\"===source[index+1]&&++index,++lineNumber,++index,lineStart=index,index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")):(ch=source[index++],index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),\"*\"===ch&&(ch=source[index],\"/\"===ch&&(++index,blockComment=!1)));else if(\"/\"===ch)if(ch=source[index+1],\"/\"===ch)index+=2,lineComment=!0;else{if(\"*\"!==ch)break;index+=2,blockComment=!0,index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")}else if(isWhiteSpace(ch))++index;else{if(!isLineTerminator(ch))break;++index,\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index}}function scanHexEscape(prefix){var i,len,ch,code=0;for(len=\"u\"===prefix?4:2,i=0;len>i;++i){if(!(length>index&&isHexDigit(source[index])))return\"\";ch=source[index++],code=16*code+\"0123456789abcdef\".indexOf(ch.toLowerCase())}return String.fromCharCode(code)}function scanIdentifier(){var ch,start,id,restore;if(ch=source[index],isIdentifierStart(ch)){if(start=index,\"\\\\\"===ch){if(++index,\"u\"!==source[index])return;if(++index,restore=index,ch=scanHexEscape(\"u\")){if(\"\\\\\"===ch||!isIdentifierStart(ch))return;id=ch}else index=restore,id=\"u\"}else id=source[index++];for(;length>index&&(ch=source[index],isIdentifierPart(ch));)if(\"\\\\\"===ch){if(++index,\"u\"!==source[index])return;if(++index,restore=index,ch=scanHexEscape(\"u\")){if(\"\\\\\"===ch||!isIdentifierPart(ch))return;id+=ch}else index=restore,id+=\"u\"}else id+=source[index++];return 1===id.length?{type:Token.Identifier,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:isKeyword(id)?{type:Token.Keyword,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:\"null\"===id?{type:Token.NullLiteral,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:\"true\"===id||\"false\"===id?{type:Token.BooleanLiteral,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:{type:Token.Identifier,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}}function scanPunctuator(){var ch2,ch3,ch4,start=index,ch1=source[index];return\";\"===ch1||\"{\"===ch1||\"}\"===ch1?(++index,{type:Token.Punctuator,value:ch1,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\",\"===ch1||\"(\"===ch1||\")\"===ch1?(++index,{type:Token.Punctuator,value:ch1,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):(ch2=source[index+1],\".\"!==ch1||isDecimalDigit(ch2)?(ch3=source[index+2],ch4=source[index+3],\">\"===ch1&&\">\"===ch2&&\">\"===ch3&&\"=\"===ch4?(index+=4,{type:Token.Punctuator,value:\">>>=\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"=\"===ch1&&\"=\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\"===\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"!\"===ch1&&\"=\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\"!==\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\">\"===ch1&&\">\"===ch2&&\">\"===ch3?(index+=3,{type:Token.Punctuator,value:\">>>\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"\u003C\"===ch1&&\"\u003C\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\"\u003C\u003C=\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\">\"===ch1&&\">\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\">>=\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"=\"===ch2&&\"\u003C>=!+-*%&|^/\".indexOf(ch1)>=0?(index+=2,{type:Token.Punctuator,value:ch1+ch2,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):ch1===ch2&&\"+-\u003C>&|\".indexOf(ch1)>=0&&\"+-\u003C>&|\".indexOf(ch2)>=0?(index+=2,{type:Token.Punctuator,value:ch1+ch2,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"[]\u003C>+-*%&|^!~?:=/\".indexOf(ch1)>=0?{type:Token.Punctuator,value:source[index++],lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:void 0):{type:Token.Punctuator,value:source[index++],lineNumber:lineNumber,lineStart:lineStart,range:[start,index]})}function scanNumericLiteral(){var number,start,ch;if(ch=source[index],assert(isDecimalDigit(ch)||\".\"===ch,\"Numeric literal must start with a decimal digit or a decimal point\"),start=index,number=\"\",\".\"!==ch){if(number=source[index++],ch=source[index],\"0\"===number){if(\"x\"===ch||\"X\"===ch){for(number+=source[index++];length>index&&(ch=source[index],isHexDigit(ch));)number+=source[index++];return 2>=number.length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),length>index&&(ch=source[index],isIdentifierStart(ch)&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")),{type:Token.NumericLiteral,value:parseInt(number,16),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}if(isOctalDigit(ch)){for(number+=source[index++];length>index&&(ch=source[index],isOctalDigit(ch));)number+=source[index++];return length>index&&(ch=source[index],(isIdentifierStart(ch)||isDecimalDigit(ch))&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")),{type:Token.NumericLiteral,value:parseInt(number,8),octal:!0,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}isDecimalDigit(ch)&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")}for(;length>index&&(ch=source[index],isDecimalDigit(ch));)number+=source[index++]}if(\".\"===ch)for(number+=source[index++];length>index&&(ch=source[index],isDecimalDigit(ch));)number+=source[index++];if(\"e\"===ch||\"E\"===ch)if(number+=source[index++],ch=source[index],(\"+\"===ch||\"-\"===ch)&&(number+=source[index++]),ch=source[index],isDecimalDigit(ch))for(number+=source[index++];length>index&&(ch=source[index],isDecimalDigit(ch));)number+=source[index++];else ch=\"character \"+ch,index>=length&&(ch=\"\u003Cend>\"),throwError({},Messages.UnexpectedToken,\"ILLEGAL\");return length>index&&(ch=source[index],isIdentifierStart(ch)&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")),{type:Token.NumericLiteral,value:parseFloat(number),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}function scanStringLiteral(){var quote,start,ch,code,unescaped,restore,str=\"\",octal=!1;for(quote=source[index],assert(\"'\"===quote||'\"'===quote,\"String literal must starts with a quote\"),start=index,++index;length>index;){if(ch=source[index++],ch===quote){quote=\"\";break}if(\"\\\\\"===ch)if(ch=source[index++],isLineTerminator(ch))++lineNumber,\"\\r\"===ch&&\"\\n\"===source[index]&&++index;else switch(ch){case\"n\":str+=\"\\n\";break;case\"r\":str+=\"\\r\";break;case\"t\":str+=\"\t\";break;case\"u\":case\"x\":restore=index,unescaped=scanHexEscape(ch),unescaped?str+=unescaped:(index=restore,str+=ch);break;case\"b\":str+=\"\\b\";break;case\"f\":str+=\"\\f\";break;case\"v\":str+=\"\u000b\";break;default:isOctalDigit(ch)?(code=\"01234567\".indexOf(ch),0!==code&&(octal=!0),length>index&&isOctalDigit(source[index])&&(octal=!0,code=8*code+\"01234567\".indexOf(source[index++]),\"0123\".indexOf(ch)>=0&&length>index&&isOctalDigit(source[index])&&(code=8*code+\"01234567\".indexOf(source[index++]))),str+=String.fromCharCode(code)):str+=ch}else{if(isLineTerminator(ch))break;str+=ch}}return\"\"!==quote&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),{type:Token.StringLiteral,value:str,octal:octal,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}function scanRegExp(){var str,ch,start,pattern,flags,value,restore,classMarker=!1,terminated=!1;for(buffer=null,skipComment(),start=index,ch=source[index],assert(\"/\"===ch,\"Regular expression literal must start with a slash\"),str=source[index++];length>index;)if(ch=source[index++],str+=ch,classMarker)\"]\"===ch&&(classMarker=!1);else if(\"\\\\\"===ch)ch=source[index++],isLineTerminator(ch)&&throwError({},Messages.UnterminatedRegExp),str+=ch;else{if(\"/\"===ch){terminated=!0;break}\"[\"===ch?classMarker=!0:isLineTerminator(ch)&&throwError({},Messages.UnterminatedRegExp)}for(terminated||throwError({},Messages.UnterminatedRegExp),pattern=str.substr(1,str.length-2),flags=\"\";length>index&&(ch=source[index],isIdentifierPart(ch));)if(++index,\"\\\\\"===ch&&length>index)if(ch=source[index],\"u\"===ch)if(++index,restore=index,ch=scanHexEscape(\"u\"))for(flags+=ch,str+=\"\\\\u\";index>restore;++restore)str+=source[restore];else index=restore,flags+=\"u\",str+=\"\\\\u\";else str+=\"\\\\\";else flags+=ch,str+=ch;try{value=RegExp(pattern,flags)}catch(e){throwError({},Messages.InvalidRegExp)}return{literal:str,value:value,range:[start,index]}}function isIdentifierName(token){return token.type===Token.Identifier||token.type===Token.Keyword||token.type===Token.BooleanLiteral||token.type===Token.NullLiteral}function advance(){var ch,token;return skipComment(),index>=length?{type:Token.EOF,lineNumber:lineNumber,lineStart:lineStart,range:[index,index]}:(token=scanPunctuator(),token!==void 0?token:(ch=source[index],\"'\"===ch||'\"'===ch?scanStringLiteral():\".\"===ch||isDecimalDigit(ch)?scanNumericLiteral():(token=scanIdentifier(),token!==void 0?token:(throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),void 0))))}function lex(){var token;return buffer?(index=buffer.range[1],lineNumber=buffer.lineNumber,lineStart=buffer.lineStart,token=buffer,buffer=null,token):(buffer=null,advance())}function lookahead(){var pos,line,start;return null!==buffer?buffer:(pos=index,line=lineNumber,start=lineStart,buffer=advance(),index=pos,lineNumber=line,lineStart=start,buffer)}function peekLineTerminator(){var pos,line,start,found;return pos=index,line=lineNumber,start=lineStart,skipComment(),found=lineNumber!==line,index=pos,lineNumber=line,lineStart=start,found}function throwError(token,messageFormat){var error,args=Array.prototype.slice.call(arguments,2),msg=messageFormat.replace(/%(\\d)/g,function(whole,index){return args[index]||\"\"});throw\"number\"==typeof token.lineNumber?(error=Error(\"Line \"+token.lineNumber+\": \"+msg),error.index=token.range[0],error.lineNumber=token.lineNumber,error.column=token.range[0]-lineStart+1):(error=Error(\"Line \"+lineNumber+\": \"+msg),error.index=index,error.lineNumber=lineNumber,error.column=index-lineStart+1),error}function throwErrorTolerant(){try{throwError.apply(null,arguments)}catch(e){if(!extra.errors)throw e;extra.errors.push(e)}}function throwUnexpected(token){if(token.type===Token.EOF&&throwError(token,Messages.UnexpectedEOS),token.type===Token.NumericLiteral&&throwError(token,Messages.UnexpectedNumber),token.type===Token.StringLiteral&&throwError(token,Messages.UnexpectedString),token.type===Token.Identifier&&throwError(token,Messages.UnexpectedIdentifier),token.type===Token.Keyword){if(isFutureReservedWord(token.value))throwError(token,Messages.UnexpectedReserved);else if(strict&&isStrictModeReservedWord(token.value))return throwErrorTolerant(token,Messages.StrictReservedWord),void 0;throwError(token,Messages.UnexpectedToken,token.value)}throwError(token,Messages.UnexpectedToken,token.value)}function expect(value){var token=lex();(token.type!==Token.Punctuator||token.value!==value)&&throwUnexpected(token)}function expectKeyword(keyword){var token=lex();(token.type!==Token.Keyword||token.value!==keyword)&&throwUnexpected(token)}function match(value){var token=lookahead();return token.type===Token.Punctuator&&token.value===value}function matchKeyword(keyword){var token=lookahead();return token.type===Token.Keyword&&token.value===keyword}function matchAssign(){var token=lookahead(),op=token.value;return token.type!==Token.Punctuator?!1:\"=\"===op||\"*=\"===op||\"/=\"===op||\"%=\"===op||\"+=\"===op||\"-=\"===op||\"\u003C\u003C=\"===op||\">>=\"===op||\">>>=\"===op||\"&=\"===op||\"^=\"===op||\"|=\"===op}function consumeSemicolon(){var token,line;if(\";\"===source[index])return lex(),void 0;if(line=lineNumber,skipComment(),lineNumber===line){if(match(\";\"))return lex(),void 0;token=lookahead(),token.type===Token.EOF||match(\"}\")||throwUnexpected(token)}}function isLeftHandSide(expr){return expr.type===Syntax.Identifier||expr.type===Syntax.MemberExpression}function parseArrayInitialiser(){var elements=[];for(expect(\"[\");!match(\"]\");)match(\",\")?(lex(),elements.push(null)):(elements.push(parseAssignmentExpression()),match(\"]\")||expect(\",\"));return expect(\"]\"),{type:Syntax.ArrayExpression,elements:elements}}function parsePropertyFunction(param,first){var previousStrict,body;return previousStrict=strict,body=parseFunctionSourceElements(),first&&strict&&isRestrictedWord(param[0].name)&&throwErrorTolerant(first,Messages.StrictParamName),strict=previousStrict,{type:Syntax.FunctionExpression,id:null,params:param,defaults:[],body:body,rest:null,generator:!1,expression:!1}}function parseObjectPropertyKey(){var token=lex();return token.type===Token.StringLiteral||token.type===Token.NumericLiteral?(strict&&token.octal&&throwErrorTolerant(token,Messages.StrictOctalLiteral),createLiteral(token)):{type:Syntax.Identifier,name:token.value}}function parseObjectProperty(){var token,key,id,param;return token=lookahead(),token.type===Token.Identifier?(id=parseObjectPropertyKey(),\"get\"!==token.value||match(\":\")?\"set\"!==token.value||match(\":\")?(expect(\":\"),{type:Syntax.Property,key:id,value:parseAssignmentExpression(),kind:\"init\"}):(key=parseObjectPropertyKey(),expect(\"(\"),token=lookahead(),token.type!==Token.Identifier&&throwUnexpected(lex()),param=[parseVariableIdentifier()],expect(\")\"),{type:Syntax.Property,key:key,value:parsePropertyFunction(param,token),kind:\"set\"}):(key=parseObjectPropertyKey(),expect(\"(\"),expect(\")\"),{type:Syntax.Property,key:key,value:parsePropertyFunction([]),kind:\"get\"})):token.type!==Token.EOF&&token.type!==Token.Punctuator?(key=parseObjectPropertyKey(),expect(\":\"),{type:Syntax.Property,key:key,value:parseAssignmentExpression(),kind:\"init\"}):(throwUnexpected(token),void 0)}function parseObjectInitialiser(){var property,name,kind,properties=[],map={},toString=String;for(expect(\"{\");!match(\"}\");)property=parseObjectProperty(),name=property.key.type===Syntax.Identifier?property.key.name:toString(property.key.value),kind=\"init\"===property.kind?PropertyKind.Data:\"get\"===property.kind?PropertyKind.Get:PropertyKind.Set,Object.prototype.hasOwnProperty.call(map,name)?(map[name]===PropertyKind.Data?strict&&kind===PropertyKind.Data?throwErrorTolerant({},Messages.StrictDuplicateProperty):kind!==PropertyKind.Data&&throwErrorTolerant({},Messages.AccessorDataProperty):kind===PropertyKind.Data?throwErrorTolerant({},Messages.AccessorDataProperty):map[name]&kind&&throwErrorTolerant({},Messages.AccessorGetSet),map[name]|=kind):map[name]=kind,properties.push(property),match(\"}\")||expect(\",\");return expect(\"}\"),{type:Syntax.ObjectExpression,properties:properties}}function parseGroupExpression(){var expr;return expect(\"(\"),expr=parseExpression(),expect(\")\"),expr}function parsePrimaryExpression(){var token=lookahead(),type=token.type;if(type===Token.Identifier)return{type:Syntax.Identifier,name:lex().value};if(type===Token.StringLiteral||type===Token.NumericLiteral)return strict&&token.octal&&throwErrorTolerant(token,Messages.StrictOctalLiteral),createLiteral(lex());if(type===Token.Keyword){if(matchKeyword(\"this\"))return lex(),{type:Syntax.ThisExpression};if(matchKeyword(\"function\"))return parseFunctionExpression()}return type===Token.BooleanLiteral?(lex(),token.value=\"true\"===token.value,createLiteral(token)):type===Token.NullLiteral?(lex(),token.value=null,createLiteral(token)):match(\"[\")?parseArrayInitialiser():match(\"{\")?parseObjectInitialiser():match(\"(\")?parseGroupExpression():match(\"/\")||match(\"/=\")?createLiteral(scanRegExp()):throwUnexpected(lex())}function parseArguments(){var args=[];if(expect(\"(\"),!match(\")\"))for(;length>index&&(args.push(parseAssignmentExpression()),!match(\")\"));)expect(\",\");return expect(\")\"),args}function parseNonComputedProperty(){var token=lex();return isIdentifierName(token)||throwUnexpected(token),{type:Syntax.Identifier,name:token.value}}function parseNonComputedMember(){return expect(\".\"),parseNonComputedProperty()}function parseComputedMember(){var expr;return expect(\"[\"),expr=parseExpression(),expect(\"]\"),expr}function parseNewExpression(){var expr;return expectKeyword(\"new\"),expr={type:Syntax.NewExpression,callee:parseLeftHandSideExpression(),arguments:[]},match(\"(\")&&(expr.arguments=parseArguments()),expr}function parseLeftHandSideExpressionAllowCall(){var expr;for(expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\")||match(\"(\");)expr=match(\"(\")?{type:Syntax.CallExpression,callee:expr,arguments:parseArguments()}:match(\"[\")?{type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()}:{type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()};return expr}function parseLeftHandSideExpression(){var expr;for(expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\");)expr=match(\"[\")?{type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()}:{type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()};return expr}function parsePostfixExpression(){var token,expr=parseLeftHandSideExpressionAllowCall();return token=lookahead(),token.type!==Token.Punctuator?expr:(!match(\"++\")&&!match(\"--\")||peekLineTerminator()||(strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)&&throwErrorTolerant({},Messages.StrictLHSPostfix),isLeftHandSide(expr)||throwError({},Messages.InvalidLHSInAssignment),expr={type:Syntax.UpdateExpression,operator:lex().value,argument:expr,prefix:!1}),expr)}function parseUnaryExpression(){var token,expr;return token=lookahead(),token.type!==Token.Punctuator&&token.type!==Token.Keyword?parsePostfixExpression():match(\"++\")||match(\"--\")?(token=lex(),expr=parseUnaryExpression(),strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)&&throwErrorTolerant({},Messages.StrictLHSPrefix),isLeftHandSide(expr)||throwError({},Messages.InvalidLHSInAssignment),expr={type:Syntax.UpdateExpression,operator:token.value,argument:expr,prefix:!0}):match(\"+\")||match(\"-\")||match(\"~\")||match(\"!\")?expr={type:Syntax.UnaryExpression,operator:lex().value,argument:parseUnaryExpression()}:matchKeyword(\"delete\")||matchKeyword(\"void\")||matchKeyword(\"typeof\")?(expr={type:Syntax.UnaryExpression,operator:lex().value,argument:parseUnaryExpression()},strict&&\"delete\"===expr.operator&&expr.argument.type===Syntax.Identifier&&throwErrorTolerant({},Messages.StrictDelete),expr):parsePostfixExpression()\n}function parseMultiplicativeExpression(){for(var expr=parseUnaryExpression();match(\"*\")||match(\"/\")||match(\"%\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseUnaryExpression()};return expr}function parseAdditiveExpression(){for(var expr=parseMultiplicativeExpression();match(\"+\")||match(\"-\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseMultiplicativeExpression()};return expr}function parseShiftExpression(){for(var expr=parseAdditiveExpression();match(\"\u003C\u003C\")||match(\">>\")||match(\">>>\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseAdditiveExpression()};return expr}function parseRelationalExpression(){var expr,previousAllowIn;for(previousAllowIn=state.allowIn,state.allowIn=!0,expr=parseShiftExpression();match(\"\u003C\")||match(\">\")||match(\"\u003C=\")||match(\">=\")||previousAllowIn&&matchKeyword(\"in\")||matchKeyword(\"instanceof\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseShiftExpression()};return state.allowIn=previousAllowIn,expr}function parseEqualityExpression(){for(var expr=parseRelationalExpression();match(\"==\")||match(\"!=\")||match(\"===\")||match(\"!==\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseRelationalExpression()};return expr}function parseBitwiseANDExpression(){for(var expr=parseEqualityExpression();match(\"&\");)lex(),expr={type:Syntax.BinaryExpression,operator:\"&\",left:expr,right:parseEqualityExpression()};return expr}function parseBitwiseXORExpression(){for(var expr=parseBitwiseANDExpression();match(\"^\");)lex(),expr={type:Syntax.BinaryExpression,operator:\"^\",left:expr,right:parseBitwiseANDExpression()};return expr}function parseBitwiseORExpression(){for(var expr=parseBitwiseXORExpression();match(\"|\");)lex(),expr={type:Syntax.BinaryExpression,operator:\"|\",left:expr,right:parseBitwiseXORExpression()};return expr}function parseLogicalANDExpression(){for(var expr=parseBitwiseORExpression();match(\"&&\");)lex(),expr={type:Syntax.LogicalExpression,operator:\"&&\",left:expr,right:parseBitwiseORExpression()};return expr}function parseLogicalORExpression(){for(var expr=parseLogicalANDExpression();match(\"||\");)lex(),expr={type:Syntax.LogicalExpression,operator:\"||\",left:expr,right:parseLogicalANDExpression()};return expr}function parseConditionalExpression(){var expr,previousAllowIn,consequent;return expr=parseLogicalORExpression(),match(\"?\")&&(lex(),previousAllowIn=state.allowIn,state.allowIn=!0,consequent=parseAssignmentExpression(),state.allowIn=previousAllowIn,expect(\":\"),expr={type:Syntax.ConditionalExpression,test:expr,consequent:consequent,alternate:parseAssignmentExpression()}),expr}function parseAssignmentExpression(){var token,expr;return token=lookahead(),expr=parseConditionalExpression(),matchAssign()&&(isLeftHandSide(expr)||throwError({},Messages.InvalidLHSInAssignment),strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)&&throwErrorTolerant(token,Messages.StrictLHSAssignment),expr={type:Syntax.AssignmentExpression,operator:lex().value,left:expr,right:parseAssignmentExpression()}),expr}function parseExpression(){var expr=parseAssignmentExpression();if(match(\",\"))for(expr={type:Syntax.SequenceExpression,expressions:[expr]};length>index&&match(\",\");)lex(),expr.expressions.push(parseAssignmentExpression());return expr}function parseStatementList(){for(var statement,list=[];length>index&&!match(\"}\")&&(statement=parseSourceElement(),void 0!==statement);)list.push(statement);return list}function parseBlock(){var block;return expect(\"{\"),block=parseStatementList(),expect(\"}\"),{type:Syntax.BlockStatement,body:block}}function parseVariableIdentifier(){var token=lex();return token.type!==Token.Identifier&&throwUnexpected(token),{type:Syntax.Identifier,name:token.value}}function parseVariableDeclaration(kind){var id=parseVariableIdentifier(),init=null;return strict&&isRestrictedWord(id.name)&&throwErrorTolerant({},Messages.StrictVarName),\"const\"===kind?(expect(\"=\"),init=parseAssignmentExpression()):match(\"=\")&&(lex(),init=parseAssignmentExpression()),{type:Syntax.VariableDeclarator,id:id,init:init}}function parseVariableDeclarationList(kind){for(var list=[];length>index&&(list.push(parseVariableDeclaration(kind)),match(\",\"));)lex();return list}function parseVariableStatement(){var declarations;return expectKeyword(\"var\"),declarations=parseVariableDeclarationList(),consumeSemicolon(),{type:Syntax.VariableDeclaration,declarations:declarations,kind:\"var\"}}function parseConstLetDeclaration(kind){var declarations;return expectKeyword(kind),declarations=parseVariableDeclarationList(kind),consumeSemicolon(),{type:Syntax.VariableDeclaration,declarations:declarations,kind:kind}}function parseEmptyStatement(){return expect(\";\"),{type:Syntax.EmptyStatement}}function parseExpressionStatement(){var expr=parseExpression();return consumeSemicolon(),{type:Syntax.ExpressionStatement,expression:expr}}function parseIfStatement(){var test,consequent,alternate;return expectKeyword(\"if\"),expect(\"(\"),test=parseExpression(),expect(\")\"),consequent=parseStatement(),matchKeyword(\"else\")?(lex(),alternate=parseStatement()):alternate=null,{type:Syntax.IfStatement,test:test,consequent:consequent,alternate:alternate}}function parseDoWhileStatement(){var body,test,oldInIteration;return expectKeyword(\"do\"),oldInIteration=state.inIteration,state.inIteration=!0,body=parseStatement(),state.inIteration=oldInIteration,expectKeyword(\"while\"),expect(\"(\"),test=parseExpression(),expect(\")\"),match(\";\")&&lex(),{type:Syntax.DoWhileStatement,body:body,test:test}}function parseWhileStatement(){var test,body,oldInIteration;return expectKeyword(\"while\"),expect(\"(\"),test=parseExpression(),expect(\")\"),oldInIteration=state.inIteration,state.inIteration=!0,body=parseStatement(),state.inIteration=oldInIteration,{type:Syntax.WhileStatement,test:test,body:body}}function parseForVariableDeclaration(){var token=lex();return{type:Syntax.VariableDeclaration,declarations:parseVariableDeclarationList(),kind:token.value}}function parseForStatement(){var init,test,update,left,right,body,oldInIteration;return init=test=update=null,expectKeyword(\"for\"),expect(\"(\"),match(\";\")?lex():(matchKeyword(\"var\")||matchKeyword(\"let\")?(state.allowIn=!1,init=parseForVariableDeclaration(),state.allowIn=!0,1===init.declarations.length&&matchKeyword(\"in\")&&(lex(),left=init,right=parseExpression(),init=null)):(state.allowIn=!1,init=parseExpression(),state.allowIn=!0,matchKeyword(\"in\")&&(isLeftHandSide(init)||throwError({},Messages.InvalidLHSInForIn),lex(),left=init,right=parseExpression(),init=null)),left===void 0&&expect(\";\")),left===void 0&&(match(\";\")||(test=parseExpression()),expect(\";\"),match(\")\")||(update=parseExpression())),expect(\")\"),oldInIteration=state.inIteration,state.inIteration=!0,body=parseStatement(),state.inIteration=oldInIteration,left===void 0?{type:Syntax.ForStatement,init:init,test:test,update:update,body:body}:{type:Syntax.ForInStatement,left:left,right:right,body:body,each:!1}}function parseContinueStatement(){var token,label=null;return expectKeyword(\"continue\"),\";\"===source[index]?(lex(),state.inIteration||throwError({},Messages.IllegalContinue),{type:Syntax.ContinueStatement,label:null}):peekLineTerminator()?(state.inIteration||throwError({},Messages.IllegalContinue),{type:Syntax.ContinueStatement,label:null}):(token=lookahead(),token.type===Token.Identifier&&(label=parseVariableIdentifier(),Object.prototype.hasOwnProperty.call(state.labelSet,label.name)||throwError({},Messages.UnknownLabel,label.name)),consumeSemicolon(),null!==label||state.inIteration||throwError({},Messages.IllegalContinue),{type:Syntax.ContinueStatement,label:label})}function parseBreakStatement(){var token,label=null;return expectKeyword(\"break\"),\";\"===source[index]?(lex(),state.inIteration||state.inSwitch||throwError({},Messages.IllegalBreak),{type:Syntax.BreakStatement,label:null}):peekLineTerminator()?(state.inIteration||state.inSwitch||throwError({},Messages.IllegalBreak),{type:Syntax.BreakStatement,label:null}):(token=lookahead(),token.type===Token.Identifier&&(label=parseVariableIdentifier(),Object.prototype.hasOwnProperty.call(state.labelSet,label.name)||throwError({},Messages.UnknownLabel,label.name)),consumeSemicolon(),null!==label||state.inIteration||state.inSwitch||throwError({},Messages.IllegalBreak),{type:Syntax.BreakStatement,label:label})}function parseReturnStatement(){var token,argument=null;return expectKeyword(\"return\"),state.inFunctionBody||throwErrorTolerant({},Messages.IllegalReturn),\" \"===source[index]&&isIdentifierStart(source[index+1])?(argument=parseExpression(),consumeSemicolon(),{type:Syntax.ReturnStatement,argument:argument}):peekLineTerminator()?{type:Syntax.ReturnStatement,argument:null}:(match(\";\")||(token=lookahead(),match(\"}\")||token.type===Token.EOF||(argument=parseExpression())),consumeSemicolon(),{type:Syntax.ReturnStatement,argument:argument})}function parseWithStatement(){var object,body;return strict&&throwErrorTolerant({},Messages.StrictModeWith),expectKeyword(\"with\"),expect(\"(\"),object=parseExpression(),expect(\")\"),body=parseStatement(),{type:Syntax.WithStatement,object:object,body:body}}function parseSwitchCase(){var test,statement,consequent=[];for(matchKeyword(\"default\")?(lex(),test=null):(expectKeyword(\"case\"),test=parseExpression()),expect(\":\");length>index&&!(match(\"}\")||matchKeyword(\"default\")||matchKeyword(\"case\"))&&(statement=parseStatement(),void 0!==statement);)consequent.push(statement);return{type:Syntax.SwitchCase,test:test,consequent:consequent}}function parseSwitchStatement(){var discriminant,cases,clause,oldInSwitch,defaultFound;if(expectKeyword(\"switch\"),expect(\"(\"),discriminant=parseExpression(),expect(\")\"),expect(\"{\"),match(\"}\"))return lex(),{type:Syntax.SwitchStatement,discriminant:discriminant};for(cases=[],oldInSwitch=state.inSwitch,state.inSwitch=!0,defaultFound=!1;length>index&&!match(\"}\");)clause=parseSwitchCase(),null===clause.test&&(defaultFound&&throwError({},Messages.MultipleDefaultsInSwitch),defaultFound=!0),cases.push(clause);return state.inSwitch=oldInSwitch,expect(\"}\"),{type:Syntax.SwitchStatement,discriminant:discriminant,cases:cases}}function parseThrowStatement(){var argument;return expectKeyword(\"throw\"),peekLineTerminator()&&throwError({},Messages.NewlineAfterThrow),argument=parseExpression(),consumeSemicolon(),{type:Syntax.ThrowStatement,argument:argument}}function parseCatchClause(){var param;return expectKeyword(\"catch\"),expect(\"(\"),match(\")\")||(param=parseExpression(),strict&¶m.type===Syntax.Identifier&&isRestrictedWord(param.name)&&throwErrorTolerant({},Messages.StrictCatchVariable)),expect(\")\"),{type:Syntax.CatchClause,param:param,body:parseBlock()}}function parseTryStatement(){var block,handlers=[],finalizer=null;return expectKeyword(\"try\"),block=parseBlock(),matchKeyword(\"catch\")&&handlers.push(parseCatchClause()),matchKeyword(\"finally\")&&(lex(),finalizer=parseBlock()),0!==handlers.length||finalizer||throwError({},Messages.NoCatchOrFinally),{type:Syntax.TryStatement,block:block,guardedHandlers:[],handlers:handlers,finalizer:finalizer}}function parseDebuggerStatement(){return expectKeyword(\"debugger\"),consumeSemicolon(),{type:Syntax.DebuggerStatement}}function parseStatement(){var expr,labeledBody,token=lookahead();if(token.type===Token.EOF&&throwUnexpected(token),token.type===Token.Punctuator)switch(token.value){case\";\":return parseEmptyStatement();case\"{\":return parseBlock();case\"(\":return parseExpressionStatement();default:}if(token.type===Token.Keyword)switch(token.value){case\"break\":return parseBreakStatement();case\"continue\":return parseContinueStatement();case\"debugger\":return parseDebuggerStatement();case\"do\":return parseDoWhileStatement();case\"for\":return parseForStatement();case\"function\":return parseFunctionDeclaration();case\"if\":return parseIfStatement();case\"return\":return parseReturnStatement();case\"switch\":return parseSwitchStatement();case\"throw\":return parseThrowStatement();case\"try\":return parseTryStatement();case\"var\":return parseVariableStatement();case\"while\":return parseWhileStatement();case\"with\":return parseWithStatement();default:}return expr=parseExpression(),expr.type===Syntax.Identifier&&match(\":\")?(lex(),Object.prototype.hasOwnProperty.call(state.labelSet,expr.name)&&throwError({},Messages.Redeclaration,\"Label\",expr.name),state.labelSet[expr.name]=!0,labeledBody=parseStatement(),delete state.labelSet[expr.name],{type:Syntax.LabeledStatement,label:expr,body:labeledBody}):(consumeSemicolon(),{type:Syntax.ExpressionStatement,expression:expr})}function parseFunctionSourceElements(){var sourceElement,token,directive,firstRestricted,oldLabelSet,oldInIteration,oldInSwitch,oldInFunctionBody,sourceElements=[];for(expect(\"{\");length>index&&(token=lookahead(),token.type===Token.StringLiteral)&&(sourceElement=parseSourceElement(),sourceElements.push(sourceElement),sourceElement.expression.type===Syntax.Literal);)directive=sliceSource(token.range[0]+1,token.range[1]-1),\"use strict\"===directive?(strict=!0,firstRestricted&&throwErrorTolerant(firstRestricted,Messages.StrictOctalLiteral)):!firstRestricted&&token.octal&&(firstRestricted=token);for(oldLabelSet=state.labelSet,oldInIteration=state.inIteration,oldInSwitch=state.inSwitch,oldInFunctionBody=state.inFunctionBody,state.labelSet={},state.inIteration=!1,state.inSwitch=!1,state.inFunctionBody=!0;length>index&&!match(\"}\")&&(sourceElement=parseSourceElement(),void 0!==sourceElement);)sourceElements.push(sourceElement);return expect(\"}\"),state.labelSet=oldLabelSet,state.inIteration=oldInIteration,state.inSwitch=oldInSwitch,state.inFunctionBody=oldInFunctionBody,{type:Syntax.BlockStatement,body:sourceElements}}function parseFunctionDeclaration(){var id,param,body,token,stricted,firstRestricted,message,previousStrict,paramSet,params=[];if(expectKeyword(\"function\"),token=lookahead(),id=parseVariableIdentifier(),strict?isRestrictedWord(token.value)&&throwErrorTolerant(token,Messages.StrictFunctionName):isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictFunctionName):isStrictModeReservedWord(token.value)&&(firstRestricted=token,message=Messages.StrictReservedWord),expect(\"(\"),!match(\")\"))for(paramSet={};length>index&&(token=lookahead(),param=parseVariableIdentifier(),strict?(isRestrictedWord(token.value)&&(stricted=token,message=Messages.StrictParamName),Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(stricted=token,message=Messages.StrictParamDupe)):firstRestricted||(isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictParamName):isStrictModeReservedWord(token.value)?(firstRestricted=token,message=Messages.StrictReservedWord):Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(firstRestricted=token,message=Messages.StrictParamDupe)),params.push(param),paramSet[param.name]=!0,!match(\")\"));)expect(\",\");return expect(\")\"),previousStrict=strict,body=parseFunctionSourceElements(),strict&&firstRestricted&&throwError(firstRestricted,message),strict&&stricted&&throwErrorTolerant(stricted,message),strict=previousStrict,{type:Syntax.FunctionDeclaration,id:id,params:params,defaults:[],body:body,rest:null,generator:!1,expression:!1}}function parseFunctionExpression(){var token,stricted,firstRestricted,message,param,body,previousStrict,paramSet,id=null,params=[];if(expectKeyword(\"function\"),match(\"(\")||(token=lookahead(),id=parseVariableIdentifier(),strict?isRestrictedWord(token.value)&&throwErrorTolerant(token,Messages.StrictFunctionName):isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictFunctionName):isStrictModeReservedWord(token.value)&&(firstRestricted=token,message=Messages.StrictReservedWord)),expect(\"(\"),!match(\")\"))for(paramSet={};length>index&&(token=lookahead(),param=parseVariableIdentifier(),strict?(isRestrictedWord(token.value)&&(stricted=token,message=Messages.StrictParamName),Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(stricted=token,message=Messages.StrictParamDupe)):firstRestricted||(isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictParamName):isStrictModeReservedWord(token.value)?(firstRestricted=token,message=Messages.StrictReservedWord):Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(firstRestricted=token,message=Messages.StrictParamDupe)),params.push(param),paramSet[param.name]=!0,!match(\")\"));)expect(\",\");return expect(\")\"),previousStrict=strict,body=parseFunctionSourceElements(),strict&&firstRestricted&&throwError(firstRestricted,message),strict&&stricted&&throwErrorTolerant(stricted,message),strict=previousStrict,{type:Syntax.FunctionExpression,id:id,params:params,defaults:[],body:body,rest:null,generator:!1,expression:!1}}function parseSourceElement(){var token=lookahead();if(token.type===Token.Keyword)switch(token.value){case\"const\":case\"let\":return parseConstLetDeclaration(token.value);case\"function\":return parseFunctionDeclaration();default:return parseStatement()}return token.type!==Token.EOF?parseStatement():void 0}function parseSourceElements(){for(var sourceElement,token,directive,firstRestricted,sourceElements=[];length>index&&(token=lookahead(),token.type===Token.StringLiteral)&&(sourceElement=parseSourceElement(),sourceElements.push(sourceElement),sourceElement.expression.type===Syntax.Literal);)directive=sliceSource(token.range[0]+1,token.range[1]-1),\"use strict\"===directive?(strict=!0,firstRestricted&&throwErrorTolerant(firstRestricted,Messages.StrictOctalLiteral)):!firstRestricted&&token.octal&&(firstRestricted=token);for(;length>index&&(sourceElement=parseSourceElement(),void 0!==sourceElement);)sourceElements.push(sourceElement);return sourceElements}function parseProgram(){var program;return strict=!1,program={type:Syntax.Program,body:parseSourceElements()}}function addComment(type,value,start,end,loc){assert(\"number\"==typeof start,\"Comment must have valid position\"),extra.comments.length>0&&extra.comments[extra.comments.length-1].range[1]>start||extra.comments.push({type:type,value:value,range:[start,end],loc:loc})}function scanComment(){var comment,ch,loc,start,blockComment,lineComment;for(comment=\"\",blockComment=!1,lineComment=!1;length>index;)if(ch=source[index],lineComment)ch=source[index++],isLineTerminator(ch)?(loc.end={line:lineNumber,column:index-lineStart-1},lineComment=!1,addComment(\"Line\",comment,start,index-1,loc),\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index,comment=\"\"):index>=length?(lineComment=!1,comment+=ch,loc.end={line:lineNumber,column:length-lineStart},addComment(\"Line\",comment,start,length,loc)):comment+=ch;else if(blockComment)isLineTerminator(ch)?(\"\\r\"===ch&&\"\\n\"===source[index+1]?(++index,comment+=\"\\r\\n\"):comment+=ch,++lineNumber,++index,lineStart=index,index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")):(ch=source[index++],index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),comment+=ch,\"*\"===ch&&(ch=source[index],\"/\"===ch&&(comment=comment.substr(0,comment.length-1),blockComment=!1,++index,loc.end={line:lineNumber,column:index-lineStart},addComment(\"Block\",comment,start,index,loc),comment=\"\")));else if(\"/\"===ch)if(ch=source[index+1],\"/\"===ch)loc={start:{line:lineNumber,column:index-lineStart}},start=index,index+=2,lineComment=!0,index>=length&&(loc.end={line:lineNumber,column:index-lineStart},lineComment=!1,addComment(\"Line\",comment,start,index,loc));else{if(\"*\"!==ch)break;start=index,index+=2,blockComment=!0,loc={start:{line:lineNumber,column:index-lineStart-2}},index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")}else if(isWhiteSpace(ch))++index;else{if(!isLineTerminator(ch))break;++index,\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index}}function filterCommentLocation(){var i,entry,comment,comments=[];for(i=0;extra.comments.length>i;++i)entry=extra.comments[i],comment={type:entry.type,value:entry.value},extra.range&&(comment.range=entry.range),extra.loc&&(comment.loc=entry.loc),comments.push(comment);extra.comments=comments}function collectToken(){var start,loc,token,range,value;return skipComment(),start=index,loc={start:{line:lineNumber,column:index-lineStart}},token=extra.advance(),loc.end={line:lineNumber,column:index-lineStart},token.type!==Token.EOF&&(range=[token.range[0],token.range[1]],value=sliceSource(token.range[0],token.range[1]),extra.tokens.push({type:TokenName[token.type],value:value,range:range,loc:loc})),token}function collectRegex(){var pos,loc,regex,token;return skipComment(),pos=index,loc={start:{line:lineNumber,column:index-lineStart}},regex=extra.scanRegExp(),loc.end={line:lineNumber,column:index-lineStart},extra.tokens.length>0&&(token=extra.tokens[extra.tokens.length-1],token.range[0]===pos&&\"Punctuator\"===token.type&&(\"/\"===token.value||\"/=\"===token.value)&&extra.tokens.pop()),extra.tokens.push({type:\"RegularExpression\",value:regex.literal,range:[pos,index],loc:loc}),regex}function filterTokenLocation(){var i,entry,token,tokens=[];for(i=0;extra.tokens.length>i;++i)entry=extra.tokens[i],token={type:entry.type,value:entry.value},extra.range&&(token.range=entry.range),extra.loc&&(token.loc=entry.loc),tokens.push(token);extra.tokens=tokens}function createLiteral(token){return{type:Syntax.Literal,value:token.value}}function createRawLiteral(token){return{type:Syntax.Literal,value:token.value,raw:sliceSource(token.range[0],token.range[1])}}function createLocationMarker(){var marker={};return marker.range=[index,index],marker.loc={start:{line:lineNumber,column:index-lineStart},end:{line:lineNumber,column:index-lineStart}},marker.end=function(){this.range[1]=index,this.loc.end.line=lineNumber,this.loc.end.column=index-lineStart},marker.applyGroup=function(node){extra.range&&(node.groupRange=[this.range[0],this.range[1]]),extra.loc&&(node.groupLoc={start:{line:this.loc.start.line,column:this.loc.start.column},end:{line:this.loc.end.line,column:this.loc.end.column}})},marker.apply=function(node){extra.range&&(node.range=[this.range[0],this.range[1]]),extra.loc&&(node.loc={start:{line:this.loc.start.line,column:this.loc.start.column},end:{line:this.loc.end.line,column:this.loc.end.column}})},marker}function trackGroupExpression(){var marker,expr;return skipComment(),marker=createLocationMarker(),expect(\"(\"),expr=parseExpression(),expect(\")\"),marker.end(),marker.applyGroup(expr),expr}function trackLeftHandSideExpression(){var marker,expr;for(skipComment(),marker=createLocationMarker(),expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\");)match(\"[\")?(expr={type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()},marker.end(),marker.apply(expr)):(expr={type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()},marker.end(),marker.apply(expr));return expr}function trackLeftHandSideExpressionAllowCall(){var marker,expr;for(skipComment(),marker=createLocationMarker(),expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\")||match(\"(\");)match(\"(\")?(expr={type:Syntax.CallExpression,callee:expr,arguments:parseArguments()},marker.end(),marker.apply(expr)):match(\"[\")?(expr={type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()},marker.end(),marker.apply(expr)):(expr={type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()},marker.end(),marker.apply(expr));return expr}function filterGroup(node){var n,i,entry;n=\"[object Array]\"===Object.prototype.toString.apply(node)?[]:{};for(i in node)node.hasOwnProperty(i)&&\"groupRange\"!==i&&\"groupLoc\"!==i&&(entry=node[i],n[i]=null===entry||\"object\"!=typeof entry||entry instanceof RegExp?entry:filterGroup(entry));return n}function wrapTrackingFunction(range,loc){return function(parseFunction){function isBinary(node){return node.type===Syntax.LogicalExpression||node.type===Syntax.BinaryExpression}function visit(node){var start,end;isBinary(node.left)&&visit(node.left),isBinary(node.right)&&visit(node.right),range&&(node.left.groupRange||node.right.groupRange?(start=node.left.groupRange?node.left.groupRange[0]:node.left.range[0],end=node.right.groupRange?node.right.groupRange[1]:node.right.range[1],node.range=[start,end]):node.range===void 0&&(start=node.left.range[0],end=node.right.range[1],node.range=[start,end])),loc&&(node.left.groupLoc||node.right.groupLoc?(start=node.left.groupLoc?node.left.groupLoc.start:node.left.loc.start,end=node.right.groupLoc?node.right.groupLoc.end:node.right.loc.end,node.loc={start:start,end:end}):node.loc===void 0&&(node.loc={start:node.left.loc.start,end:node.right.loc.end}))}return function(){var marker,node;return skipComment(),marker=createLocationMarker(),node=parseFunction.apply(null,arguments),marker.end(),range&&node.range===void 0&&marker.apply(node),loc&&node.loc===void 0&&marker.apply(node),isBinary(node)&&visit(node),node}}}function patch(){var wrapTracking;extra.comments&&(extra.skipComment=skipComment,skipComment=scanComment),extra.raw&&(extra.createLiteral=createLiteral,createLiteral=createRawLiteral),(extra.range||extra.loc)&&(extra.parseGroupExpression=parseGroupExpression,extra.parseLeftHandSideExpression=parseLeftHandSideExpression,extra.parseLeftHandSideExpressionAllowCall=parseLeftHandSideExpressionAllowCall,parseGroupExpression=trackGroupExpression,parseLeftHandSideExpression=trackLeftHandSideExpression,parseLeftHandSideExpressionAllowCall=trackLeftHandSideExpressionAllowCall,wrapTracking=wrapTrackingFunction(extra.range,extra.loc),extra.parseAdditiveExpression=parseAdditiveExpression,extra.parseAssignmentExpression=parseAssignmentExpression,extra.parseBitwiseANDExpression=parseBitwiseANDExpression,extra.parseBitwiseORExpression=parseBitwiseORExpression,extra.parseBitwiseXORExpression=parseBitwiseXORExpression,extra.parseBlock=parseBlock,extra.parseFunctionSourceElements=parseFunctionSourceElements,extra.parseCatchClause=parseCatchClause,extra.parseComputedMember=parseComputedMember,extra.parseConditionalExpression=parseConditionalExpression,extra.parseConstLetDeclaration=parseConstLetDeclaration,extra.parseEqualityExpression=parseEqualityExpression,extra.parseExpression=parseExpression,extra.parseForVariableDeclaration=parseForVariableDeclaration,extra.parseFunctionDeclaration=parseFunctionDeclaration,extra.parseFunctionExpression=parseFunctionExpression,extra.parseLogicalANDExpression=parseLogicalANDExpression,extra.parseLogicalORExpression=parseLogicalORExpression,extra.parseMultiplicativeExpression=parseMultiplicativeExpression,extra.parseNewExpression=parseNewExpression,extra.parseNonComputedProperty=parseNonComputedProperty,extra.parseObjectProperty=parseObjectProperty,extra.parseObjectPropertyKey=parseObjectPropertyKey,extra.parsePostfixExpression=parsePostfixExpression,extra.parsePrimaryExpression=parsePrimaryExpression,extra.parseProgram=parseProgram,extra.parsePropertyFunction=parsePropertyFunction,extra.parseRelationalExpression=parseRelationalExpression,extra.parseStatement=parseStatement,extra.parseShiftExpression=parseShiftExpression,extra.parseSwitchCase=parseSwitchCase,extra.parseUnaryExpression=parseUnaryExpression,extra.parseVariableDeclaration=parseVariableDeclaration,extra.parseVariableIdentifier=parseVariableIdentifier,parseAdditiveExpression=wrapTracking(extra.parseAdditiveExpression),parseAssignmentExpression=wrapTracking(extra.parseAssignmentExpression),parseBitwiseANDExpression=wrapTracking(extra.parseBitwiseANDExpression),parseBitwiseORExpression=wrapTracking(extra.parseBitwiseORExpression),parseBitwiseXORExpression=wrapTracking(extra.parseBitwiseXORExpression),parseBlock=wrapTracking(extra.parseBlock),parseFunctionSourceElements=wrapTracking(extra.parseFunctionSourceElements),parseCatchClause=wrapTracking(extra.parseCatchClause),parseComputedMember=wrapTracking(extra.parseComputedMember),parseConditionalExpression=wrapTracking(extra.parseConditionalExpression),parseConstLetDeclaration=wrapTracking(extra.parseConstLetDeclaration),parseEqualityExpression=wrapTracking(extra.parseEqualityExpression),parseExpression=wrapTracking(extra.parseExpression),parseForVariableDeclaration=wrapTracking(extra.parseForVariableDeclaration),parseFunctionDeclaration=wrapTracking(extra.parseFunctionDeclaration),parseFunctionExpression=wrapTracking(extra.parseFunctionExpression),parseLeftHandSideExpression=wrapTracking(parseLeftHandSideExpression),parseLogicalANDExpression=wrapTracking(extra.parseLogicalANDExpression),parseLogicalORExpression=wrapTracking(extra.parseLogicalORExpression),parseMultiplicativeExpression=wrapTracking(extra.parseMultiplicativeExpression),parseNewExpression=wrapTracking(extra.parseNewExpression),parseNonComputedProperty=wrapTracking(extra.parseNonComputedProperty),parseObjectProperty=wrapTracking(extra.parseObjectProperty),parseObjectPropertyKey=wrapTracking(extra.parseObjectPropertyKey),parsePostfixExpression=wrapTracking(extra.parsePostfixExpression),parsePrimaryExpression=wrapTracking(extra.parsePrimaryExpression),parseProgram=wrapTracking(extra.parseProgram),parsePropertyFunction=wrapTracking(extra.parsePropertyFunction),parseRelationalExpression=wrapTracking(extra.parseRelationalExpression),parseStatement=wrapTracking(extra.parseStatement),parseShiftExpression=wrapTracking(extra.parseShiftExpression),parseSwitchCase=wrapTracking(extra.parseSwitchCase),parseUnaryExpression=wrapTracking(extra.parseUnaryExpression),parseVariableDeclaration=wrapTracking(extra.parseVariableDeclaration),parseVariableIdentifier=wrapTracking(extra.parseVariableIdentifier)),extra.tokens!==void 0&&(extra.advance=advance,extra.scanRegExp=scanRegExp,advance=collectToken,scanRegExp=collectRegex)}function unpatch(){\"function\"==typeof extra.skipComment&&(skipComment=extra.skipComment),extra.raw&&(createLiteral=extra.createLiteral),(extra.range||extra.loc)&&(parseAdditiveExpression=extra.parseAdditiveExpression,parseAssignmentExpression=extra.parseAssignmentExpression,parseBitwiseANDExpression=extra.parseBitwiseANDExpression,parseBitwiseORExpression=extra.parseBitwiseORExpression,parseBitwiseXORExpression=extra.parseBitwiseXORExpression,parseBlock=extra.parseBlock,parseFunctionSourceElements=extra.parseFunctionSourceElements,parseCatchClause=extra.parseCatchClause,parseComputedMember=extra.parseComputedMember,parseConditionalExpression=extra.parseConditionalExpression,parseConstLetDeclaration=extra.parseConstLetDeclaration,parseEqualityExpression=extra.parseEqualityExpression,parseExpression=extra.parseExpression,parseForVariableDeclaration=extra.parseForVariableDeclaration,parseFunctionDeclaration=extra.parseFunctionDeclaration,parseFunctionExpression=extra.parseFunctionExpression,parseGroupExpression=extra.parseGroupExpression,parseLeftHandSideExpression=extra.parseLeftHandSideExpression,parseLeftHandSideExpressionAllowCall=extra.parseLeftHandSideExpressionAllowCall,parseLogicalANDExpression=extra.parseLogicalANDExpression,parseLogicalORExpression=extra.parseLogicalORExpression,parseMultiplicativeExpression=extra.parseMultiplicativeExpression,parseNewExpression=extra.parseNewExpression,parseNonComputedProperty=extra.parseNonComputedProperty,parseObjectProperty=extra.parseObjectProperty,parseObjectPropertyKey=extra.parseObjectPropertyKey,parsePrimaryExpression=extra.parsePrimaryExpression,parsePostfixExpression=extra.parsePostfixExpression,parseProgram=extra.parseProgram,parsePropertyFunction=extra.parsePropertyFunction,parseRelationalExpression=extra.parseRelationalExpression,parseStatement=extra.parseStatement,parseShiftExpression=extra.parseShiftExpression,parseSwitchCase=extra.parseSwitchCase,parseUnaryExpression=extra.parseUnaryExpression,parseVariableDeclaration=extra.parseVariableDeclaration,parseVariableIdentifier=extra.parseVariableIdentifier),\"function\"==typeof extra.scanRegExp&&(advance=extra.advance,scanRegExp=extra.scanRegExp)}function stringToArray(str){var i,length=str.length,result=[];for(i=0;length>i;++i)result[i]=str.charAt(i);return result}function parse(code,options){var program,toString;\ntoString=String,\"string\"==typeof code||code instanceof String||(code=toString(code)),source=code,index=0,lineNumber=source.length>0?1:0,lineStart=0,length=source.length,buffer=null,state={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1},extra={},options!==void 0&&(extra.range=\"boolean\"==typeof options.range&&options.range,extra.loc=\"boolean\"==typeof options.loc&&options.loc,extra.raw=\"boolean\"==typeof options.raw&&options.raw,\"boolean\"==typeof options.tokens&&options.tokens&&(extra.tokens=[]),\"boolean\"==typeof options.comment&&options.comment&&(extra.comments=[]),\"boolean\"==typeof options.tolerant&&options.tolerant&&(extra.errors=[])),length>0&&source[0]===void 0&&(code instanceof String&&(source=code.valueOf()),source[0]===void 0&&(source=stringToArray(code))),patch();try{program=parseProgram(),extra.comments!==void 0&&(filterCommentLocation(),program.comments=extra.comments),extra.tokens!==void 0&&(filterTokenLocation(),program.tokens=extra.tokens),extra.errors!==void 0&&(program.errors=extra.errors),(extra.range||extra.loc)&&(program.body=filterGroup(program.body))}catch(e){throw e}finally{unpatch(),extra={}}return program}var Token,TokenName,Syntax,PropertyKind,Messages,Regex,source,strict,index,lineNumber,lineStart,length,buffer,state,extra;Token={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8},TokenName={},TokenName[Token.BooleanLiteral]=\"Boolean\",TokenName[Token.EOF]=\"\u003Cend>\",TokenName[Token.Identifier]=\"Identifier\",TokenName[Token.Keyword]=\"Keyword\",TokenName[Token.NullLiteral]=\"Null\",TokenName[Token.NumericLiteral]=\"Numeric\",TokenName[Token.Punctuator]=\"Punctuator\",TokenName[Token.StringLiteral]=\"String\",Syntax={AssignmentExpression:\"AssignmentExpression\",ArrayExpression:\"ArrayExpression\",BlockStatement:\"BlockStatement\",BinaryExpression:\"BinaryExpression\",BreakStatement:\"BreakStatement\",CallExpression:\"CallExpression\",CatchClause:\"CatchClause\",ConditionalExpression:\"ConditionalExpression\",ContinueStatement:\"ContinueStatement\",DoWhileStatement:\"DoWhileStatement\",DebuggerStatement:\"DebuggerStatement\",EmptyStatement:\"EmptyStatement\",ExpressionStatement:\"ExpressionStatement\",ForStatement:\"ForStatement\",ForInStatement:\"ForInStatement\",FunctionDeclaration:\"FunctionDeclaration\",FunctionExpression:\"FunctionExpression\",Identifier:\"Identifier\",IfStatement:\"IfStatement\",Literal:\"Literal\",LabeledStatement:\"LabeledStatement\",LogicalExpression:\"LogicalExpression\",MemberExpression:\"MemberExpression\",NewExpression:\"NewExpression\",ObjectExpression:\"ObjectExpression\",Program:\"Program\",Property:\"Property\",ReturnStatement:\"ReturnStatement\",SequenceExpression:\"SequenceExpression\",SwitchStatement:\"SwitchStatement\",SwitchCase:\"SwitchCase\",ThisExpression:\"ThisExpression\",ThrowStatement:\"ThrowStatement\",TryStatement:\"TryStatement\",UnaryExpression:\"UnaryExpression\",UpdateExpression:\"UpdateExpression\",VariableDeclaration:\"VariableDeclaration\",VariableDeclarator:\"VariableDeclarator\",WhileStatement:\"WhileStatement\",WithStatement:\"WithStatement\"},PropertyKind={Data:1,Get:2,Set:4},Messages={UnexpectedToken:\"Unexpected token %0\",UnexpectedNumber:\"Unexpected number\",UnexpectedString:\"Unexpected string\",UnexpectedIdentifier:\"Unexpected identifier\",UnexpectedReserved:\"Unexpected reserved word\",UnexpectedEOS:\"Unexpected end of input\",NewlineAfterThrow:\"Illegal newline after throw\",InvalidRegExp:\"Invalid regular expression\",UnterminatedRegExp:\"Invalid regular expression: missing /\",InvalidLHSInAssignment:\"Invalid left-hand side in assignment\",InvalidLHSInForIn:\"Invalid left-hand side in for-in\",MultipleDefaultsInSwitch:\"More than one default clause in switch statement\",NoCatchOrFinally:\"Missing catch or finally after try\",UnknownLabel:\"Undefined label '%0'\",Redeclaration:\"%0 '%1' has already been declared\",IllegalContinue:\"Illegal continue statement\",IllegalBreak:\"Illegal break statement\",IllegalReturn:\"Illegal return statement\",StrictModeWith:\"Strict mode code may not include a with statement\",StrictCatchVariable:\"Catch variable may not be eval or arguments in strict mode\",StrictVarName:\"Variable name may not be eval or arguments in strict mode\",StrictParamName:\"Parameter name eval or arguments is not allowed in strict mode\",StrictParamDupe:\"Strict mode function may not have duplicate parameter names\",StrictFunctionName:\"Function name may not be eval or arguments in strict mode\",StrictOctalLiteral:\"Octal literals are not allowed in strict mode.\",StrictDelete:\"Delete of an unqualified identifier in strict mode.\",StrictDuplicateProperty:\"Duplicate data property in object literal not allowed in strict mode\",AccessorDataProperty:\"Object literal may not have data and accessor property with the same name\",AccessorGetSet:\"Object literal may not have multiple get/set accessors with the same name\",StrictLHSAssignment:\"Assignment to eval or arguments is not allowed in strict mode\",StrictLHSPostfix:\"Postfix increment/decrement may not have eval or arguments operand in strict mode\",StrictLHSPrefix:\"Prefix increment/decrement may not have eval or arguments operand in strict mode\",StrictReservedWord:\"Use of future reserved word in strict mode\"},Regex={NonAsciiIdentifierStart:RegExp(\"[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]\"),NonAsciiIdentifierPart:RegExp(\"[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]\")},\"esprima\"[0]===void 0&&(sliceSource=function(from,to){return source.slice(from,to).join(\"\")}),exports.version=\"1.0.2\",exports.parse=parse,exports.Syntax=function(){var name,types={};\"function\"==typeof Object.create&&(types=Object.create(null));for(name in Syntax)Syntax.hasOwnProperty(name)&&(types[name]=Syntax[name]);return\"function\"==typeof Object.freeze&&Object.freeze(types),types}()})})()},{}],63:[function(require,module){function isFunction(obj){return\"[object Function]\"==toString.call(obj)}var fs=require(\"fs\"),highlight=require(\"./highlight\");module.exports=function(fullPath,opts,cb){isFunction(opts)&&(cb=opts),fs.readFile(fullPath,\"utf-8\",function(err,code){if(err)return cb(err);try{cb(null,highlight(code,opts))}catch(e){cb(e)}})}},{fs:74,\"./highlight\":62}],64:[function(require,module){var fs=require(\"fs\"),highlight=require(\"./highlight\");module.exports=function(fullPath,opts){var code=fs.readFileSync(fullPath,\"utf-8\");return highlight(code,opts)}},{fs:74,\"./highlight\":62}],29:[function(require,module){\"use strict\";function fix(line,hideStrict){var fixed=line;if(commaFirstAssignment.test(line)){var idx=line.indexOf(\",\");fixed=\"var\"+fixed.slice(0,idx).trim()+\" \"+fixed.slice(idx+1).trim()}return hideStrict&&useStrict.test(line)&&(fixed=nonStrict+line),fixed}function unfix(code,hideStrict){return hideStrict&&(code=code.replace(nonStrict,\"\")),code}var parse=require(\"esprima\").parse,commaFirstAssignment=/^[\\t ]*,[\\t ]*\\S+[\\t ]*=[\\t ]*\\S+/,useStrict=/^ *['\"]use strict['\"][; ]*$/,nonStrict=\"// *** non strict snippetify fix +++***+++&&&\",snippetify=module.exports=function(script,opts){function nextChunk(code,raw){var line=(0===code.length,lines[lineno]),fixed=fix(line,opts.nonstrict);raw=line+raw,code=fixed+code;try{var ast=parse(code,opts);return code=unfix(code,opts.nonstrict),{code:code,raw:raw,ast:ast}}catch(e){if(-1===--lineno){var err=Error(\"unable to snippetify \"+code);throw err.inner=e,err}return nextChunk(\"\\n\"+code,\"\\n\"+raw)}}opts=opts||{};var snippets=[],lines=script.split(\"\\n\");if(!lines.length)return[];for(var lineno=lines.length;--lineno>-1;){var snippetEnd=lineno+1,snippet=nextChunk(\"\",\"\"),snippetStart=lineno+1;snippets.unshift({start:snippetStart,end:snippetEnd,code:snippet.code,raw:snippet.raw,ast:snippet.ast})}return snippets},code=\"function foo() {\\n\\\"use strict\\\";\\n var o = { a: 1, a: 2 };\\n}\\n\\n;function bar() {\\n'use strict';\\n var o = { a: 1, a: 2 };\\n}\";snippetify(code,{nonstrict:!0})},{esprima:70}],75:[function(require,module,exports){exports.readIEEE754=function(buffer,offset,isBE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,nBits=-7,i=isBE?0:nBytes-1,d=isBE?1:-1,s=buffer[offset+i];for(i+=d,e=s&(1\u003C\u003C-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1\u003C\u003C-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?0/0:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.writeIEEE754=function(buffer,value,offset,isBE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isBE?nBytes-1:0,d=isBE?-1:1,s=0>value||0===value&&0>1/value?1:0;for(value=Math.abs(value),isNaN(value)||1/0===value?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),1>value*(c=Math.pow(2,-e))&&(e--,c*=2),value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias),value*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e\u003C\u003CmLen|m,eLen+=mLen;eLen>0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s}},{}],76:[function(require,module){var colorNums={white:37,black:30,blue:34,cyan:36,green:32,magenta:35,red:31,yellow:33,brightBlack:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97},colors={};Object.keys(colorNums).forEach(function(k){colors[k]=\"\u001b[\"+colorNums[k]+\"m:\u001b[39m\"}),module.exports=colors},{}],77:[function(require,module){require=function(e,t,n,r){function i(r){if(!n[r]){if(!t[r]){if(e)return e(r);throw Error(\"Cannot find module '\"+r+\"'\")}var s=n[r]={exports:{}};t[r][0](function(e){var n=t[r][1][e];return i(n?n:e)},s,s.exports)}return n[r].exports}for(var s=0;r.length>s;s++)i(r[s]);return i}(require!==void 0&&require,{1:[function(require,module,exports){exports.readIEEE754=function(buffer,offset,isBE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,nBits=-7,i=isBE?0:nBytes-1,d=isBE?1:-1,s=buffer[offset+i];for(i+=d,e=s&(1\u003C\u003C-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1\u003C\u003C-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?0/0:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.writeIEEE754=function(buffer,value,offset,isBE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isBE?nBytes-1:0,d=isBE?-1:1,s=0>value||0===value&&0>1/value?1:0;for(value=Math.abs(value),isNaN(value)||1/0===value?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),1>value*(c=Math.pow(2,-e))&&(e--,c*=2),value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias),value*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e\u003C\u003CmLen|m,eLen+=mLen;eLen>0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s}},{}],2:[function(require,module){(function(){function objectKeys(object){if(Object.keys)return Object.keys(object);var result=[];for(var name in object)Object.prototype.hasOwnProperty.call(object,name)&&result.push(name);return result}function replacer(key,value){return void 0===value?\"\"+value:\"number\"!=typeof value||!isNaN(value)&&isFinite(value)?\"function\"==typeof value||value instanceof RegExp?\"\"+value:value:\"\"+value}function truncate(s,n){return\"string\"==typeof s?n>s.length?s:s.slice(0,n):s}function fail(actual,expected,message,operator,stackStartFunction){throw new assert.AssertionError({message:message,actual:actual,expected:expected,operator:operator,stackStartFunction:stackStartFunction})}function ok(value,message){value||fail(value,!0,message,\"==\",assert.ok)}function _deepEqual(actual,expected){if(actual===expected)return!0;if(Buffer.isBuffer(actual)&&Buffer.isBuffer(expected)){if(actual.length!=expected.length)return!1;for(var i=0;actual.length>i;i++)if(actual[i]!==expected[i])return!1;return!0}return actual instanceof Date&&expected instanceof Date?actual.getTime()===expected.getTime():\"object\"!=typeof actual&&\"object\"!=typeof expected?actual==expected:objEquiv(actual,expected)}function isUndefinedOrNull(value){return null===value||void 0===value}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function objEquiv(a,b){if(isUndefinedOrNull(a)||isUndefinedOrNull(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),_deepEqual(a,b)):!1;try{var key,i,ka=objectKeys(a),kb=objectKeys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!_deepEqual(a[key],b[key]))return!1;return!0}function expectedException(actual,expected){return actual&&expected?expected instanceof RegExp?expected.test(actual):actual instanceof expected?!0:expected.call({},actual)===!0?!0:!1:!1}function _throws(shouldThrow,block,expected,message){var actual;\"string\"==typeof expected&&(message=expected,expected=null);try{block()}catch(e){actual=e}if(message=(expected&&expected.name?\" (\"+expected.name+\").\":\".\")+(message?\" \"+message:\".\"),shouldThrow&&!actual&&fail(\"Missing expected exception\"+message),!shouldThrow&&expectedException(actual,expected)&&fail(\"Got unwanted exception\"+message),shouldThrow&&actual&&expected&&!expectedException(actual,expected)||!shouldThrow&&actual)throw actual}var util=require(\"util\"),Buffer=require(\"buffer\").Buffer,pSlice=Array.prototype.slice,assert=module.exports=ok;assert.AssertionError=function(options){this.name=\"AssertionError\",this.message=options.message,this.actual=options.actual,this.expected=options.expected,this.operator=options.operator;var stackStartFunction=options.stackStartFunction||fail;Error.captureStackTrace&&Error.captureStackTrace(this,stackStartFunction)},util.inherits(assert.AssertionError,Error),assert.AssertionError.prototype.toString=function(){return this.message?[this.name+\":\",this.message].join(\" \"):[this.name+\":\",truncate(JSON.stringify(this.actual,replacer),128),this.operator,truncate(JSON.stringify(this.expected,replacer),128)].join(\" \")},assert.AssertionError.__proto__=Error.prototype,assert.fail=fail,assert.ok=ok,assert.equal=function(actual,expected,message){actual!=expected&&fail(actual,expected,message,\"==\",assert.equal)},assert.notEqual=function(actual,expected,message){actual==expected&&fail(actual,expected,message,\"!=\",assert.notEqual)},assert.deepEqual=function(actual,expected,message){_deepEqual(actual,expected)||fail(actual,expected,message,\"deepEqual\",assert.deepEqual)},assert.notDeepEqual=function(actual,expected,message){_deepEqual(actual,expected)&&fail(actual,expected,message,\"notDeepEqual\",assert.notDeepEqual)},assert.strictEqual=function(actual,expected,message){actual!==expected&&fail(actual,expected,message,\"===\",assert.strictEqual)},assert.notStrictEqual=function(actual,expected,message){actual===expected&&fail(actual,expected,message,\"!==\",assert.notStrictEqual)},assert.throws=function(){_throws.apply(this,[!0].concat(pSlice.call(arguments)))},assert.doesNotThrow=function(){_throws.apply(this,[!1].concat(pSlice.call(arguments)))},assert.ifError=function(err){if(err)throw err}})()},{util:3,buffer:4}],\"buffer-browserify\":[function(require,module){module.exports=require(\"q9TxCC\")},{}],q9TxCC:[function(require,module,exports){(function(){function SlowBuffer(size){this.length=size}function toHex(n){return 16>n?\"0\"+n.toString(16):n.toString(16)}function utf8ToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)if(127>=str.charCodeAt(i))byteArray.push(str.charCodeAt(i));else for(var h=encodeURIComponent(str.charAt(i)).substr(1).split(\"%\"),j=0;h.length>j;j++)byteArray.push(parseInt(h[j],16));return byteArray}function asciiToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)byteArray.push(255&str.charCodeAt(i));return byteArray}function base64ToBytes(str){return require(\"base64-js\").toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;length>i&&!(i+offset>=dst.length||i>=src.length);)dst[i+offset]=src[i],i++;return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function coerce(length){return length=~~Math.ceil(+length),0>length?0:length}function Buffer(subject,encoding,offset){if(!(this instanceof Buffer))return new Buffer(subject,encoding,offset);var type;if(\"number\"==typeof offset)this.length=coerce(encoding),this.parent=subject,this.offset=offset;else{switch(type=typeof subject){case\"number\":this.length=coerce(subject);break;case\"string\":this.length=Buffer.byteLength(subject,encoding);break;case\"object\":this.length=coerce(subject.length);break;default:throw Error(\"First argument needs to be a number, array or string.\")}if(this.length>Buffer.poolSize?(this.parent=new SlowBuffer(this.length),this.offset=0):((!pool||pool.length-pool.used\u003Cthis.length)&&allocPool(),this.parent=pool,this.offset=pool.used,pool.used+=this.length),isArrayIsh(subject))for(var i=0;this.length>i;i++)this.parent[i+this.offset]=subject instanceof Buffer?subject.readUInt8(i):subject[i];else\"string\"==type&&(this.length=this.write(subject,0,encoding))}}function isArrayIsh(subject){return Array.isArray(subject)||Buffer.isBuffer(subject)||subject&&\"object\"==typeof subject&&\"number\"==typeof subject.length}function allocPool(){pool=new SlowBuffer(Buffer.poolSize),pool.used=0}function readUInt16(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(val=buffer.parent[buffer.offset+offset]\u003C\u003C8,buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1])):(val=buffer.parent[buffer.offset+offset],buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8)),val)}function readUInt32(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(buffer.length>offset+1&&(val=buffer.parent[buffer.offset+offset+1]\u003C\u003C16),buffer.length>offset+2&&(val|=buffer.parent[buffer.offset+offset+2]\u003C\u003C8),buffer.length>offset+3&&(val|=buffer.parent[buffer.offset+offset+3]),val+=buffer.parent[buffer.offset+offset]\u003C\u003C24>>>0):(buffer.length>offset+2&&(val=buffer.parent[buffer.offset+offset+2]\u003C\u003C16),buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8),val|=buffer.parent[buffer.offset+offset],buffer.length>offset+3&&(val+=buffer.parent[buffer.offset+offset+3]\u003C\u003C24>>>0)),val)}function readInt16(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),val=readUInt16(buffer,offset,isBigEndian,noAssert),neg=32768&val,neg?-1*(65535-val+1):val}function readInt32(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),val=readUInt32(buffer,offset,isBigEndian,noAssert),neg=2147483648&val,neg?-1*(4294967295-val+1):val}function readFloat(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,23,4)}function readDouble(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+7,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,52,8)}function verifuint(value,max){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(value>=0,\"specified a negative value for writing an unsigned value\"),assert.ok(max>=value,\"value is larger than maximum value for type\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function writeUInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"trying to write beyond buffer length\"),verifuint(value,65535));for(var i=0;Math.min(buffer.length-offset,2)>i;i++)buffer.parent[buffer.offset+offset+i]=(value&255\u003C\u003C8*(isBigEndian?1-i:i))>>>8*(isBigEndian?1-i:i)}function writeUInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"trying to write beyond buffer length\"),verifuint(value,4294967295));for(var i=0;Math.min(buffer.length-offset,4)>i;i++)buffer.parent[buffer.offset+offset+i]=255&value>>>8*(isBigEndian?3-i:i)}function verifsint(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function verifIEEE754(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\")}function writeInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to write beyond buffer length\"),verifsint(value,32767,-32768)),value>=0?writeUInt16(buffer,value,offset,isBigEndian,noAssert):writeUInt16(buffer,65535+value+1,offset,isBigEndian,noAssert)}function writeInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifsint(value,2147483647,-2147483648)),value>=0?writeUInt32(buffer,value,offset,isBigEndian,noAssert):writeUInt32(buffer,4294967295+value+1,offset,isBigEndian,noAssert)}function writeFloat(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,23,4)}function writeDouble(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+7,\"Trying to write beyond buffer length\"),verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,52,8)}var assert=require(\"assert\");exports.INSPECT_MAX_BYTES=50,SlowBuffer.byteLength=function(str,encoding){switch(encoding||\"utf8\"){case\"hex\":return str.length/2;case\"utf8\":case\"utf-8\":return utf8ToBytes(str).length;case\"ascii\":case\"binary\":return str.length;case\"base64\":return base64ToBytes(str).length;default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.utf8Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(utf8ToBytes(string),this,offset,length)},SlowBuffer.prototype.asciiWrite=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(asciiToBytes(string),this,offset,length)},SlowBuffer.prototype.binaryWrite=SlowBuffer.prototype.asciiWrite,SlowBuffer.prototype.base64Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(base64ToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Slice=function(){var bytes=Array.prototype.slice.apply(this,arguments);return require(\"base64-js\").fromByteArray(bytes)},SlowBuffer.prototype.utf8Slice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),res=\"\",tmp=\"\",i=0;bytes.length>i;)127>=bytes[i]?(res+=decodeUtf8Char(tmp)+String.fromCharCode(bytes[i]),tmp=\"\"):tmp+=\"%\"+bytes[i].toString(16),i++;return res+decodeUtf8Char(tmp)},SlowBuffer.prototype.asciiSlice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),ret=\"\",i=0;bytes.length>i;i++)ret+=String.fromCharCode(bytes[i]);return ret},SlowBuffer.prototype.binarySlice=SlowBuffer.prototype.asciiSlice,SlowBuffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this[i]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CSlowBuffer \"+out.join(\" \")+\">\"},SlowBuffer.prototype.hexSlice=function(start,end){var len=this.length;(!start||0>start)&&(start=0),(!end||0>end||end>len)&&(end=len);for(var out=\"\",i=start;end>i;i++)out+=toHex(this[i]);return out},SlowBuffer.prototype.toString=function(encoding,start,end){if(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start=+start||0,end===void 0&&(end=this.length),+end==start)return\"\";switch(encoding){case\"hex\":return this.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.utf8Slice(start,end);case\"ascii\":return this.asciiSlice(start,end);case\"binary\":return this.binarySlice(start,end);case\"base64\":return this.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.hexWrite=function(string,offset,length){offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining;var strLen=string.length;if(strLen%2)throw Error(\"Invalid hex string\");length>strLen/2&&(length=strLen/2);for(var i=0;length>i;i++){var byte=parseInt(string.substr(2*i,2),16);if(isNaN(byte))throw Error(\"Invalid hex string\");this[offset+i]=byte}return SlowBuffer._charsWritten=2*i,i},SlowBuffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;switch(length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase()){case\"hex\":return this.hexWrite(string,offset,length);case\"utf8\":case\"utf-8\":return this.utf8Write(string,offset,length);case\"ascii\":return this.asciiWrite(string,offset,length);case\"binary\":return this.binaryWrite(string,offset,length);case\"base64\":return this.base64Write(string,offset,length);case\"ucs2\":case\"ucs-2\":return this.ucs2Write(string,offset,length);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this,end-start,+start)},SlowBuffer.prototype.copy=function(target,targetstart,sourcestart,sourceend){for(var temp=[],i=sourcestart;sourceend>i;i++)assert.ok(this[i]!==void 0,\"copying undefined buffer bytes!\"),temp.push(this[i]);for(var i=targetstart;targetstart+temp.length>i;i++)target[i]=temp[i-targetstart]},SlowBuffer.prototype.fill=function(value,start,end){if(end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");for(var i=start;end>i;i++)this[i]=value},exports.SlowBuffer=SlowBuffer,exports.Buffer=Buffer,Buffer.poolSize=8192;var pool;Buffer.isBuffer=function(b){return b instanceof Buffer||b instanceof SlowBuffer},Buffer.concat=function(list,totalLength){if(!Array.isArray(list))throw Error(\"Usage: Buffer.concat(list, [totalLength])\\n list should be an Array.\");if(0===list.length)return new Buffer(0);if(1===list.length)return list[0];if(\"number\"!=typeof totalLength){totalLength=0;for(var i=0;list.length>i;i++){var buf=list[i];totalLength+=buf.length}}for(var buffer=new Buffer(totalLength),pos=0,i=0;list.length>i;i++){var buf=list[i];buf.copy(buffer,pos),pos+=buf.length}return buffer},Buffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this.parent[i+this.offset]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CBuffer \"+out.join(\" \")+\">\"},Buffer.prototype.get=function(i){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]},Buffer.prototype.set=function(i,v){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]=v},Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase();var ret;switch(encoding){case\"hex\":ret=this.parent.hexWrite(string,this.offset+offset,length);break;\ncase\"utf8\":case\"utf-8\":ret=this.parent.utf8Write(string,this.offset+offset,length);break;case\"ascii\":ret=this.parent.asciiWrite(string,this.offset+offset,length);break;case\"binary\":ret=this.parent.binaryWrite(string,this.offset+offset,length);break;case\"base64\":ret=this.parent.base64Write(string,this.offset+offset,length);break;case\"ucs2\":case\"ucs-2\":ret=this.parent.ucs2Write(string,this.offset+offset,length);break;default:throw Error(\"Unknown encoding\")}return Buffer._charsWritten=SlowBuffer._charsWritten,ret},Buffer.prototype.toString=function(encoding,start,end){switch(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start===void 0||0>start?start=0:start>this.length&&(start=this.length),end===void 0||end>this.length?end=this.length:0>end&&(end=0),start+=this.offset,end+=this.offset,encoding){case\"hex\":return this.parent.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.parent.utf8Slice(start,end);case\"ascii\":return this.parent.asciiSlice(start,end);case\"binary\":return this.parent.binarySlice(start,end);case\"base64\":return this.parent.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.parent.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},Buffer.byteLength=SlowBuffer.byteLength,Buffer.prototype.fill=function(value,start,end){if(value||(value=0),start||(start=0),end||(end=this.length),\"string\"==typeof value&&(value=value.charCodeAt(0)),\"number\"!=typeof value||isNaN(value))throw Error(\"value is not a number\");if(start>end)throw Error(\"end \u003C start\");if(end===start)return 0;if(0==this.length)return 0;if(0>start||start>=this.length)throw Error(\"start out of bounds\");if(0>end||end>this.length)throw Error(\"end out of bounds\");return this.parent.fill(value,start+this.offset,end+this.offset)},Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(start||(start=0),end||(end=this.length),target_start||(target_start=0),start>end)throw Error(\"sourceEnd \u003C sourceStart\");if(end===start)return 0;if(0==target.length||0==source.length)return 0;if(0>target_start||target_start>=target.length)throw Error(\"targetStart out of bounds\");if(0>start||start>=source.length)throw Error(\"sourceStart out of bounds\");if(0>end||end>source.length)throw Error(\"sourceEnd out of bounds\");return end>this.length&&(end=this.length),end-start>target.length-target_start&&(end=target.length-target_start+start),this.parent.copy(target.parent,target_start+target.offset,start+this.offset,end+this.offset)},Buffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this.parent,end-start,+start+this.offset)},Buffer.prototype.utf8Slice=function(start,end){return this.toString(\"utf8\",start,end)},Buffer.prototype.binarySlice=function(start,end){return this.toString(\"binary\",start,end)},Buffer.prototype.asciiSlice=function(start,end){return this.toString(\"ascii\",start,end)},Buffer.prototype.utf8Write=function(string,offset){return this.write(string,offset,\"utf8\")},Buffer.prototype.binaryWrite=function(string,offset){return this.write(string,offset,\"binary\")},Buffer.prototype.asciiWrite=function(string,offset){return this.write(string,offset,\"ascii\")},Buffer.prototype.readUInt8=function(offset,noAssert){var buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:buffer.parent[buffer.offset+offset]},Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,!1,noAssert)},Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,!0,noAssert)},Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,!1,noAssert)},Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,!0,noAssert)},Buffer.prototype.readInt8=function(offset,noAssert){var neg,buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:(neg=128&buffer.parent[buffer.offset+offset],neg?-1*(255-buffer.parent[buffer.offset+offset]+1):buffer.parent[buffer.offset+offset])},Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,!1,noAssert)},Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,!0,noAssert)},Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,!1,noAssert)},Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,!0,noAssert)},Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,!1,noAssert)},Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,!0,noAssert)},Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,!1,noAssert)},Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,!0,noAssert)},Buffer.prototype.writeUInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"trying to write beyond buffer length\"),verifuint(value,255)),buffer.length>offset&&(buffer.parent[buffer.offset+offset]=value)},Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){writeUInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){writeUInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){writeUInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){writeUInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to write beyond buffer length\"),verifsint(value,127,-128)),value>=0?buffer.writeUInt8(value,offset,noAssert):buffer.writeUInt8(255+value+1,offset,noAssert)},Buffer.prototype.writeInt16LE=function(value,offset,noAssert){writeInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt16BE=function(value,offset,noAssert){writeInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt32LE=function(value,offset,noAssert){writeInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt32BE=function(value,offset,noAssert){writeInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeFloatLE=function(value,offset,noAssert){writeFloat(this,value,offset,!1,noAssert)},Buffer.prototype.writeFloatBE=function(value,offset,noAssert){writeFloat(this,value,offset,!0,noAssert)},Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){writeDouble(this,value,offset,!1,noAssert)},Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){writeDouble(this,value,offset,!0,noAssert)},SlowBuffer.prototype.readUInt8=Buffer.prototype.readUInt8,SlowBuffer.prototype.readUInt16LE=Buffer.prototype.readUInt16LE,SlowBuffer.prototype.readUInt16BE=Buffer.prototype.readUInt16BE,SlowBuffer.prototype.readUInt32LE=Buffer.prototype.readUInt32LE,SlowBuffer.prototype.readUInt32BE=Buffer.prototype.readUInt32BE,SlowBuffer.prototype.readInt8=Buffer.prototype.readInt8,SlowBuffer.prototype.readInt16LE=Buffer.prototype.readInt16LE,SlowBuffer.prototype.readInt16BE=Buffer.prototype.readInt16BE,SlowBuffer.prototype.readInt32LE=Buffer.prototype.readInt32LE,SlowBuffer.prototype.readInt32BE=Buffer.prototype.readInt32BE,SlowBuffer.prototype.readFloatLE=Buffer.prototype.readFloatLE,SlowBuffer.prototype.readFloatBE=Buffer.prototype.readFloatBE,SlowBuffer.prototype.readDoubleLE=Buffer.prototype.readDoubleLE,SlowBuffer.prototype.readDoubleBE=Buffer.prototype.readDoubleBE,SlowBuffer.prototype.writeUInt8=Buffer.prototype.writeUInt8,SlowBuffer.prototype.writeUInt16LE=Buffer.prototype.writeUInt16LE,SlowBuffer.prototype.writeUInt16BE=Buffer.prototype.writeUInt16BE,SlowBuffer.prototype.writeUInt32LE=Buffer.prototype.writeUInt32LE,SlowBuffer.prototype.writeUInt32BE=Buffer.prototype.writeUInt32BE,SlowBuffer.prototype.writeInt8=Buffer.prototype.writeInt8,SlowBuffer.prototype.writeInt16LE=Buffer.prototype.writeInt16LE,SlowBuffer.prototype.writeInt16BE=Buffer.prototype.writeInt16BE,SlowBuffer.prototype.writeInt32LE=Buffer.prototype.writeInt32LE,SlowBuffer.prototype.writeInt32BE=Buffer.prototype.writeInt32BE,SlowBuffer.prototype.writeFloatLE=Buffer.prototype.writeFloatLE,SlowBuffer.prototype.writeFloatBE=Buffer.prototype.writeFloatBE,SlowBuffer.prototype.writeDoubleLE=Buffer.prototype.writeDoubleLE,SlowBuffer.prototype.writeDoubleBE=Buffer.prototype.writeDoubleBE})()},{assert:2,\"./buffer_ieee754\":1,\"base64-js\":5}],3:[function(require,module,exports){function isArray(ar){return ar instanceof Array||Array.isArray(ar)||ar&&ar!==Object.prototype&&isArray(ar.__proto__)}function isRegExp(re){return re instanceof RegExp||\"object\"==typeof re&&\"[object RegExp]\"===Object.prototype.toString.call(re)}function isDate(d){if(d instanceof Date)return!0;if(\"object\"!=typeof d)return!1;var properties=Date.prototype&&Object_getOwnPropertyNames(Date.prototype),proto=d.__proto__&&Object_getOwnPropertyNames(d.__proto__);return JSON.stringify(proto)===JSON.stringify(properties)}require(\"events\"),exports.isArray=isArray,exports.isDate=function(obj){return\"[object Date]\"===Object.prototype.toString.call(obj)},exports.isRegExp=function(obj){return\"[object RegExp]\"===Object.prototype.toString.call(obj)},exports.print=function(){},exports.puts=function(){},exports.debug=function(){},exports.inspect=function(obj,showHidden,depth,colors){function format(value,recurseTimes){if(value&&\"function\"==typeof value.inspect&&value!==exports&&(!value.constructor||value.constructor.prototype!==value))return value.inspect(recurseTimes);switch(typeof value){case\"undefined\":return stylize(\"undefined\",\"undefined\");case\"string\":var simple=\"'\"+JSON.stringify(value).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return stylize(simple,\"string\");case\"number\":return stylize(\"\"+value,\"number\");case\"boolean\":return stylize(\"\"+value,\"boolean\")}if(null===value)return stylize(\"null\",\"null\");var visible_keys=Object_keys(value),keys=showHidden?Object_getOwnPropertyNames(value):visible_keys;if(\"function\"==typeof value&&0===keys.length){if(isRegExp(value))return stylize(\"\"+value,\"regexp\");var name=value.name?\": \"+value.name:\"\";return stylize(\"[Function\"+name+\"]\",\"special\")}if(isDate(value)&&0===keys.length)return stylize(value.toUTCString(),\"date\");var base,type,braces;if(isArray(value)?(type=\"Array\",braces=[\"[\",\"]\"]):(type=\"Object\",braces=[\"{\",\"}\"]),\"function\"==typeof value){var n=value.name?\": \"+value.name:\"\";base=isRegExp(value)?\" \"+value:\" [Function\"+n+\"]\"}else base=\"\";if(isDate(value)&&(base=\" \"+value.toUTCString()),0===keys.length)return braces[0]+base+braces[1];if(0>recurseTimes)return isRegExp(value)?stylize(\"\"+value,\"regexp\"):stylize(\"[Object]\",\"special\");seen.push(value);var output=keys.map(function(key){var name,str;if(value.__lookupGetter__&&(value.__lookupGetter__(key)?str=value.__lookupSetter__(key)?stylize(\"[Getter/Setter]\",\"special\"):stylize(\"[Getter]\",\"special\"):value.__lookupSetter__(key)&&(str=stylize(\"[Setter]\",\"special\"))),0>visible_keys.indexOf(key)&&(name=\"[\"+key+\"]\"),str||(0>seen.indexOf(value[key])?(str=null===recurseTimes?format(value[key]):format(value[key],recurseTimes-1),str.indexOf(\"\\n\")>-1&&(str=isArray(value)?str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\").substr(2):\"\\n\"+str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\"))):str=stylize(\"[Circular]\",\"special\")),name===void 0){if(\"Array\"===type&&key.match(/^\\d+$/))return str;name=JSON.stringify(\"\"+key),name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(name=name.substr(1,name.length-2),name=stylize(name,\"name\")):(name=name.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),name=stylize(name,\"string\"))}return name+\": \"+str});seen.pop();var numLinesEst=0,length=output.reduce(function(prev,cur){return numLinesEst++,cur.indexOf(\"\\n\")>=0&&numLinesEst++,prev+cur.length+1},0);return output=length>50?braces[0]+(\"\"===base?\"\":base+\"\\n \")+\" \"+output.join(\",\\n \")+\" \"+braces[1]:braces[0]+base+\" \"+output.join(\", \")+\" \"+braces[1]}var seen=[],stylize=function(str,styleType){var styles={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},style={special:\"cyan\",number:\"blue\",\"boolean\":\"yellow\",undefined:\"grey\",\"null\":\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"}[styleType];return style?\"\u001b[\"+styles[style][0]+\"m\"+str+\"\u001b[\"+styles[style][1]+\"m\":str};return colors||(stylize=function(str){return str}),format(obj,depth===void 0?2:depth)},exports.log=function(){},exports.pump=null;var Object_keys=Object.keys||function(obj){var res=[];for(var key in obj)res.push(key);return res},Object_getOwnPropertyNames=Object.getOwnPropertyNames||function(obj){var res=[];for(var key in obj)Object.hasOwnProperty.call(obj,key)&&res.push(key);return res},Object_create=Object.create||function(prototype,properties){var object;if(null===prototype)object={__proto__:null};else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return properties!==void 0&&Object.defineProperties&&Object.defineProperties(object,properties),object};exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object_create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})};var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(\"string\"!=typeof f){for(var objects=[],i=0;arguments.length>i;i++)objects.push(exports.inspect(arguments[i]));return objects.join(\" \")}for(var i=1,args=arguments,len=args.length,str=(f+\"\").replace(formatRegExp,function(x){if(\"%%\"===x)return\"%\";if(i>=len)return x;switch(x){case\"%s\":return args[i++]+\"\";case\"%d\":return Number(args[i++]);case\"%j\":return JSON.stringify(args[i++]);default:return x}}),x=args[i];len>i;x=args[++i])str+=null===x||\"object\"!=typeof x?\" \"+x:\" \"+exports.inspect(x);return str}},{events:6}],5:[function(require,module){(function(){\"use strict\";function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0)throw\"Invalid string. Length must be a multiple of 4\";for(placeHolders=b64.indexOf(\"=\"),placeHolders=placeHolders>0?b64.length-placeHolders:0,arr=[],l=placeHolders>0?b64.length-4:b64.length,i=0,j=0;l>i;i+=4,j+=3)tmp=lookup.indexOf(b64[i])\u003C\u003C18|lookup.indexOf(b64[i+1])\u003C\u003C12|lookup.indexOf(b64[i+2])\u003C\u003C6|lookup.indexOf(b64[i+3]),arr.push((16711680&tmp)>>16),arr.push((65280&tmp)>>8),arr.push(255&tmp);return 2===placeHolders?(tmp=lookup.indexOf(b64[i])\u003C\u003C2|lookup.indexOf(b64[i+1])>>4,arr.push(255&tmp)):1===placeHolders&&(tmp=lookup.indexOf(b64[i])\u003C\u003C10|lookup.indexOf(b64[i+1])\u003C\u003C4|lookup.indexOf(b64[i+2])>>2,arr.push(255&tmp>>8),arr.push(255&tmp)),arr}function uint8ToBase64(uint8){function tripletToBase64(num){return lookup[63&num>>18]+lookup[63&num>>12]+lookup[63&num>>6]+lookup[63&num]}var i,temp,length,extraBytes=uint8.length%3,output=\"\";for(i=0,length=uint8.length-extraBytes;length>i;i+=3)temp=(uint8[i]\u003C\u003C16)+(uint8[i+1]\u003C\u003C8)+uint8[i+2],output+=tripletToBase64(temp);switch(extraBytes){case 1:temp=uint8[uint8.length-1],output+=lookup[temp>>2],output+=lookup[63&temp\u003C\u003C4],output+=\"==\";break;case 2:temp=(uint8[uint8.length-2]\u003C\u003C8)+uint8[uint8.length-1],output+=lookup[temp>>10],output+=lookup[63&temp>>4],output+=lookup[63&temp\u003C\u003C2],output+=\"=\"}return output}var lookup=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";module.exports.toByteArray=b64ToByteArray,module.exports.fromByteArray=uint8ToBase64})()},{}],7:[function(require,module,exports){exports.readIEEE754=function(buffer,offset,isBE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,nBits=-7,i=isBE?0:nBytes-1,d=isBE?1:-1,s=buffer[offset+i];for(i+=d,e=s&(1\u003C\u003C-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1\u003C\u003C-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?0/0:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.writeIEEE754=function(buffer,value,offset,isBE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isBE?nBytes-1:0,d=isBE?-1:1,s=0>value||0===value&&0>1/value?1:0;for(value=Math.abs(value),isNaN(value)||1/0===value?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),1>value*(c=Math.pow(2,-e))&&(e--,c*=2),value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias),value*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e\u003C\u003CmLen|m,eLen+=mLen;eLen>0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s}},{}],8:[function(require,module){var process=module.exports={};process.nextTick=function(){var canSetImmediate=\"undefined\"!=typeof window&&window.setImmediate,canPost=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(canSetImmediate)return function(f){return window.setImmediate(f)};if(canPost){var queue=[];return window.addEventListener(\"message\",function(ev){if(ev.source===window&&\"process-tick\"===ev.data&&(ev.stopPropagation(),queue.length>0)){var fn=queue.shift();fn()}},!0),function(fn){queue.push(fn),window.postMessage(\"process-tick\",\"*\")}}return function(fn){setTimeout(fn,0)}}(),process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.binding=function(){throw Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(){throw Error(\"process.chdir is not supported\")}},{}],6:[function(require,module,exports){(function(process){function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0;xs.length>i;i++)if(x===xs[i])return i;return-1}process.EventEmitter||(process.EventEmitter=function(){});var EventEmitter=exports.EventEmitter=process.EventEmitter,isArray=\"function\"==typeof Array.isArray?Array.isArray:function(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){this._events||(this._events={}),this._events.maxListeners=n},EventEmitter.prototype.emit=function(type){if(\"error\"===type&&(!this._events||!this._events.error||isArray(this._events.error)&&!this._events.error.length))throw arguments[1]instanceof Error?arguments[1]:Error(\"Uncaught, unspecified 'error' event.\");if(!this._events)return!1;var handler=this._events[type];if(!handler)return!1;if(\"function\"==typeof handler){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:var args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}return!0}if(isArray(handler)){for(var args=Array.prototype.slice.call(arguments,1),listeners=handler.slice(),i=0,l=listeners.length;l>i;i++)listeners[i].apply(this,args);return!0}return!1},EventEmitter.prototype.addListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"addListener only takes instances of Function\");if(this._events||(this._events={}),this.emit(\"newListener\",type,listener),this._events[type])if(isArray(this._events[type])){if(!this._events[type].warned){var m;m=void 0!==this._events.maxListeners?this._events.maxListeners:defaultMaxListeners,m&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[type].length),console.trace())}this._events[type].push(listener)}else this._events[type]=[this._events[type],listener];else this._events[type]=listener;return this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){var self=this;return self.on(type,function g(){self.removeListener(type,g),listener.apply(this,arguments)}),this},EventEmitter.prototype.removeListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"removeListener only takes instances of Function\");if(!this._events||!this._events[type])return this;var list=this._events[type];if(isArray(list)){var i=indexOf(list,listener);if(0>i)return this;list.splice(i,1),0==list.length&&delete this._events[type]}else this._events[type]===listener&&delete this._events[type];return this},EventEmitter.prototype.removeAllListeners=function(type){return 0===arguments.length?(this._events={},this):(type&&this._events&&this._events[type]&&(this._events[type]=null),this)},EventEmitter.prototype.listeners=function(type){return this._events||(this._events={}),this._events[type]||(this._events[type]=[]),isArray(this._events[type])||(this._events[type]=[this._events[type]]),this._events[type]}})(require(\"__browserify_process\"))},{__browserify_process:8}],4:[function(require,module,exports){(function(){function SlowBuffer(size){this.length=size}function toHex(n){return 16>n?\"0\"+n.toString(16):n.toString(16)}function utf8ToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)if(127>=str.charCodeAt(i))byteArray.push(str.charCodeAt(i));else for(var h=encodeURIComponent(str.charAt(i)).substr(1).split(\"%\"),j=0;h.length>j;j++)byteArray.push(parseInt(h[j],16));return byteArray}function asciiToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)byteArray.push(255&str.charCodeAt(i));return byteArray}function base64ToBytes(str){return require(\"base64-js\").toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;length>i&&!(i+offset>=dst.length||i>=src.length);)dst[i+offset]=src[i],i++;return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function coerce(length){return length=~~Math.ceil(+length),0>length?0:length}function Buffer(subject,encoding,offset){if(!(this instanceof Buffer))return new Buffer(subject,encoding,offset);var type;if(\"number\"==typeof offset)this.length=coerce(encoding),this.parent=subject,this.offset=offset;else{switch(type=typeof subject){case\"number\":this.length=coerce(subject);break;case\"string\":this.length=Buffer.byteLength(subject,encoding);break;case\"object\":this.length=coerce(subject.length);break;default:throw Error(\"First argument needs to be a number, array or string.\")}if(this.length>Buffer.poolSize?(this.parent=new SlowBuffer(this.length),this.offset=0):((!pool||pool.length-pool.used\u003Cthis.length)&&allocPool(),this.parent=pool,this.offset=pool.used,pool.used+=this.length),isArrayIsh(subject))for(var i=0;this.length>i;i++)this.parent[i+this.offset]=subject[i];else\"string\"==type&&(this.length=this.write(subject,0,encoding))}}function isArrayIsh(subject){return Array.isArray(subject)||Buffer.isBuffer(subject)||subject&&\"object\"==typeof subject&&\"number\"==typeof subject.length}function allocPool(){pool=new SlowBuffer(Buffer.poolSize),pool.used=0}function readUInt16(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),isBigEndian?(val=buffer.parent[buffer.offset+offset]\u003C\u003C8,val|=buffer.parent[buffer.offset+offset+1]):(val=buffer.parent[buffer.offset+offset],val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8),val}function readUInt32(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),isBigEndian?(val=buffer.parent[buffer.offset+offset+1]\u003C\u003C16,val|=buffer.parent[buffer.offset+offset+2]\u003C\u003C8,val|=buffer.parent[buffer.offset+offset+3],val+=buffer.parent[buffer.offset+offset]\u003C\u003C24>>>0):(val=buffer.parent[buffer.offset+offset+2]\u003C\u003C16,val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8,val|=buffer.parent[buffer.offset+offset],val+=buffer.parent[buffer.offset+offset+3]\u003C\u003C24>>>0),val}function readInt16(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),val=readUInt16(buffer,offset,isBigEndian,noAssert),neg=32768&val,neg?-1*(65535-val+1):val}function readInt32(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),val=readUInt32(buffer,offset,isBigEndian,noAssert),neg=2147483648&val,neg?-1*(4294967295-val+1):val}function readFloat(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,23,4)}function readDouble(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+7,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,52,8)}function verifuint(value,max){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(value>=0,\"specified a negative value for writing an unsigned value\"),assert.ok(max>=value,\"value is larger than maximum value for type\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function writeUInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"trying to write beyond buffer length\"),verifuint(value,65535)),isBigEndian?(buffer.parent[buffer.offset+offset]=(65280&value)>>>8,buffer.parent[buffer.offset+offset+1]=255&value):(buffer.parent[buffer.offset+offset+1]=(65280&value)>>>8,buffer.parent[buffer.offset+offset]=255&value)}function writeUInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"trying to write beyond buffer length\"),verifuint(value,4294967295)),isBigEndian?(buffer.parent[buffer.offset+offset]=255&value>>>24,buffer.parent[buffer.offset+offset+1]=255&value>>>16,buffer.parent[buffer.offset+offset+2]=255&value>>>8,buffer.parent[buffer.offset+offset+3]=255&value):(buffer.parent[buffer.offset+offset+3]=255&value>>>24,buffer.parent[buffer.offset+offset+2]=255&value>>>16,buffer.parent[buffer.offset+offset+1]=255&value>>>8,buffer.parent[buffer.offset+offset]=255&value)}function verifsint(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function verifIEEE754(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\")}function writeInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to write beyond buffer length\"),verifsint(value,32767,-32768)),value>=0?writeUInt16(buffer,value,offset,isBigEndian,noAssert):writeUInt16(buffer,65535+value+1,offset,isBigEndian,noAssert)}function writeInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifsint(value,2147483647,-2147483648)),value>=0?writeUInt32(buffer,value,offset,isBigEndian,noAssert):writeUInt32(buffer,4294967295+value+1,offset,isBigEndian,noAssert)}function writeFloat(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,23,4)}function writeDouble(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+7,\"Trying to write beyond buffer length\"),verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,52,8)}var assert=require(\"assert\");exports.INSPECT_MAX_BYTES=50,SlowBuffer.byteLength=function(str,encoding){switch(encoding||\"utf8\"){case\"hex\":return str.length/2;case\"utf8\":case\"utf-8\":return utf8ToBytes(str).length;case\"ascii\":return str.length;case\"base64\":return base64ToBytes(str).length;default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.utf8Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(utf8ToBytes(string),this,offset,length)},SlowBuffer.prototype.asciiWrite=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(asciiToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(base64ToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Slice=function(){var bytes=Array.prototype.slice.apply(this,arguments);return require(\"base64-js\").fromByteArray(bytes)},SlowBuffer.prototype.utf8Slice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),res=\"\",tmp=\"\",i=0;bytes.length>i;)127>=bytes[i]?(res+=decodeUtf8Char(tmp)+String.fromCharCode(bytes[i]),tmp=\"\"):tmp+=\"%\"+bytes[i].toString(16),i++;return res+decodeUtf8Char(tmp)},SlowBuffer.prototype.asciiSlice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),ret=\"\",i=0;bytes.length>i;i++)ret+=String.fromCharCode(bytes[i]);return ret},SlowBuffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this[i]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CSlowBuffer \"+out.join(\" \")+\">\"},SlowBuffer.prototype.hexSlice=function(start,end){var len=this.length;(!start||0>start)&&(start=0),(!end||0>end||end>len)&&(end=len);for(var out=\"\",i=start;end>i;i++)out+=toHex(this[i]);return out},SlowBuffer.prototype.toString=function(encoding,start,end){if(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start=+start||0,end===void 0&&(end=this.length),+end==start)return\"\";\nswitch(encoding){case\"hex\":return this.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.utf8Slice(start,end);case\"ascii\":return this.asciiSlice(start,end);case\"binary\":return this.binarySlice(start,end);case\"base64\":return this.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.hexWrite=function(string,offset,length){offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining;var strLen=string.length;if(strLen%2)throw Error(\"Invalid hex string\");length>strLen/2&&(length=strLen/2);for(var i=0;length>i;i++){var byte=parseInt(string.substr(2*i,2),16);if(isNaN(byte))throw Error(\"Invalid hex string\");this[offset+i]=byte}return SlowBuffer._charsWritten=2*i,i},SlowBuffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;switch(length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase()){case\"hex\":return this.hexWrite(string,offset,length);case\"utf8\":case\"utf-8\":return this.utf8Write(string,offset,length);case\"ascii\":return this.asciiWrite(string,offset,length);case\"binary\":return this.binaryWrite(string,offset,length);case\"base64\":return this.base64Write(string,offset,length);case\"ucs2\":case\"ucs-2\":return this.ucs2Write(string,offset,length);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this,end-start,+start)},SlowBuffer.prototype.copy=function(target,targetstart,sourcestart,sourceend){for(var temp=[],i=sourcestart;sourceend>i;i++)assert.ok(this[i]!==void 0,\"copying undefined buffer bytes!\"),temp.push(this[i]);for(var i=targetstart;targetstart+temp.length>i;i++)target[i]=temp[i-targetstart]},exports.SlowBuffer=SlowBuffer,exports.Buffer=Buffer,Buffer.poolSize=8192;var pool;Buffer.isBuffer=function(b){return b instanceof Buffer||b instanceof SlowBuffer},Buffer.concat=function(list,totalLength){if(!Array.isArray(list))throw Error(\"Usage: Buffer.concat(list, [totalLength])\\n list should be an Array.\");if(0===list.length)return new Buffer(0);if(1===list.length)return list[0];if(\"number\"!=typeof totalLength){totalLength=0;for(var i=0;list.length>i;i++){var buf=list[i];totalLength+=buf.length}}for(var buffer=new Buffer(totalLength),pos=0,i=0;list.length>i;i++){var buf=list[i];buf.copy(buffer,pos),pos+=buf.length}return buffer},Buffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this.parent[i+this.offset]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CBuffer \"+out.join(\" \")+\">\"},Buffer.prototype.get=function(i){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]},Buffer.prototype.set=function(i,v){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]=v},Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase();var ret;switch(encoding){case\"hex\":ret=this.parent.hexWrite(string,this.offset+offset,length);break;case\"utf8\":case\"utf-8\":ret=this.parent.utf8Write(string,this.offset+offset,length);break;case\"ascii\":ret=this.parent.asciiWrite(string,this.offset+offset,length);break;case\"binary\":ret=this.parent.binaryWrite(string,this.offset+offset,length);break;case\"base64\":ret=this.parent.base64Write(string,this.offset+offset,length);break;case\"ucs2\":case\"ucs-2\":ret=this.parent.ucs2Write(string,this.offset+offset,length);break;default:throw Error(\"Unknown encoding\")}return Buffer._charsWritten=SlowBuffer._charsWritten,ret},Buffer.prototype.toString=function(encoding,start,end){switch(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start===void 0||0>start?start=0:start>this.length&&(start=this.length),end===void 0||end>this.length?end=this.length:0>end&&(end=0),start+=this.offset,end+=this.offset,encoding){case\"hex\":return this.parent.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.parent.utf8Slice(start,end);case\"ascii\":return this.parent.asciiSlice(start,end);case\"binary\":return this.parent.binarySlice(start,end);case\"base64\":return this.parent.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.parent.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},Buffer.byteLength=SlowBuffer.byteLength,Buffer.prototype.fill=function(value,start,end){if(value||(value=0),start||(start=0),end||(end=this.length),\"string\"==typeof value&&(value=value.charCodeAt(0)),\"number\"!=typeof value||isNaN(value))throw Error(\"value is not a number\");if(start>end)throw Error(\"end \u003C start\");if(end===start)return 0;if(0==this.length)return 0;if(0>start||start>=this.length)throw Error(\"start out of bounds\");if(0>end||end>this.length)throw Error(\"end out of bounds\");return this.parent.fill(value,start+this.offset,end+this.offset)},Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(start||(start=0),end||(end=this.length),target_start||(target_start=0),start>end)throw Error(\"sourceEnd \u003C sourceStart\");if(end===start)return 0;if(0==target.length||0==source.length)return 0;if(0>target_start||target_start>=target.length)throw Error(\"targetStart out of bounds\");if(0>start||start>=source.length)throw Error(\"sourceStart out of bounds\");if(0>end||end>source.length)throw Error(\"sourceEnd out of bounds\");return end>this.length&&(end=this.length),end-start>target.length-target_start&&(end=target.length-target_start+start),this.parent.copy(target.parent,target_start+target.offset,start+this.offset,end+this.offset)},Buffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this.parent,end-start,+start+this.offset)},Buffer.prototype.utf8Slice=function(start,end){return this.toString(\"utf8\",start,end)},Buffer.prototype.binarySlice=function(start,end){return this.toString(\"binary\",start,end)},Buffer.prototype.asciiSlice=function(start,end){return this.toString(\"ascii\",start,end)},Buffer.prototype.utf8Write=function(string,offset){return this.write(string,offset,\"utf8\")},Buffer.prototype.binaryWrite=function(string,offset){return this.write(string,offset,\"binary\")},Buffer.prototype.asciiWrite=function(string,offset){return this.write(string,offset,\"ascii\")},Buffer.prototype.readUInt8=function(offset,noAssert){var buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),buffer.parent[buffer.offset+offset]},Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,!1,noAssert)},Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,!0,noAssert)},Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,!1,noAssert)},Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,!0,noAssert)},Buffer.prototype.readInt8=function(offset,noAssert){var neg,buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),neg=128&buffer.parent[buffer.offset+offset],neg?-1*(255-buffer.parent[buffer.offset+offset]+1):buffer.parent[buffer.offset+offset]},Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,!1,noAssert)},Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,!0,noAssert)},Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,!1,noAssert)},Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,!0,noAssert)},Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,!1,noAssert)},Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,!0,noAssert)},Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,!1,noAssert)},Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,!0,noAssert)},Buffer.prototype.writeUInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"trying to write beyond buffer length\"),verifuint(value,255)),buffer.parent[buffer.offset+offset]=value},Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){writeUInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){writeUInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){writeUInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){writeUInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to write beyond buffer length\"),verifsint(value,127,-128)),value>=0?buffer.writeUInt8(value,offset,noAssert):buffer.writeUInt8(255+value+1,offset,noAssert)},Buffer.prototype.writeInt16LE=function(value,offset,noAssert){writeInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt16BE=function(value,offset,noAssert){writeInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt32LE=function(value,offset,noAssert){writeInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt32BE=function(value,offset,noAssert){writeInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeFloatLE=function(value,offset,noAssert){writeFloat(this,value,offset,!1,noAssert)},Buffer.prototype.writeFloatBE=function(value,offset,noAssert){writeFloat(this,value,offset,!0,noAssert)},Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){writeDouble(this,value,offset,!1,noAssert)},Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){writeDouble(this,value,offset,!0,noAssert)},SlowBuffer.prototype.readUInt8=Buffer.prototype.readUInt8,SlowBuffer.prototype.readUInt16LE=Buffer.prototype.readUInt16LE,SlowBuffer.prototype.readUInt16BE=Buffer.prototype.readUInt16BE,SlowBuffer.prototype.readUInt32LE=Buffer.prototype.readUInt32LE,SlowBuffer.prototype.readUInt32BE=Buffer.prototype.readUInt32BE,SlowBuffer.prototype.readInt8=Buffer.prototype.readInt8,SlowBuffer.prototype.readInt16LE=Buffer.prototype.readInt16LE,SlowBuffer.prototype.readInt16BE=Buffer.prototype.readInt16BE,SlowBuffer.prototype.readInt32LE=Buffer.prototype.readInt32LE,SlowBuffer.prototype.readInt32BE=Buffer.prototype.readInt32BE,SlowBuffer.prototype.readFloatLE=Buffer.prototype.readFloatLE,SlowBuffer.prototype.readFloatBE=Buffer.prototype.readFloatBE,SlowBuffer.prototype.readDoubleLE=Buffer.prototype.readDoubleLE,SlowBuffer.prototype.readDoubleBE=Buffer.prototype.readDoubleBE,SlowBuffer.prototype.writeUInt8=Buffer.prototype.writeUInt8,SlowBuffer.prototype.writeUInt16LE=Buffer.prototype.writeUInt16LE,SlowBuffer.prototype.writeUInt16BE=Buffer.prototype.writeUInt16BE,SlowBuffer.prototype.writeUInt32LE=Buffer.prototype.writeUInt32LE,SlowBuffer.prototype.writeUInt32BE=Buffer.prototype.writeUInt32BE,SlowBuffer.prototype.writeInt8=Buffer.prototype.writeInt8,SlowBuffer.prototype.writeInt16LE=Buffer.prototype.writeInt16LE,SlowBuffer.prototype.writeInt16BE=Buffer.prototype.writeInt16BE,SlowBuffer.prototype.writeInt32LE=Buffer.prototype.writeInt32LE,SlowBuffer.prototype.writeInt32BE=Buffer.prototype.writeInt32BE,SlowBuffer.prototype.writeFloatLE=Buffer.prototype.writeFloatLE,SlowBuffer.prototype.writeFloatBE=Buffer.prototype.writeFloatBE,SlowBuffer.prototype.writeDoubleLE=Buffer.prototype.writeDoubleLE,SlowBuffer.prototype.writeDoubleBE=Buffer.prototype.writeDoubleBE})()},{assert:2,\"./buffer_ieee754\":7,\"base64-js\":9}],9:[function(require,module){(function(){\"use strict\";function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0)throw\"Invalid string. Length must be a multiple of 4\";for(placeHolders=b64.indexOf(\"=\"),placeHolders=placeHolders>0?b64.length-placeHolders:0,arr=[],l=placeHolders>0?b64.length-4:b64.length,i=0,j=0;l>i;i+=4,j+=3)tmp=lookup.indexOf(b64[i])\u003C\u003C18|lookup.indexOf(b64[i+1])\u003C\u003C12|lookup.indexOf(b64[i+2])\u003C\u003C6|lookup.indexOf(b64[i+3]),arr.push((16711680&tmp)>>16),arr.push((65280&tmp)>>8),arr.push(255&tmp);return 2===placeHolders?(tmp=lookup.indexOf(b64[i])\u003C\u003C2|lookup.indexOf(b64[i+1])>>4,arr.push(255&tmp)):1===placeHolders&&(tmp=lookup.indexOf(b64[i])\u003C\u003C10|lookup.indexOf(b64[i+1])\u003C\u003C4|lookup.indexOf(b64[i+2])>>2,arr.push(255&tmp>>8),arr.push(255&tmp)),arr}function uint8ToBase64(uint8){function tripletToBase64(num){return lookup[63&num>>18]+lookup[63&num>>12]+lookup[63&num>>6]+lookup[63&num]}var i,temp,length,extraBytes=uint8.length%3,output=\"\";for(i=0,length=uint8.length-extraBytes;length>i;i+=3)temp=(uint8[i]\u003C\u003C16)+(uint8[i+1]\u003C\u003C8)+uint8[i+2],output+=tripletToBase64(temp);switch(extraBytes){case 1:temp=uint8[uint8.length-1],output+=lookup[temp>>2],output+=lookup[63&temp\u003C\u003C4],output+=\"==\";break;case 2:temp=(uint8[uint8.length-2]\u003C\u003C8)+uint8[uint8.length-1],output+=lookup[temp>>10],output+=lookup[63&temp>>4],output+=lookup[63&temp\u003C\u003C2],output+=\"=\"}return output}var lookup=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";module.exports.toByteArray=b64ToByteArray,module.exports.fromByteArray=uint8ToBase64})()},{}]},{},[]),module.exports=require(\"buffer-browserify\")},{}],67:[function(require,module){(function(Buffer){function clone(parent,circular){function _clone(parent,context,child,cIndex){var i;if(\"object\"==typeof parent){if(null==parent)return parent;for(i in circularParent)if(circularParent[i]===parent)return circularReplace.push({resolveTo:i,child:child,i:cIndex}),null;if(circularParent[context]=parent,util.isArray(parent)){child=[];for(i in parent)child[i]=_clone(parent[i],context+\"[\"+i+\"]\",child,i)}else if(util.isDate(parent))child=new Date(parent.getTime());else if(util.isRegExp(parent))child=RegExp(parent.source);else if(useBuffer&&Buffer.isBuffer(parent))child=new Buffer(parent.length),parent.copy(child);else{child={},child.__proto__=parent.__proto__;for(i in parent)child[i]=_clone(parent[i],context+\"[\"+i+\"]\",child,i)}circularResolved[context]=child}else child=parent;return child}circular===void 0&&(circular=!0);var i,useBuffer=Buffer!==void 0;if(circular){var circularParent={},circularResolved={},circularReplace=[],cloned=_clone(parent,\"*\");for(i in circularReplace){var c=circularReplace[i];c&&c.child&&c.i in c.child&&(c.child[c.i]=circularResolved[c.resolveTo])}return cloned}var child;if(\"object\"==typeof parent){if(null==parent)return parent;if(\"Array\"===parent.constructor.name){child=[];for(i in parent)child[i]=clone(parent[i],circular)}else if(util.isDate(parent))child=new Date(parent.getTime());else if(util.isRegExp(parent))child=RegExp(parent.source);else{child={},child.__proto__=parent.__proto__;for(i in parent)child[i]=clone(parent[i],circular)}}else child=parent;return child}var util=require(\"util\");module.exports=clone,clone.clonePrototype=require(\"./clonePrototype.js\")})(require(\"__browserify_buffer\").Buffer)},{util:6,\"./clonePrototype.js\":78,__browserify_buffer:77}],71:[function(require,module,exports){(function(){function SlowBuffer(size){this.length=size}function toHex(n){return 16>n?\"0\"+n.toString(16):n.toString(16)}function utf8ToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)if(127>=str.charCodeAt(i))byteArray.push(str.charCodeAt(i));else for(var h=encodeURIComponent(str.charAt(i)).substr(1).split(\"%\"),j=0;h.length>j;j++)byteArray.push(parseInt(h[j],16));return byteArray}function asciiToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)byteArray.push(255&str.charCodeAt(i));return byteArray}function base64ToBytes(str){return require(\"base64-js\").toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;length>i&&!(i+offset>=dst.length||i>=src.length);)dst[i+offset]=src[i],i++;return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function coerce(length){return length=~~Math.ceil(+length),0>length?0:length}function Buffer(subject,encoding,offset){if(!(this instanceof Buffer))return new Buffer(subject,encoding,offset);var type;if(\"number\"==typeof offset)this.length=coerce(encoding),this.parent=subject,this.offset=offset;else{switch(type=typeof subject){case\"number\":this.length=coerce(subject);break;case\"string\":this.length=Buffer.byteLength(subject,encoding);break;case\"object\":this.length=coerce(subject.length);break;default:throw Error(\"First argument needs to be a number, array or string.\")}if(this.length>Buffer.poolSize?(this.parent=new SlowBuffer(this.length),this.offset=0):((!pool||pool.length-pool.used\u003Cthis.length)&&allocPool(),this.parent=pool,this.offset=pool.used,pool.used+=this.length),isArrayIsh(subject))for(var i=0;this.length>i;i++)this.parent[i+this.offset]=subject instanceof Buffer?subject.readUInt8(i):subject[i];else\"string\"==type&&(this.length=this.write(subject,0,encoding))}}function isArrayIsh(subject){return Array.isArray(subject)||Buffer.isBuffer(subject)||subject&&\"object\"==typeof subject&&\"number\"==typeof subject.length}function allocPool(){pool=new SlowBuffer(Buffer.poolSize),pool.used=0}function readUInt16(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(val=buffer.parent[buffer.offset+offset]\u003C\u003C8,buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1])):(val=buffer.parent[buffer.offset+offset],buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8)),val)}function readUInt32(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(buffer.length>offset+1&&(val=buffer.parent[buffer.offset+offset+1]\u003C\u003C16),buffer.length>offset+2&&(val|=buffer.parent[buffer.offset+offset+2]\u003C\u003C8),buffer.length>offset+3&&(val|=buffer.parent[buffer.offset+offset+3]),val+=buffer.parent[buffer.offset+offset]\u003C\u003C24>>>0):(buffer.length>offset+2&&(val=buffer.parent[buffer.offset+offset+2]\u003C\u003C16),buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8),val|=buffer.parent[buffer.offset+offset],buffer.length>offset+3&&(val+=buffer.parent[buffer.offset+offset+3]\u003C\u003C24>>>0)),val)}function readInt16(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),val=readUInt16(buffer,offset,isBigEndian,noAssert),neg=32768&val,neg?-1*(65535-val+1):val}function readInt32(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),val=readUInt32(buffer,offset,isBigEndian,noAssert),neg=2147483648&val,neg?-1*(4294967295-val+1):val}function readFloat(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,23,4)}function readDouble(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+7,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,52,8)}function verifuint(value,max){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(value>=0,\"specified a negative value for writing an unsigned value\"),assert.ok(max>=value,\"value is larger than maximum value for type\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function writeUInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"trying to write beyond buffer length\"),verifuint(value,65535));for(var i=0;Math.min(buffer.length-offset,2)>i;i++)buffer.parent[buffer.offset+offset+i]=(value&255\u003C\u003C8*(isBigEndian?1-i:i))>>>8*(isBigEndian?1-i:i)}function writeUInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"trying to write beyond buffer length\"),verifuint(value,4294967295));for(var i=0;Math.min(buffer.length-offset,4)>i;i++)buffer.parent[buffer.offset+offset+i]=255&value>>>8*(isBigEndian?3-i:i)}function verifsint(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function verifIEEE754(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\")}function writeInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to write beyond buffer length\"),verifsint(value,32767,-32768)),value>=0?writeUInt16(buffer,value,offset,isBigEndian,noAssert):writeUInt16(buffer,65535+value+1,offset,isBigEndian,noAssert)}function writeInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifsint(value,2147483647,-2147483648)),value>=0?writeUInt32(buffer,value,offset,isBigEndian,noAssert):writeUInt32(buffer,4294967295+value+1,offset,isBigEndian,noAssert)}function writeFloat(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,23,4)}function writeDouble(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+7,\"Trying to write beyond buffer length\"),verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,52,8)}var assert=require(\"assert\");exports.INSPECT_MAX_BYTES=50,SlowBuffer.byteLength=function(str,encoding){switch(encoding||\"utf8\"){case\"hex\":return str.length/2;case\"utf8\":case\"utf-8\":return utf8ToBytes(str).length;case\"ascii\":case\"binary\":return str.length;case\"base64\":return base64ToBytes(str).length;default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.utf8Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(utf8ToBytes(string),this,offset,length)},SlowBuffer.prototype.asciiWrite=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(asciiToBytes(string),this,offset,length)},SlowBuffer.prototype.binaryWrite=SlowBuffer.prototype.asciiWrite,SlowBuffer.prototype.base64Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(base64ToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Slice=function(){var bytes=Array.prototype.slice.apply(this,arguments);return require(\"base64-js\").fromByteArray(bytes)},SlowBuffer.prototype.utf8Slice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),res=\"\",tmp=\"\",i=0;bytes.length>i;)127>=bytes[i]?(res+=decodeUtf8Char(tmp)+String.fromCharCode(bytes[i]),tmp=\"\"):tmp+=\"%\"+bytes[i].toString(16),i++;return res+decodeUtf8Char(tmp)},SlowBuffer.prototype.asciiSlice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),ret=\"\",i=0;bytes.length>i;i++)ret+=String.fromCharCode(bytes[i]);return ret},SlowBuffer.prototype.binarySlice=SlowBuffer.prototype.asciiSlice,SlowBuffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this[i]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CSlowBuffer \"+out.join(\" \")+\">\"},SlowBuffer.prototype.hexSlice=function(start,end){var len=this.length;(!start||0>start)&&(start=0),(!end||0>end||end>len)&&(end=len);for(var out=\"\",i=start;end>i;i++)out+=toHex(this[i]);return out},SlowBuffer.prototype.toString=function(encoding,start,end){if(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start=+start||0,end===void 0&&(end=this.length),+end==start)return\"\";switch(encoding){case\"hex\":return this.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.utf8Slice(start,end);case\"ascii\":return this.asciiSlice(start,end);case\"binary\":return this.binarySlice(start,end);case\"base64\":return this.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.hexWrite=function(string,offset,length){offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining;var strLen=string.length;if(strLen%2)throw Error(\"Invalid hex string\");length>strLen/2&&(length=strLen/2);for(var i=0;length>i;i++){var byte=parseInt(string.substr(2*i,2),16);if(isNaN(byte))throw Error(\"Invalid hex string\");this[offset+i]=byte}return SlowBuffer._charsWritten=2*i,i},SlowBuffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;switch(length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase()){case\"hex\":return this.hexWrite(string,offset,length);case\"utf8\":case\"utf-8\":return this.utf8Write(string,offset,length);case\"ascii\":return this.asciiWrite(string,offset,length);case\"binary\":return this.binaryWrite(string,offset,length);case\"base64\":return this.base64Write(string,offset,length);case\"ucs2\":case\"ucs-2\":return this.ucs2Write(string,offset,length);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this,end-start,+start)},SlowBuffer.prototype.copy=function(target,targetstart,sourcestart,sourceend){for(var temp=[],i=sourcestart;sourceend>i;i++)assert.ok(this[i]!==void 0,\"copying undefined buffer bytes!\"),temp.push(this[i]);for(var i=targetstart;targetstart+temp.length>i;i++)target[i]=temp[i-targetstart]},SlowBuffer.prototype.fill=function(value,start,end){if(end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");for(var i=start;end>i;i++)this[i]=value},exports.SlowBuffer=SlowBuffer,exports.Buffer=Buffer,Buffer.poolSize=8192;var pool;Buffer.isBuffer=function(b){return b instanceof Buffer||b instanceof SlowBuffer},Buffer.concat=function(list,totalLength){if(!Array.isArray(list))throw Error(\"Usage: Buffer.concat(list, [totalLength])\\n list should be an Array.\");if(0===list.length)return new Buffer(0);if(1===list.length)return list[0];if(\"number\"!=typeof totalLength){totalLength=0;for(var i=0;list.length>i;i++){var buf=list[i];totalLength+=buf.length}}for(var buffer=new Buffer(totalLength),pos=0,i=0;list.length>i;i++){var buf=list[i];buf.copy(buffer,pos),pos+=buf.length}return buffer},Buffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this.parent[i+this.offset]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CBuffer \"+out.join(\" \")+\">\"},Buffer.prototype.get=function(i){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]},Buffer.prototype.set=function(i,v){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]=v},Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase();var ret;switch(encoding){case\"hex\":ret=this.parent.hexWrite(string,this.offset+offset,length);break;case\"utf8\":case\"utf-8\":ret=this.parent.utf8Write(string,this.offset+offset,length);break;case\"ascii\":ret=this.parent.asciiWrite(string,this.offset+offset,length);break;case\"binary\":ret=this.parent.binaryWrite(string,this.offset+offset,length);break;case\"base64\":ret=this.parent.base64Write(string,this.offset+offset,length);break;case\"ucs2\":case\"ucs-2\":ret=this.parent.ucs2Write(string,this.offset+offset,length);break;default:throw Error(\"Unknown encoding\")}return Buffer._charsWritten=SlowBuffer._charsWritten,ret},Buffer.prototype.toString=function(encoding,start,end){switch(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start===void 0||0>start?start=0:start>this.length&&(start=this.length),end===void 0||end>this.length?end=this.length:0>end&&(end=0),start+=this.offset,end+=this.offset,encoding){case\"hex\":return this.parent.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.parent.utf8Slice(start,end);case\"ascii\":return this.parent.asciiSlice(start,end);case\"binary\":return this.parent.binarySlice(start,end);case\"base64\":return this.parent.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.parent.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},Buffer.byteLength=SlowBuffer.byteLength,Buffer.prototype.fill=function(value,start,end){if(value||(value=0),start||(start=0),end||(end=this.length),\"string\"==typeof value&&(value=value.charCodeAt(0)),\"number\"!=typeof value||isNaN(value))throw Error(\"value is not a number\");if(start>end)throw Error(\"end \u003C start\");if(end===start)return 0;if(0==this.length)return 0;if(0>start||start>=this.length)throw Error(\"start out of bounds\");\nif(0>end||end>this.length)throw Error(\"end out of bounds\");return this.parent.fill(value,start+this.offset,end+this.offset)},Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(start||(start=0),end||(end=this.length),target_start||(target_start=0),start>end)throw Error(\"sourceEnd \u003C sourceStart\");if(end===start)return 0;if(0==target.length||0==source.length)return 0;if(0>target_start||target_start>=target.length)throw Error(\"targetStart out of bounds\");if(0>start||start>=source.length)throw Error(\"sourceStart out of bounds\");if(0>end||end>source.length)throw Error(\"sourceEnd out of bounds\");return end>this.length&&(end=this.length),end-start>target.length-target_start&&(end=target.length-target_start+start),this.parent.copy(target.parent,target_start+target.offset,start+this.offset,end+this.offset)},Buffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this.parent,end-start,+start+this.offset)},Buffer.prototype.utf8Slice=function(start,end){return this.toString(\"utf8\",start,end)},Buffer.prototype.binarySlice=function(start,end){return this.toString(\"binary\",start,end)},Buffer.prototype.asciiSlice=function(start,end){return this.toString(\"ascii\",start,end)},Buffer.prototype.utf8Write=function(string,offset){return this.write(string,offset,\"utf8\")},Buffer.prototype.binaryWrite=function(string,offset){return this.write(string,offset,\"binary\")},Buffer.prototype.asciiWrite=function(string,offset){return this.write(string,offset,\"ascii\")},Buffer.prototype.readUInt8=function(offset,noAssert){var buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:buffer.parent[buffer.offset+offset]},Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,!1,noAssert)},Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,!0,noAssert)},Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,!1,noAssert)},Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,!0,noAssert)},Buffer.prototype.readInt8=function(offset,noAssert){var neg,buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:(neg=128&buffer.parent[buffer.offset+offset],neg?-1*(255-buffer.parent[buffer.offset+offset]+1):buffer.parent[buffer.offset+offset])},Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,!1,noAssert)},Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,!0,noAssert)},Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,!1,noAssert)},Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,!0,noAssert)},Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,!1,noAssert)},Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,!0,noAssert)},Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,!1,noAssert)},Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,!0,noAssert)},Buffer.prototype.writeUInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"trying to write beyond buffer length\"),verifuint(value,255)),buffer.length>offset&&(buffer.parent[buffer.offset+offset]=value)},Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){writeUInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){writeUInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){writeUInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){writeUInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to write beyond buffer length\"),verifsint(value,127,-128)),value>=0?buffer.writeUInt8(value,offset,noAssert):buffer.writeUInt8(255+value+1,offset,noAssert)},Buffer.prototype.writeInt16LE=function(value,offset,noAssert){writeInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt16BE=function(value,offset,noAssert){writeInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt32LE=function(value,offset,noAssert){writeInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt32BE=function(value,offset,noAssert){writeInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeFloatLE=function(value,offset,noAssert){writeFloat(this,value,offset,!1,noAssert)},Buffer.prototype.writeFloatBE=function(value,offset,noAssert){writeFloat(this,value,offset,!0,noAssert)},Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){writeDouble(this,value,offset,!1,noAssert)},Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){writeDouble(this,value,offset,!0,noAssert)},SlowBuffer.prototype.readUInt8=Buffer.prototype.readUInt8,SlowBuffer.prototype.readUInt16LE=Buffer.prototype.readUInt16LE,SlowBuffer.prototype.readUInt16BE=Buffer.prototype.readUInt16BE,SlowBuffer.prototype.readUInt32LE=Buffer.prototype.readUInt32LE,SlowBuffer.prototype.readUInt32BE=Buffer.prototype.readUInt32BE,SlowBuffer.prototype.readInt8=Buffer.prototype.readInt8,SlowBuffer.prototype.readInt16LE=Buffer.prototype.readInt16LE,SlowBuffer.prototype.readInt16BE=Buffer.prototype.readInt16BE,SlowBuffer.prototype.readInt32LE=Buffer.prototype.readInt32LE,SlowBuffer.prototype.readInt32BE=Buffer.prototype.readInt32BE,SlowBuffer.prototype.readFloatLE=Buffer.prototype.readFloatLE,SlowBuffer.prototype.readFloatBE=Buffer.prototype.readFloatBE,SlowBuffer.prototype.readDoubleLE=Buffer.prototype.readDoubleLE,SlowBuffer.prototype.readDoubleBE=Buffer.prototype.readDoubleBE,SlowBuffer.prototype.writeUInt8=Buffer.prototype.writeUInt8,SlowBuffer.prototype.writeUInt16LE=Buffer.prototype.writeUInt16LE,SlowBuffer.prototype.writeUInt16BE=Buffer.prototype.writeUInt16BE,SlowBuffer.prototype.writeUInt32LE=Buffer.prototype.writeUInt32LE,SlowBuffer.prototype.writeUInt32BE=Buffer.prototype.writeUInt32BE,SlowBuffer.prototype.writeInt8=Buffer.prototype.writeInt8,SlowBuffer.prototype.writeInt16LE=Buffer.prototype.writeInt16LE,SlowBuffer.prototype.writeInt16BE=Buffer.prototype.writeInt16BE,SlowBuffer.prototype.writeInt32LE=Buffer.prototype.writeInt32LE,SlowBuffer.prototype.writeInt32BE=Buffer.prototype.writeInt32BE,SlowBuffer.prototype.writeFloatLE=Buffer.prototype.writeFloatLE,SlowBuffer.prototype.writeFloatBE=Buffer.prototype.writeFloatBE,SlowBuffer.prototype.writeDoubleLE=Buffer.prototype.writeDoubleLE,SlowBuffer.prototype.writeDoubleBE=Buffer.prototype.writeDoubleBE})()},{assert:73,\"./buffer_ieee754\":75,\"base64-js\":79}],72:[function(require,module){\"use strict\";function newlinesIn(src){if(!src)return 0;var newlines=src.match(/\\n/g);return newlines?newlines.length:0}var difflet=require(\"difflet\"),prettydiff=difflet({comment:!0,indent:2}),compactdiff=difflet({comment:!0});module.exports=function(before,after,opts){opts=opts||{};var joinLinesAt=opts.joinLinesAt||20,maxLineLength=opts.maxLineLength||380,result=prettydiff.compare(before,after);return newlinesIn(result)>=joinLinesAt&&(result=compactdiff.compare(before,after)),result.split(\"\\n\").map(function(line){return line.length>=maxLineLength?line.slice(0,maxLineLength)+\"....\":line}).join(\"\\n\").replace(/\\/\\/ != undefined/g,\"\")}},{difflet:80}],78:[function(require,module){function clonePrototype(parent){if(null===parent)return null;var ctor=function(){};return ctor.prototype=parent,new ctor}module.exports=clonePrototype},{}],79:[function(require,module){(function(){\"use strict\";function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0)throw\"Invalid string. Length must be a multiple of 4\";for(placeHolders=b64.indexOf(\"=\"),placeHolders=placeHolders>0?b64.length-placeHolders:0,arr=[],l=placeHolders>0?b64.length-4:b64.length,i=0,j=0;l>i;i+=4,j+=3)tmp=lookup.indexOf(b64[i])\u003C\u003C18|lookup.indexOf(b64[i+1])\u003C\u003C12|lookup.indexOf(b64[i+2])\u003C\u003C6|lookup.indexOf(b64[i+3]),arr.push((16711680&tmp)>>16),arr.push((65280&tmp)>>8),arr.push(255&tmp);return 2===placeHolders?(tmp=lookup.indexOf(b64[i])\u003C\u003C2|lookup.indexOf(b64[i+1])>>4,arr.push(255&tmp)):1===placeHolders&&(tmp=lookup.indexOf(b64[i])\u003C\u003C10|lookup.indexOf(b64[i+1])\u003C\u003C4|lookup.indexOf(b64[i+2])>>2,arr.push(255&tmp>>8),arr.push(255&tmp)),arr}function uint8ToBase64(uint8){function tripletToBase64(num){return lookup[63&num>>18]+lookup[63&num>>12]+lookup[63&num>>6]+lookup[63&num]}var i,temp,length,extraBytes=uint8.length%3,output=\"\";for(i=0,length=uint8.length-extraBytes;length>i;i+=3)temp=(uint8[i]\u003C\u003C16)+(uint8[i+1]\u003C\u003C8)+uint8[i+2],output+=tripletToBase64(temp);switch(extraBytes){case 1:temp=uint8[uint8.length-1],output+=lookup[temp>>2],output+=lookup[63&temp\u003C\u003C4],output+=\"==\";break;case 2:temp=(uint8[uint8.length-2]\u003C\u003C8)+uint8[uint8.length-1],output+=lookup[temp>>10],output+=lookup[63&temp>>4],output+=lookup[63&temp\u003C\u003C2],output+=\"=\"}return output}var lookup=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";module.exports.toByteArray=b64ToByteArray,module.exports.fromByteArray=uint8ToBase64})()},{}],62:[function(require,module){function trimEmptyLines(lines){for(var line=lines.pop();!line||!line.length;)line=lines.pop();line&&lines.push(line)}function addLinenos(highlightedCode,firstline){function getDigits(n){return 10>n?1:100>n?2:1e3>n?3:1e4>n?4:5}function pad(n,totalDigits){var padDigits=totalDigits-getDigits(n);switch(padDigits){case 0:return\"\"+n;case 1:return\" \"+n;case 2:return\" \"+n;case 3:return\" \"+n;case 4:return\" \"+n;case 5:return\" \"+n}}var highlightedLines=highlightedCode.split(\"\\n\");trimEmptyLines(highlightedLines);var totalDigits,lineno,linesLen=highlightedLines.length,lines=[];totalDigits=getDigits(linesLen+firstline-1);for(var i=0;linesLen>i;i++)lineno=[colorSurround[0],pad(i+firstline,totalDigits),\": \",colorSurround[1]].join(\"\"),lines.push(lineno+highlightedLines[i]);return lines.join(\"\\n\")}var redeyed=require(\"redeyed\"),theme=require(\"../themes/default\"),colors=require(\"../colors\"),colorSurround=colors.brightBlack.split(\":\");module.exports=function(code,opts){opts=opts||{};try{var result=redeyed(code,opts.theme||theme),firstline=opts.firstline&&!isNaN(opts.firstline)?opts.firstline:1;return opts.linenos?addLinenos(result.code,firstline):result.code}catch(e){throw e.message=\"Unable to perform highlight. The code contained syntax errors: \"+e.message,e}}},{\"../themes/default\":81,\"../colors\":76,redeyed:82}],81:[function(require,module){var colors=require(\"../colors\");module.exports={Boolean:{\"true\":void 0,\"false\":void 0,_default:colors.brightRed},Identifier:{undefined:colors.brightBlack,self:colors.brightRed,console:colors.blue,log:colors.blue,warn:colors.red,error:colors.brightRed,_default:colors.white},Null:{_default:colors.brightBlack},Numeric:{_default:colors.blue},String:{_default:colors.brightGreen},Keyword:{\"break\":void 0,\"case\":void 0,\"catch\":colors.cyan,\"continue\":void 0,\"debugger\":void 0,\"default\":void 0,\"delete\":colors.red,\"do\":void 0,\"else\":void 0,\"finally\":colors.cyan,\"for\":void 0,\"function\":void 0,\"if\":void 0,\"in\":void 0,\"instanceof\":void 0,\"new\":colors.red,\"return\":colors.red,\"switch\":void 0,\"this\":colors.brightRed,\"throw\":void 0,\"try\":colors.cyan,\"typeof\":void 0,\"var\":colors.green,\"void\":void 0,\"while\":void 0,\"with\":void 0,_default:colors.brightBlue},Punctuator:{\";\":colors.brightBlack,\".\":colors.green,\",\":colors.green,\"{\":colors.yellow,\"}\":colors.yellow,\"(\":colors.brightBlack,\")\":colors.brightBlack,\"[\":colors.yellow,\"]\":colors.yellow,\"\u003C\":void 0,\">\":void 0,\"+\":void 0,\"-\":void 0,\"*\":void 0,\"%\":void 0,\"&\":void 0,\"|\":void 0,\"^\":void 0,\"!\":void 0,\"~\":void 0,\"?\":void 0,\":\":void 0,\"=\":void 0,\"\u003C=\":void 0,\">=\":void 0,\"==\":void 0,\"!=\":void 0,\"++\":void 0,\"--\":void 0,\"\u003C\u003C\":void 0,\">>\":void 0,\"&&\":void 0,\"||\":void 0,\"+=\":void 0,\"-=\":void 0,\"*=\":void 0,\"%=\":void 0,\"&=\":void 0,\"|=\":void 0,\"^=\":void 0,\"/=\":void 0,\"===\":void 0,\"!==\":void 0,\">>>\":void 0,\"\u003C\u003C=\":void 0,\">>=\":void 0,\">>>=\":void 0,_default:colors.brightYellow},Line:{_default:colors.brightBlack},Block:{_default:colors.brightBlack},_default:void 0}},{\"../colors\":76}],83:[function(require,module){function Traverse(obj){this.value=obj}function walk(root,cb,immutable){var path=[],parents=[],alive=!0;return function walker(node_){function updateState(){if(\"object\"==typeof state.node&&null!==state.node){state.keys&&state.node_===state.node||(state.keys=objectKeys(state.node)),state.isLeaf=0==state.keys.length;for(var i=0;parents.length>i;i++)if(parents[i].node_===node_){state.circular=parents[i];break}}else state.isLeaf=!0,state.keys=null;state.notLeaf=!state.isLeaf,state.notRoot=!state.isRoot}var node=immutable?copy(node_):node_,modifiers={},keepGoing=!0,state={node:node,node_:node_,path:[].concat(path),parent:parents[parents.length-1],parents:parents,key:path.slice(-1)[0],isRoot:0===path.length,level:path.length,circular:null,update:function(x,stopHere){state.isRoot||(state.parent.node[state.key]=x),state.node=x,stopHere&&(keepGoing=!1)},\"delete\":function(stopHere){delete state.parent.node[state.key],stopHere&&(keepGoing=!1)},remove:function(stopHere){isArray(state.parent.node)?state.parent.node.splice(state.key,1):delete state.parent.node[state.key],stopHere&&(keepGoing=!1)},keys:null,before:function(f){modifiers.before=f},after:function(f){modifiers.after=f},pre:function(f){modifiers.pre=f},post:function(f){modifiers.post=f},stop:function(){alive=!1},block:function(){keepGoing=!1}};if(!alive)return state;updateState();var ret=cb.call(state,state.node);return void 0!==ret&&state.update&&state.update(ret),modifiers.before&&modifiers.before.call(state,state.node),keepGoing?(\"object\"!=typeof state.node||null===state.node||state.circular||(parents.push(state),updateState(),forEach(state.keys,function(key,i){path.push(key),modifiers.pre&&modifiers.pre.call(state,state.node[key],key);var child=walker(state.node[key]);immutable&&Object.hasOwnProperty.call(state.node,key)&&(state.node[key]=child.node),child.isLast=i==state.keys.length-1,child.isFirst=0==i,modifiers.post&&modifiers.post.call(state,child),path.pop()}),parents.pop()),modifiers.after&&modifiers.after.call(state,state.node),state):state}(root).node}function copy(src){if(\"object\"==typeof src&&null!==src){var dst;if(isArray(src))dst=[];else if(isDate(src))dst=new Date(src);else if(isRegExp(src))dst=RegExp(src);else if(isError(src))dst={message:src.message};else if(isBoolean(src))dst=new Boolean(src);else if(isNumber(src))dst=new Number(src);else if(isString(src))dst=new String(src);else if(Object.create&&Object.getPrototypeOf)dst=Object.create(Object.getPrototypeOf(src));else if(src.constructor===Object)dst={};else{var proto=src.constructor&&src.constructor.prototype||src.__proto__||{},T=function(){};T.prototype=proto,dst=new T}return forEach(objectKeys(src),function(key){dst[key]=src[key]}),dst}return src}function toS(obj){return Object.prototype.toString.call(obj)}function isDate(obj){return\"[object Date]\"===toS(obj)}function isRegExp(obj){return\"[object RegExp]\"===toS(obj)}function isError(obj){return\"[object Error]\"===toS(obj)}function isBoolean(obj){return\"[object Boolean]\"===toS(obj)}function isNumber(obj){return\"[object Number]\"===toS(obj)}function isString(obj){return\"[object String]\"===toS(obj)}var traverse=module.exports=function(obj){return new Traverse(obj)};Traverse.prototype.get=function(ps){for(var node=this.value,i=0;ps.length>i;i++){var key=ps[i];if(!Object.hasOwnProperty.call(node,key)){node=void 0;break}node=node[key]}return node},Traverse.prototype.has=function(ps){for(var node=this.value,i=0;ps.length>i;i++){var key=ps[i];if(!Object.hasOwnProperty.call(node,key))return!1;node=node[key]}return!0},Traverse.prototype.set=function(ps,value){for(var node=this.value,i=0;ps.length-1>i;i++){var key=ps[i];Object.hasOwnProperty.call(node,key)||(node[key]={}),node=node[key]}return node[ps[i]]=value,value},Traverse.prototype.map=function(cb){return walk(this.value,cb,!0)},Traverse.prototype.forEach=function(cb){return this.value=walk(this.value,cb,!1),this.value},Traverse.prototype.reduce=function(cb,init){var skip=1===arguments.length,acc=skip?this.value:init;return this.forEach(function(x){this.isRoot&&skip||(acc=cb.call(this,acc,x))}),acc},Traverse.prototype.paths=function(){var acc=[];return this.forEach(function(){acc.push(this.path)}),acc},Traverse.prototype.nodes=function(){var acc=[];return this.forEach(function(){acc.push(this.node)}),acc},Traverse.prototype.clone=function(){var parents=[],nodes=[];return function clone(src){for(var i=0;parents.length>i;i++)if(parents[i]===src)return nodes[i];if(\"object\"==typeof src&&null!==src){var dst=copy(src);return parents.push(src),nodes.push(dst),forEach(objectKeys(src),function(key){dst[key]=clone(src[key])}),parents.pop(),nodes.pop(),dst}return src}(this.value)};var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj)res.push(key);return res},isArray=Array.isArray||function isArray(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},forEach=function(xs,fn){if(xs.forEach)return xs.forEach(fn);for(var i=0;xs.length>i;i++)fn(xs[i],i,xs)};forEach(objectKeys(Traverse.prototype),function(key){traverse[key]=function(obj){var args=[].slice.call(arguments,1),t=new Traverse(obj);return t[key].apply(t,args)}})},{}],80:[function(require,module){(function(process){function difflet(opts,prev,next){function set(type){0===levels&&opts.start(type,stream),levels++}function unset(type){0===--levels&&opts.stop(type,stream)}function stringifier(insertable,node,opts){var indent=opts.indent;if(insertable)var prevNode=traverse.get(prev,this.path||[]);var indentx,inserted=insertable&&void 0===prevNode;try{indentx=indent?Array(((this.path||[]).length+1)*indent+1).join(\" \"):\"\"}catch(e){indentx=\"\"}if(commaFirst&&(indentx=indentx.slice(indent)),Array.isArray(node)){var updated=(prevNode||traverse.has(prev,this.path))&&!Array.isArray(prevNode);updated&&set(\"updated\"),opts.comment&&!Array.isArray(prevNode)&&(indent=0),this.before(function(){inserted&&set(\"inserted\"),indent&&commaFirst?0===(this.path||[]).length||Array.isArray(this.parent.node)?write(\"[ \"):write(\"\\n\"+indentx+\"[ \"):indent?write(\"[\\n\"+indentx):write(\"[\")}),this.post(function(child){child.isLast||indent&&commaFirst||write(\",\");var prev=prevNode&&prevNode[child.key];indent&&opts.comment&&child.node!==prev&&(\"object\"!=typeof child.node||\"object\"!=typeof prev)&&(set(\"comment\"),write(\" // != \"),traverse(prev).forEach(function(x){plainStringify.call(this,x,{indent:0})}),unset(\"comment\")),child.isLast||(indent&&commaFirst?write(\"\\n\"+indentx+\", \"):indent&&write(\"\\n\"+indentx))}),this.after(function(){indent&&commaFirst?write(\"\\n\"+indentx):indent&&write(\"\\n\"+indentx.slice(indent)),write(\"]\"),updated&&unset(\"updated\"),inserted&&unset(\"inserted\")})}else if(isRegExp(node))this.block(),inserted?(set(\"inserted\"),write(\"\"+node),unset(\"inserted\")):insertable&&prevNode!==node?(set(\"updated\"),write(\"\"+node),unset(\"updated\")):write(\"\"+node);else if(\"object\"==typeof node&&node&&\"function\"==typeof node.inspect)this.block(),inserted?(set(\"inserted\"),write(node.inspect()),unset(\"inserted\")):prevNode&&\"function\"==typeof prevNode.inspect&&prevNode.inspect()===node.inspect()?write(node.inspect()):(set(\"updated\"),write(node.inspect()),unset(\"updated\"));else if(\"object\"==typeof node&&null!==node){var insertedKey=!1,deleted=insertable&&\"object\"==typeof prevNode&&prevNode?Object.keys(prevNode).filter(function(key){return!Object.hasOwnProperty.call(node,key)}):[];this.before(function(){inserted&&set(\"inserted\"),write(indent&&commaFirst&&!this.isRoot?\"\\n\"+indentx+\"{ \":\"{\")}),this.pre(function(x,key){if(insertable){var obj=traverse.get(prev,this.path.concat(key));void 0===obj&&(insertedKey=!0,set(\"inserted\"))}indent&&!commaFirst&&write(\"\\n\"+indentx),plainStringify(key),write(indent?\" : \":\":\")}),this.post(function(child){child.isLast||indent&&commaFirst||write(\",\"),child.isLast&&deleted.length?(insertedKey&&unset(\"inserted\"),insertedKey=!1):insertedKey&&(unset(\"inserted\"),insertedKey=!1);var prev=prevNode&&prevNode[child.key];indent&&opts.comment&&child.node!==prev&&(\"object\"!=typeof child.node||\"object\"!=typeof prev)&&(set(\"comment\"),write(\" // != \"),traverse(prev).forEach(function(x){plainStringify.call(this,x,{indent:0})}),unset(\"comment\")),child.isLast&&deleted.length?(insertedKey&&unset(\"inserted\"),insertedKey=!1,indent&&commaFirst?write(\"\\n\"+indentx+\", \"):opts.comment&&indent?write(\"\\n\"+indentx):indent?write(\",\\n\"+indentx):write(\",\")):child.isLast||indent&&commaFirst&&write(\"\\n\"+indentx+\", \")}),this.after(function(){inserted&&unset(\"inserted\"),deleted.length&&(indent&&!commaFirst&&0===Object.keys(node).length&&write(\"\\n\"+indentx),set(\"deleted\"),deleted.forEach(function(key,ix){indent&&opts.comment&&(unset(\"deleted\"),set(\"comment\"),write(\"// \"),unset(\"comment\"),set(\"deleted\")),plainStringify(key),write(indent?\" : \":\":\"),traverse(prevNode[key]).forEach(function(x){plainStringify.call(this,x,{indent:0})});var last=ix===deleted.length-1;insertable&&!last&&(indent&&commaFirst?write(\"\\n\"+indentx+\", \"):indent?write(\",\\n\"+indentx):write(\",\"))}),unset(\"deleted\")),commaFirst&&indent?write(indentx.slice(indent)+\" }\"):indent?write(\"\\n\"+indentx.slice(indent)+\"}\"):write(\"}\")})}else{var changed=!1;inserted?set(\"inserted\"):insertable&&!deepEqual(prevNode,node)&&(changed=!0,set(\"updated\")),\"string\"==typeof node?write('\"'+(\"\"+node).replace(/\"/g,'\\\\\"')+'\"'):isRegExp(node)?write(\"\"+node):\"function\"==typeof node?write(node.name?\"[Function: \"+node.name+\"]\":\"[Function]\"):void 0===node?write(\"undefined\"):null===node?write(\"null\"):write(\"\"+node),inserted?unset(\"inserted\"):changed&&unset(\"updated\")}}var stream=opts.stream||new Stream;if(opts.stream||(stream.readable=!0,stream.writable=!0,stream.write=function(buf){this.emit(\"data\",buf)},stream.end=function(){this.emit(\"end\")}),opts||(opts={}),void 0===opts.start&&void 0===opts.stop){var c=charm(stream);opts.start=function(type){c.foreground({inserted:\"green\",updated:\"blue\",deleted:\"red\",comment:\"cyan\"}[type]),c.display(\"bright\")},opts.stop=function(){c.display(\"reset\")}}var write=function(buf){opts.write?opts.write(buf,stream):stream.write(buf)},commaFirst=\"first\"===opts.comma,stringify=function(node,params){return stringifier.call(this,!0,node,params||opts)},plainStringify=function(node,params){return stringifier.call(this,!1,node,params||opts)},levels=0;return opts.stream?traverse(next).forEach(stringify):process.nextTick(function(){traverse(next).forEach(stringify),stream.emit(\"end\")}),stream}function isRegExp(node){return node instanceof RegExp||node&&\"function\"==typeof node.test&&\"function\"==typeof node.exec&&\"function\"==typeof node.compile&&node.constructor&&\"RegExp\"===node.constructor.name}var traverse=require(\"traverse\"),Stream=require(\"stream\").Stream,charm=require(\"charm\"),deepEqual=require(\"deep-is\"),exports=module.exports=function(opts_){var fn=difflet.bind(null,opts_);return fn.compare=function(prev,next){var opts=Object.keys(opts_||{}).reduce(function(acc,key){return acc[key]=opts_[key],acc},{}),s=opts.stream=new Stream,data=\"\";return s.write=function(buf){data+=buf},s.end=function(){},s.readable=!0,s.writable=!0,difflet(opts,prev,next),data},fn};exports.compare=function(prev,next){return exports({}).compare(prev,next)}})(require(\"__browserify_process\"))},{stream:58,traverse:83,charm:84,\"deep-is\":69,__browserify_process:16}],85:[function(require,module,exports){exports.isatty=function(){},exports.setRawMode=function(){}},{}],84:[function(require,module){(function(process){var tty=require(\"tty\"),encode=require(\"./lib/encode\"),EventEmitter=require(\"events\").EventEmitter,exports=module.exports=function(){function setInput(s){if(input)throw Error(\"multiple inputs specified\");input=s}function setOutput(s){if(output)throw Error(\"multiple outputs specified\");output=s}for(var input=null,output=null,i=0;arguments.length>i;i++){var arg=arguments[i];arg&&(arg.readable?setInput(arg):(arg.stdin||arg.input)&&setInput(arg.stdin||arg.input),arg.writable?setOutput(arg):(arg.stdout||arg.output)&&setOutput(arg.stdout||arg.output))}return new Charm(input,output)},Charm=exports.Charm=function(input,output){var self=this;self.input=input,self.output=output,self.pending=[],output||self.emit(\"error\",Error(\"output stream required\")),input&&\"number\"==typeof input.fd&&tty.isatty(input.fd)&&(process.stdin.setRawMode?process.stdin.setRawMode(!0):tty.setRawMode(!0),input.resume()),input&&input.on(\"data\",function(buf){if(self.pending.length){for(var codes=extractCodes(buf),matched=!1,i=0;codes.length>i;i++)for(var j=0;self.pending.length>j;j++){var cb=self.pending[j];if(cb(codes[i])){matched=!0,self.pending.splice(j,1);break}}if(matched)return}self.emit(\"data\",buf),1===buf.length&&(3===buf[0]&&self.emit(\"^C\"),4===buf[0]&&self.emit(\"^D\"))})};Charm.prototype=new EventEmitter,Charm.prototype.destroy=function(){this.input&&this.input.destroy()},Charm.prototype.write=function(msg){return this.output.write(msg),this},Charm.prototype.reset=function(){return this.write(encode(\"c\")),this},Charm.prototype.position=function(x,y){if(\"function\"==typeof x){var cb=x;this.pending.push(function(buf){if(27===buf[0]&&buf[1]===encode.ord(\"[\")&&buf[buf.length-1]===encode.ord(\"R\")){var pos=(\"\"+buf).slice(2,-1).split(\";\").map(Number);return cb(pos[1],pos[0]),!0}}),this.write(encode(\"[6n\"))}else this.write(encode(\"[\"+Math.floor(y)+\";\"+Math.floor(x)+\"f\"));return this},Charm.prototype.move=function(x,y){return 0>y?this.up(-y):y>0&&this.down(y),x>0?this.right(x):0>x&&this.left(-x),this},Charm.prototype.up=function(y){return void 0===y&&(y=1),this.write(encode(\"[\"+Math.floor(y)+\"A\")),this},Charm.prototype.down=function(y){return void 0===y&&(y=1),this.write(encode(\"[\"+Math.floor(y)+\"B\")),this},Charm.prototype.right=function(x){return void 0===x&&(x=1),this.write(encode(\"[\"+Math.floor(x)+\"C\")),this},Charm.prototype.left=function(x){return void 0===x&&(x=1),this.write(encode(\"[\"+Math.floor(x)+\"D\")),this},Charm.prototype.column=function(x){return this.write(encode(\"[\"+Math.floor(x)+\"G\")),this},Charm.prototype.push=function(withAttributes){return this.write(encode(withAttributes?\"7\":\"[s\")),this},Charm.prototype.pop=function(withAttributes){return this.write(encode(withAttributes?\"8\":\"[u\")),this},Charm.prototype.erase=function(s){return\"end\"===s||\"$\"===s?this.write(encode(\"[K\")):\"start\"===s||\"^\"===s?this.write(encode(\"[1K\")):\"line\"===s?this.write(encode(\"[2K\")):\"down\"===s?this.write(encode(\"[J\")):\"up\"===s?this.write(encode(\"[1J\")):\"screen\"===s?this.write(encode(\"[1J\")):this.emit(\"error\",Error(\"Unknown erase type: \"+s)),this},Charm.prototype.display=function(attr){var c={reset:0,bright:1,dim:2,underscore:4,blink:5,reverse:7,hidden:8}[attr];return void 0===c&&this.emit(\"error\",Error(\"Unknown attribute: \"+attr)),this.write(encode(\"[\"+c+\"m\")),this},Charm.prototype.foreground=function(color){if(\"number\"==typeof color)(0>color||color>=256)&&this.emit(\"error\",Error(\"Color out of range: \"+color)),this.write(encode(\"[38;5;\"+color+\"m\"));else{var c={black:30,red:31,green:32,yellow:33,blue:34,magenta:35,cyan:36,white:37}[color.toLowerCase()];c||this.emit(\"error\",Error(\"Unknown color: \"+color)),this.write(encode(\"[\"+c+\"m\"))}return this},Charm.prototype.background=function(color){if(\"number\"==typeof color)(0>color||color>=256)&&this.emit(\"error\",Error(\"Color out of range: \"+color)),this.write(encode(\"[48;5;\"+color+\"m\"));else{var c={black:40,red:41,green:42,yellow:43,blue:44,magenta:45,cyan:46,white:47}[color.toLowerCase()];c||this.emit(\"error\",Error(\"Unknown color: \"+color)),this.write(encode(\"[\"+c+\"m\"))}return this},Charm.prototype.cursor=function(visible){return this.write(encode(visible?\"[?25h\":\"[?25l\")),this};var extractCodes=exports.extractCodes=function(buf){for(var codes=[],start=-1,i=0;buf.length>i;i++)27===buf[i]?(start>=0&&codes.push(buf.slice(start,i)),start=i):start>=0&&i===buf.length-1&&codes.push(buf.slice(start));return codes}})(require(\"__browserify_process\"))},{tty:85,events:15,\"./lib/encode\":86,__browserify_process:16}],82:[function(require,module){(function(){(function(){\"use strict\";function bootstrap(esprima,exportFn){function isFunction(obj){return\"[object Function]\"===toString.call(obj)}function isString(obj){return\"[object String]\"===toString.call(obj)}function isObject(obj){return\"[object Object]\"===toString.call(obj)}function surroundWith(before,after){return function(s){return before+s+after}}function isNonCircular(key){return\"_parent\"!==key}function objectizeString(value){var vals=value.split(\":\");if(0===vals.length||vals.length>2)throw Error(\"illegal string config: \"+value+'\\nShould be of format \"before:after\"');return 1===vals.length||0===vals[1].length?0>vals.indexOf(\":\")?{_before:vals[0]}:{_after:vals[0]}:{_before:vals[0],_after:vals[1]}}function objectize(node){function resolve(value,key){if(!value._parent)return void 0;if(value._parent._default&&value._parent._default[key])return value._parent._default[key];var root=value._parent._parent;return root?root._default?root._default[key]:void 0:void 0}function process(key){var value=node[key];if(value&&!isFunction(value)){if(isString(value)&&(node[key]=value=objectizeString(value)),value._parent=node,isObject(value))return value._before||value._after?(value._before=value._before||resolve(value,\"_before\"),value._after=value._after||resolve(value,\"_after\"),void 0):objectize(value);throw Error(\"nodes need to be either {String}, {Object} or {Function}.\"+value+\" is neither.\")}}node._default&&process(\"_default\"),Object.keys(node).filter(function(key){return isNonCircular(key)&&node.hasOwnProperty(key)&&\"_before\"!==key&&\"_after\"!==key&&\"_default\"!==key}).forEach(process)}function functionize(node){Object.keys(node).filter(function(key){return isNonCircular(key)&&node.hasOwnProperty(key)}).forEach(function(key){var value=node[key];if(!isFunction(value)&&isObject(value)){if(!value._before&&!value._after)return functionize(value);var before=value._before||\"\",after=value._after||\"\";return node[key]=surroundWith(before,after)}})}function normalize(root){objectize(root),functionize(root)}function mergeTokensAndComments(tokens,comments){function addToAllByRangeStart(t){all[t.range[0]]=t}var all={};return tokens.forEach(addToAllByRangeStart),comments.forEach(addToAllByRangeStart),Object.keys(all).map(function(k){return all[k]})}function redeyed(code,config,opts){function tokenIndex(tokens,tkn,start){var current,rangeStart=tkn.range[0];for(current=start;tokens.length>current;current++)if(tokens[current].range[0]===rangeStart)return current;throw Error(\"Token %s not found at or after index: %d\",tkn,start)}function process(surround){var result,currentIndex,nextIndex,splitEnd,skip=0;return result=surround(code.slice(start,end),info),isObject(result)?(splits.push(result.replacement),currentIndex=info.tokenIndex,nextIndex=tokenIndex(info.tokens,result.skipPastToken,currentIndex),skip=nextIndex-currentIndex,splitEnd=skip>0?tokens[nextIndex-1].range[1]:end):(splits.push(result),splitEnd=end),{skip:skip,splitEnd:splitEnd}}function addSplit(start,end,surround){var result,skip=0;if(!(start>=end))return surround?(result=process(surround),skip=result.skip,lastSplitEnd=result.splitEnd):(splits.push(code.slice(start,end)),lastSplitEnd=end),skip}opts=opts||{},code=code.replace(/^\\#\\!.*/,\"\");var transformedCode,all,info,ast=esprima.parse(code,{tokens:!0,comment:!0,range:!0,tolerant:!0}),tokens=ast.tokens,comments=ast.comments,lastSplitEnd=0,splits=[];\nnormalize(config),all=mergeTokensAndComments(tokens,comments);for(var tokenIdx=0;all.length>tokenIdx;tokenIdx++){var surround,start,end,token=all[tokenIdx],surroundForType=config[token.type];surroundForType&&(surround=surroundForType&&surroundForType.hasOwnProperty(token.value)&&surroundForType[token.value]&&isFunction(surroundForType[token.value])?surroundForType[token.value]:surroundForType._default,start=token.range[0],end=token.range[1],addSplit(lastSplitEnd,start),info={tokenIndex:tokenIdx,tokens:all,ast:ast,code:code},tokenIdx+=addSplit(start,end,surround,info))}return code.length>lastSplitEnd&&addSplit(lastSplitEnd,code.length),transformedCode=opts.nojoin?void 0:splits.join(\"\"),{ast:ast,tokens:tokens,comments:comments,splits:splits,code:transformedCode}}return exportFn?exportFn(redeyed):redeyed}var esprima,exportFn,toString=Object.prototype.toString;\"object\"==typeof module&&\"object\"==typeof module.exports&&\"function\"==typeof require?(esprima=require(\"esprima\"),exportFn=function(redeyed){module.exports=redeyed},bootstrap(esprima,exportFn)):\"function\"==typeof define&&define.amd?define([\"esprima\"],function(esprima){return bootstrap(esprima)}):\"object\"==typeof window&&(window.redeyed=bootstrap(window.esprima))})()})()},{esprima:70}],86:[function(require,module){(function(Buffer){var encode=module.exports=function(xs){function bytes(s){return\"string\"==typeof s?s.split(\"\").map(ord):Array.isArray(s)?s.reduce(function(acc,c){return acc.concat(bytes(c))},[]):void 0}return new Buffer([27].concat(bytes(xs)))},ord=encode.ord=function ord(c){return c.charCodeAt(0)}})(require(\"__browserify_buffer\").Buffer)},{__browserify_buffer:77}]},{},[1]);\n\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/scriptie-talkie-embed.js","modified":"20230427072656645"},
@@ -896,7 +894,6 @@ Error message and password prompt
{"created":"20230424093140723","text":"\u003C\u003Cscript>> \u003C!-- enables script-tag -->\n\n\u003Cdiv class=\"scene\">\n\t\u003Ca-scene embedded>\n\t\t\u003Ca-box position=\"-1 0.5 -3\" rotation=\"0 45 0\" color=\"#4CC3D9\">\u003C/a-box>\n\t\t\u003Ca-sphere position=\"0 1.25 -5\" radius=\"1.25\" color=\"#EF2D5E\">\u003C/a-sphere>\n\t\t\u003Ca-cylinder position=\"1 0.75 -3\" radius=\"0.5\" height=\"1.5\" color=\"#FFC65D\">\u003C/a-cylinder>\n\t\t\u003Ca-plane position=\"0 0 -4\" rotation=\"-90 0 0\" width=\"4\" height=\"4\" color=\"#7BC8A4\">\u003C/a-plane>\n\t\t\u003Ca-sky color=\"#444\">\u003C/a-sky>\n\t\u003C/a-scene>\n\u003C/div>\n\n\u003Cscript>\n(function(){\n\t\n\tlog(\"hello world\")\n let $scene = $('a-scene')\n\t\n $scene.addEventListener('loaded', () => {\n\t\t$scene.renderer.render = ( (render) => ( scene, cam ) => {\n \t\trender(scene,cam)\t\n\t\t\tif( !$scene.renderer ) return log(\"no renderer\")\n\t\t\tlet info = $scene.renderer.info.render\n\t\t\tlog(\"frame : \" + info.frame,2)\n\t\t\tlog(\"triangle: \" + info.triangles,4)\n\t\t\tlog(\"calls : \" + info.calls,3)\t\t\n\t\t})($scene.renderer.render.bind($scene.renderer) )\n })\t\n\t\n})()\n\u003C/script>","tags":"","title":"AFRAME template","modified":"20230523125627072","type":"text/vnd.tiddlywiki"},
{"title":"centralized.png","text":"iVBORw0KGgoAAAANSUhEUgAAA2oAAAD/CAIAAAAPCrIxAAAgAElEQVR4Aezdd1Qj6Z0vfP7YPcfHd+wJHl97bM9MT+cInZucQRIoIwQiSSiDAOUsAUISOSNAIJAQQuQgcg4iZ5Fj09B5untmeuzxjL3rd9fv6em9vj5ehwm7ds/dqsPhlKTnqfrVR6Lqy1NSye73wAQIAAKAACAACAACgAAgAAh8ZQG7r9wSaAgIAAKAACAACAACgAAgAAj8HoiPwIsAEAAEAAFAABAABAABQOBrCADx8WtgAU0BAUAAEAAEAAFAABAABID4CLwGAAFAABAABAABQAAQAAS+hgAQH78GFtD0/22Bx48fLy4uDg8PV1ZWKhSKJGACBAABQAAQAARePYHU1NSKiorOzs75+fmjo6N/yKEZiI//EHZgpf9ggY2NDY1Gk5CQEBQU5OTk9O6779p9Of3whz90dHQMDw+XyWSv3h4DqAgQAAQAAUDgf7SAWCwOCgq6cuXK9773vZeHrZe/f/CDH5w8edLd3Z3D4bS0tDx9+vS/+ygLxMf/bmFg+a+KwMvIiMFg3n777Zd/b8eOHQsODpbJZFVVVdPT08+ePXtVagXqAAQAAUAAEAAE/qrA/fv3R0dHtVotn88PCAg4fvx4cHBwdHQ0iUQ6f/78mTNn8Hh8aWnpxsbGX13MN3wQiI/fEA7o9l0RaGhowGKxP/nJT/7wj5q9vX1KSorNZvuubAJQJyAACAACgAAg8DcF+vv76XT6O++84+HhwWKx4uPjg4OD33zzzdOnTxuNxr/Z/Ws1AOLj1+ICGn9nBH75y19mZWW99957r7322svg6O7unpube3h4+J3ZBqBQQAAQAAQAAUDg6wtMTEyw2ex33333xo0bLS0tVVVVp0+fPnnypF6v//oL+/M9gPj4512Ae7+7AkdHRywW6/XXX7e3tz9x4sSbb74ZGxt7//797+4WAZUDAoAAIAAIAALfQKC9vf3KlSvXrl2zWCwtLS3Xrl07ceJEZWXlN1jUn3QB4uOfgAA3v9sCMpnsRz/6EQwG8/Lyeuutt7hc7ocffvjd3iSgekAAEAAEAAFA4FsItLW1OXw5NTc39/X1ubu7X7p06c6dO99ikcC3znwbPKDvqyRgs9nOnTv3zjvv+Pj4vPXWW3K5/Pnz569SgUAtgAAgAAgAAoDAP0ygpaXF3t7+woULdXV1FRUVb7zxRlNT0zeuBhh9/MZ0QMdXSIDP53/ve9/7/ve/b2dn5+XlBXyG+hV6boBSAAFAABAABF4ZAYVC8fJA2d7e/uabb9Lp9G9WGhAfv5kb0OtVEZiZmTl+/Pjbb7/94x//2M7OTqVSvSqVAXUAAoAAIAAIAAKvnsDY2NiPf/zj06dPW63Ws2fPXrp0aW9v7+uWCcTHrysGtH+FBDo6Ouzs7Ozt7X/0ox/99Kc/HR8ff4WKA0oBBAABQAAQAAReSYHHjx+7urr+6Ec/Gh4eDggI+P73v9/V1fW1KgXi49fiAhq/QgITExN2dnavv/66nZ0dCAT65JNPXqHigFIAAUAAEAAEAIFXW4DP59vZ2TU3N9PpdDs7u6mpqa9eLxAfv7oV0PIVEnj06NEbb7zx8oKOarX6FaoMKAUQAAQAAUAAEPiOCPT09Lz55pvd3d3e3t5vvvnmVz+LDcTH78gzDJT5RwL//u//7urq+jI7ft3rV9EVxay0MkVxjbl3om9mbWxpu9c639gxqDe3NrX3t3WNNVsm6hrHzQ2T9a2zA+O3xxceWRcfDcwcdVn3WgbW83Q9IqWBwSsgxqbhCInwEL5nMPt6UPxlFNWHysMrs9Oa2spHR00zU/rxsaKuztQak7Awn6FOJMlYlMR4UXZaUVV7bfuWqW0/v2qeqWomiqsoshp+Roe6eERjmE1ObVSmVRtMnf2jk/NrS7ad+WFrV2ub2VxbXdfY3No5MGidH5+xzS7abLYlm212YXHcOtHX3NFUVFkhVGWEM4SeQeSLntgPbiHeu4G0B1E8wiSouNwosZ6aXBurbExQNVFElUiCCoQRgtE8dLgUS1JExWfGSrQUQTGOkeUfKvXFSrwxYjcExymAcRNEdQSRveB0PxTtljfW3t3/nJezA9TFKwoVLuCpDfW6zmnz8Hbt0J55aL9mcK92eK9uZK9uZL+6b1vXvlJYN5OmG+CnmiLoKjiW6Q2KcnFDHjt5/Yc/Ov69t469c/bWVf+QYEYyP8ucUTmsLBmQZjSwJEWEGAk0lOIcgLkKgTvhsL4JpAAZw09O9RDj4aoEqiY9xWzOqWlP07TwpXocKQ1HyWDLDDmlPbWt80MTt5fXH+8fPr//6Ncffvj506dfPH3y+dPHnz999PmzD794/PjXdx/8cufgyfzq7Z6R2eKqRoZQ5YsmXfEIuelP8QmSeAUlegYluaPlzkjxLTj/WgDb3jMOjFPw02oFaWYyr9gHLfVBJYKwSQiCnMjLZymNwsxWJKnQMVDuCOdHcnKSi8yltd38lMpQckYYNTdeWqEsaiqp76mwDFZ1W2v7V+oGduoGDsx9+/WDO+3j2yu792d2HtfNPcwfPFS278ga1wRNuymdh7rxh72rD+f37q8fHLYv7RinNmpn1mtnN8xzGzWz6+bp1caZ1e7FnTxjCyFBcsUFfPzsLUc3WGV1p1bfzpcVYPGCoAguLloQRUgIwSegSYKE5HyNuWNwaWvk4OOBw1937j4f2HtmPXgye/RkYP/jvq0nY6u385oH8Ok6B2rSuWjJWYLoXLT4LEF0Bi86gxeeJYjPE6UXyfKLZNl54otHT0fwTocknIUT7QOJN2B0zyBWQIgQGSoOgMdjglkkijgymh1GZOFjhdm6hpwqS1xKsajElNnaUz2/3LK03b92Z2rn3tLte9MbO039o3x1MYqQBIvIhoblBJOKOMnmwuqB0tYhXGI2kq8O4qfBWSovuvRKNPc0iXucwPkgnH0yiHUBybuBloEoBWEpzcyauezB7Zql2/37u8N3Z5uWLSpTgSBfE5NcjOdqgigqcJjQA810Q3DdEGJ3lNwzKNErKNELKXMLFLhC2N4IbjAphauoMHfMWYZWGntmK+v68srqldnlMnWRTF2UlFYiT6+QpFcJ02oE6ebkovbC2sk882S6YUxe0sfJtjAzLdz8fknpeFLlvMJokxuWhJXzDN00u3xSUDzMSWsmcwuCCDwvDA5MjcAmU6M1zLhqoag5Ob0zK6sxM0ef2txUNtXfvDk5OmOdsk7Oji/NzW/M2jamVmzW6fHh0f6Bvq7+6YmJ5flp2+z45EDvaHe3dXBscX7Ztro+uTDf0tdbUmtWlpYLsjQstUaYbUgtbytvGm8b2Zhcfbh179d3n/5/Dz/+/YNP/u32s8827z+17RxNz62PT9km5lbn9u4N7D2uXL6vW3pktD1u23zUv33YvLCb2rYmNc3ydGPs0iGOdoxfMSM1bUjNe5La2+LaXUH1IkfXH5tbgWKz3UIQ7kgkCBWFDI7HRvBDIoXYSGE4RRpJk/3RzhuYfRUFFhcX33777fn5+Z/97GfHjx//zW9+81WqBOLjV1EC2rxaAmq1+mV2LCkp+bqV5ZgHyi0TzWMr1vWjpYMP14+e2nYfTC3v9Y8tt3aNG8w9+cVN6Tn1WQWtpYbBpu7VbutBz8Rhx9h+69B2Y996RkkHU6olxGaEEpPR4RJ4iMA7hHsLE+eAiHYnMHCyZIXZpBvta7bNdmwstS3P1Y6PllpaUitKRdnqxML0XH2lsWWouWfT3LFVWDPNTq8nynREWTk3sz5d11vVPFtu7DOau3r7RqbnppZXp5dWRgf6WhpqDHqdzlxT39HZPzVrW1haW36RHucW58anJwb6+ywGkyElKyeGn4giJDhD8efdgk44Io87oi/6RrtiBShGTrS0iqFuYmVYhDldCYq6EFoWJFjkA2OCkGxEuBhHU5G5BVHxOSii0h3BcYGxnaGsmyDGNV/KVe/oG74EdyjFG0G57om54OJz2vXWef9bLiHQYBYzucxU3DKq77bpO1crO1crOlcM3atVvevG3nWdZbmgdkpd3p9YYGEl68OoKbBgps+L+Ig6ddbp7Z+d/cFPTv7ivOM1P0wQTcxW69LKOjPL+zKKLaosI1ecFhRJu+EXaA/2d0CDr+ADr9Kg9jGQi3S/WwkohJzBLMhWlFYp883iJH00Iz2Gn59T1tHYvTA2f7Cy8+H+/ecPnv366fMvPv7lF5/88otPPv38k+efP//k8+fPv3j28eePnnx2cO/52s5969x6fceQPKMkiMBxBhOcITHeaLEXOtEdneSKSnRCSm7CBdcCOA6eceDQJK7KyFcbKbwiEEbmh5aDsTIkXkLi5XCUenFmM4Zc4AqVusBYUawMeV5VXlVbrKgoMEQOw6UQEgqEaVVZ+pbi+q7y1kF9+6yh3WZoX9dbVo2dtqZB2+LmncmtB7WzD/IH7qRYdqRfxkdF52G59UGX7f7k5p35zW3jyFx2uzWvczSvayyvayy3ayy/c6S021o7Mq8qrQmj8x2c/D84d9PJA643dZUZOviyQixegA7nhhAEEQQmFs9Ek4RsZXF5U//4+p2B3Y8sWx+blx81Ld/rWDnqXztstT3oXnu8ePtxefckJdd4mZb0MiCeJYj+8HMuWnyeKLlE+TI+kv5vfDwHI573j7zkE+UUQPNHs1GhwkBYLAYTRyIJoqJZkSQWMV6cU9GYW2WJTykRaUzpjV36ifmGmY3upb3x9TsLu4cz69uWYWtiti6SkRZOLw6jlRBZOllGY3nDkLHHyi0y8jQ18vJmTr4pVJ7rEiM+R+Yex7M+wDFPohMuINjXkCKPyPQgsSmuajprcMu0vNu1u9ay0Vs2WinWpTKzs6mJBVHcQjRFBQoTuiHjXeEcV7jIHSn3RCd6Bcm9UXL3QL4rhOWD4IZSVEK1ob57vmd8o2vU1tQ9Ud3UV25qK6tuKzU0ayoaMjV1ihyzKK1GmFaTomkvaZjWNMxkm8aTtP2c7LaE9FZuXp+4xCrXzSbpF2X6RZF+nqWfEeinJWVj/Mw2Gr8YSxT7BhGgFGp4IpecK4vXqoRV2al1Zbk1laVVBktT7UR3s22kc3Kof2JqfH5j0ba3tLo3b9uYnp0bn5maWJidsy3O2RYmFyYGJvrbxwe6F+bmVtdWVzfXZ1eW+qfGW4eHmobHimpbEwsN0lxDiqY+u7KzxDzU0LM4NHtnfvOjldu/Xrnz+eTuk/6Vg46pjU7rWu/k9sjy3fGDTzr2n5fYPiyxPa1ce9a4/axj60HtzL6y0SY1zgh0Vm7pCKd0jFc+Izaui6p3hNW7ItO2QD/H0nSRFAUwKs0VCfGEoQLQ0RgcN4wgJdJVDE42X14kSi7+untpoP3fX6CoqOjs2bNWq9XOzi4mJuarFADEx6+iBLR5hQQODw//+Z//2c7OTiAQfIOyOuePJnY/3nzyu92Pfnfwye+OPvnd0Uf/unv/14sbH9a3TWbk1cbz8snxWXGCkpScZq15wtSxYu5eq+5cMXbYjB22pLwWMqcgiJAMw0kCsUJoqMgPx3PBxtlDw5zDCEE8rlxfXDnS3rszN/1wd+7hwdTBbu/ifHVnZ77BUNFQX2PpbuqabOhcqmqdzzePcrJNxERNlDSXnVWRU93ePrY4NDE/NTu3vDRrW7YuzPWOjzRaGoxGbVlJfnFVRXWHpXth3raysrqyvDg7OWod6u7taGkwm3JyC5iCpHAKzz+Ies0n9LQj4sQt+ElnzDnPSEckC0bLwIsrY5UNCWmtkvwebmpTBCMfHCx2A8e6+FJAaBaaIItkZGApKghOfNM/5pov/aoPzcGTdMkdb+8WccUzwgUS7QGNvuqGOuvoeeLW9dOe124iQQg6XVJQkWPqKaofLzCPF9ROFNVNFtZPaBonS5tnCmrHU3V9wuxGXlpNrLgER06CYxJ8wXg3jyCHKz7Hz978+UmH09fcHMFBQWROQmKuWlOnqeqtMPXpDG1pWZowEu2yl+c5kOvxgJs/hzn8b+S5Hwed+Qn27HHcVScqNFScwErNkKVrE1WVsbwMcWppXffE1PrhzsPndz/67MPPvvj4N7/99F/+5Zf/8ptf/vaLT7/49a9+88Wvvvji+WefPfvks4cf/vLg7ifrOw+ml7a7RmazSkx4htwLRnULZHijxZ4ouTsqyQWZ6IiQ3oSJrgdwr3gyIFgpO7lcqNbHS0qw0WoMPhVLVEUykpmJhfLsalWRhcwqg4epoDhhjCgnpciUa2ij8PK9kUIvuCgoWh0rKU4uNGXpmwrMnSV1o8W1k4WmyXyjtdg8ZrRMTC1vja0d1szcy+0/ULRtSxrWBI27is472rF7HYtHo6t71uWVvNYBXmWzQN8o0DcLDM1CQ7NY35RS3VbcOijOKQsiJVxy9D1xwdHNB1Vl7ikzdPLlL+IjKowTHCUIw7MwUSwkScRLLatqt87vPe7eeGpaeFRsvVM2uls1tlU3vmmw7rUtPth59FnNyFKcpu5qTNKFFwFR+OWgo+hctOg8UXyeKL5Aklyiyi9SZOe/fPR0BPc0Nv4clHjaM/SkI/qKZ4Q3NAaN5UEDqcHoGAqRSyKzKTF8Bi+pwNCSb+xgKrXCQpO6prNscLZmbLV9ent0eW9u8/bs+lbf5HShoVGUWilSNYvULYlZlkJDX0PfZPvkfHHbkKF/rnliq6J7Vqith4nS7Gm8E1HxH4TGnULHnYcnXIZyb6LlAcxyerk1c3DDuLzVsj1XNlmlbFbHFQhpqUqiLDuSk4+iKv3DBC6IOBcY2xUmdEfIPFFyL7TMByVzD+S5ghP8UNyImFRZprGpb2FodntsfntwcqV3bKF7eHZwwtY9NFvXOlBiaE8rbJCk14jTa5QaS3H9ZHHDVG6NVVHWx85siU9vERT0S0vHE3WziZULMv2ixLDAr56TVc8lVY6Lc9pjhVocMRGEoiGjWVHCZEpKBiM9n5NTmlRoyitrNxqHuht7xttbZ3vrR3ubp2YG1w5W147WbXdW53cWZ1Zml9eXDg/3d7ZXVhbHp0Y6xvqbp8a6t3fXt/Y3V3c35tZtU6vLM1tbm4+edE4t5hlbkgurE/OM8hyTNNOYqW3XN09ZhvZ6px/2zn9YO75X1r9cYJmu7FttnDzqXfvl4J3fNe3/Nnf5o4K1T8o2n5t3nzetf2iw3k4yzskqpyS6CaHWyisd52pnBPo1vn6Tp98SVm3yy2YSslvCOEpwWIRbgK8vFAULooREiKNIyQncgpR0U0Fpa2lFxzfYUf8Du9hsNovFkpycTCAQDg8P/9L1gw0Gw8tRjJe/jx075vnlRCAQkr+cbDbbP3ArvsGqMRhMYGCgTqezs7Pr7+//m0sA4uPfJAIavFoC4eHhdnZ27u7u//Zv//YNKmueuNM5f39o5cPh1cejq4/HVh4Nzd9rG9jQ1YwpMsxx/KJIWlo4LZ3ILuQoqtPK+nOrrRn6YVVZn6q8L6tqhJdeF80tRJOU0AgpJFQUgBOBw3leuJirUKwbLhzLS1AYioyjlv7NmbG9lZENW8/cfGP/aHVLr76us651wFjfW1TeqsqtVeQ3Ksva49MrCfI8nCiNmVmiaeyY2txb3d1d21yZnRnp7a6rqynSapRlRXnlhdqSQq2u3FBT02Dp7OkfGhoYHGior60oK8vPyUtTZYml6bFsNY4k90Ex7N2w71/2+4W97/vXoKddQ69C6J44CYSUCqVmQclZOGZxWHwhAq/yQfJc/Om3PIm+iHhkpCQiNi2YrITgxLdA9Bt+9Ot+9Ks+5MueBAePiKue4S4gvEcA/qob8ryj92mnW+e9bjkiA+AUmjCnTKVtSiluTcxvVpV0ZBsGkgqbEwua1GWd6boeZUmnOLuRo6yiCQpCyXIENgECJfqDwkAQnB8E6+aH8IIGB4QSwmM4CdJUVV6F3txT29hnqmnJys6LopCu+bqe9r36C/9zb4OPvRn487fgP3sHc+wy+ZZXLAQeH4bnsTmJaSkZFfHiLFFqSUVTf8/U6tz2vY17Tw8/+fXjz//l6W/+9ekXv33y6y+efPb5R5//9umvvjh8/Gxz//68bX90Yq2jd6qmqVdT2cCUpIEx1Cvu2Bu+JG+0yAst93gx+pjkjJTfgouvB3CvetADMAKuXKPKr8ksbk7Lb8vW9OaX9xZVWQzNA/VdUy19K1rjZGZRX0ZRc3l9f13vdMPgoqq4k5CgDQhRYUjpNJFGlmtUl9ZmVTZraoZyKgcUBR2SzIbk/Pp8g2VwanFgec84eZjTu5fcsimuXeE37CZ3HmrHHnQs3R9bOxhf2chtG+LoW3mGZp6xhWds5RtbhYYWhcmisQyKcrUYcsIVF9Cla55gWLiprq+8qlPwIj4KkWGcoCg+Fs9BRnFhRCknrcLQMTG3/8Sy+kw3/Thr8DB3YE8zsK0b2tIM7NbN3N+4/1n18BJDU3clJukiWXqeKDkXLTr75c/LBHmBLP2P+EiUnCEIT0VwT2Hjz0NJZzxDT9xCOriGeoLJCHRCIIQYEkSLofBZTKlQmqrILK5s7C+u7WOpdMKCOlV1n7Znydi33jK6MzJ/e2Z1f2Fzd25jy7q0OTi7Pzj7dHD22fDChxOr92Z3Dqa2t9um1zumd3rmDlontzXt48xSs2OC5GRU3HEc4xSacQ4abw9hXYOLQYwSSvFwRv+qYXmtYXM8q6+AV8UnZzGjFfJIUTqOlYv8Mj46QWOdoayXo48eKJkHUuIBF7mAWS7geFAQjxCfnpxrauydHZ7bmrTtjS9sjc6ujc6szq3e7h2ZL9U3ZRaaVTnmlNwGZX6TsqBZUdisKmlPKemQFVlY6Q3s7DalfjLVtJRmXlXXrKdUryYabWLTfLJpLqVyXJLdFsPVYCMk/lBqQHBcEFEUGquIiE8jJGRT4vOSk+uryyf7Gq3jXX1Tfc2DfY3W2cGVu9szd3ZGdja6V5Z7lxenNtcPHt3b2ttYXJoaHekcGGixTvZv3d2z7W9Pra8OLywML9kmN3e3Pnzet7BZ2tSbVt6QXGSW5ZlEGUZ1saW0dqK2c62xf7duYKekYzGndSqrZULbvVw7dqdr+dP+/X9t3PkiZ/5R0epj3eaTup2P6pcfaXu3BUUjMu1Ekm46qWJGrJ0SlM4Kylf5ug1+5ZakalNUNpWQ0RAcK4KEYH2hfhAkBoGlBUeIQqKksawcZXpNaUWX3vS3g8g32JP/13axWCwsFuvy5ct/nAj/MH94ePifV2ez2Tz+z/T+++//ofEfZt54443/3OtVvufzzz8/efKkSqWKjo7+xS9+8TdPYQPx8VV+NoHa/lRgfX3dzs7uvffe+/jjj//0sa92u9F62Dxx1DZ1t23qyDJ5ZJk4bB7e0zcvZBT3MiWVUTE5QdEqDDkNx8glCbT8zCZJQTsnq5GhrI5RVMWrTdGi0pC4LDhRERAhA4eJA8LFkAiuf3ise3Akgk5nqJNK2s1tC8Nje8uT+5vWjc2B+TXL0Hxtq7Wyul+n78kpaJAklcdy8xniUm5aDTWpLEKUG8xRM9SawvqO2d07i1vbUwuz3b0dRpOuoDBTrU7MzswuyCstLNIVFusKtRVFuspyY3WFsbpQU5Kelp0oVfN5SiY7lZaQEUpS+iCZl1xD3rvk84tL3seuBZ5yDnbwIzsHcT1xUvcQqSNS4BuWBIlQgEKknjC2sx/9hjvBG8ZARAjD6KpgckpguMQlMM4JwrgFjr3uR73qFX3ZI/KqR5izf5Q7JOqqG+L8La/TN2+ecb1xFewLiiAIMkoURXWSrBpWso6tqBCmGWmi/FhpkTjTpCxqURa1ybIb2IoKCi8njCpH45hQJBkMiYDCI2HICH8YFozGIcIIEbT4BFGSKktjqG6pr283m+rzcrJJMUQniOtZf4df+J14y/edH/q99QbozZ/CfnKNcMWb5gOloaN58dL0nBJ9iyKnSpFbnW/oMLSMNg3Md02sjdpuT2/dnd26N7t1d3bzaG7zaGHr3uzanYHJldbuyer6/lJda06hKSWjlCfPDCYk3PTGnL4eeMUzygst8gqSewQluaH/T3yEcK57UAPRHK40L1fbYGwabe5aae/f6Rre7rIuDc6uW5f2pmwP+qxHlr7dtv7lvunN4eX93vn9AtM4Q2qGhmdgSJkUQZE426AsrsmqbCqtH82tHJBlNibIyhLkRdIMbVP3oGVypdK6n92zq2jZktSt8ht3kzuOSscetC/dH12/Y13dzLYMs/RtHGMLp7qVXd3GqW7jG1uTatoLLYOCnNIgUvw1d/A1Zz9UMNHc0K+r6uDL8oOj+AgcGx3Jx+C58Che4Iv4WGnomJzbf9q0/FRjfaToOVR27ad37+T3bmd271ZN3l+5+1nV0FKspvZKTNIliuwCWXKeKD5HfDH6+DI+XiRL7KmyL5Ol+AxecCqccyo47nwg8bQ79vh12IVbaGfPcDCEBPINw6JIcXS+UKBIVuVkFFSU1/XkGbsSlBXC/EZV1ZC2c62qe7t5aH9k9nB6+fb8+u7C1vbsxu2JlbtD80/6Zx8PzN0bte1PbGyOrCyb+2cM7VNVlqnq7vnSjim5qcOFJTsZxfiP+BgYZw9KuAoV+tM1pKLBjD6bYWmlfmM0tTOTqWOSsxIIybJwQWpIQjaSovQPEzoGxjhB2a5wkQdS7o6UuiGEblC+EyjeyT8WFMwlcbJSi+vbRpasy3szawfTK3vTtt3Z1f2Ngyf91uUcjSlRXSZMKuUn6wQKHTe5nJlYIkqvluY2SPObmWlmTlaL2jCVZlpKN6+lmtdVpvVk46rUuKgwzit145Ks1hhuUUiECBRIgSDoiFB2UIQwOEoaEpUYFp4k5uuMpcO9TVZrz9DkUOfgUKt1cXTx/sHIwZ32rf3apc1m2/rwzu7uk0eru1vT81MDQ529g20js8PrD49m9ncHbauds4u9i+vWrcP1D3/Vb9utaB/OqbakVTQpSxuTChszK/rKG+fqO9da+jab+5fmfuUAACAASURBVDcquxfKembL+2drhlbaJg8Glj4a3fltx/avypeOqjbvmbfvNazfrRrdzqmdY6b3iApGk8qmUyrmE8vnpWWLYt2auGJLrN+RGTYk5ZPc3CaSKAVDigzAgAKDg+A4MjKcAw9lhxHlDE6OOKlUrtJ9tX3zP6CVzWZDIpF/+BSmnZ2dg4PDH/LfyxkEAvGXBiD/c8XPnz8f/XLKy8sbHR39zw3+cE9+fv4rODy5tbX12muvra+v/+AHP8jMzPxDtX92BoiPf5YFuPMVFQgNDf26Fxf4ky0B4iMQH4H4CMRHID4C8fH3v/89Ho+3s7N7//338Xh8Xl4egUA4duzYy9T4/vvv5+Xl/dlxxz85pnyDm6Ojoy/XcuzYMQKBYLFYvnpC/Qar+1pdFAoFFovl8/mvv/76p59++lf6AvHxr+AAD71aAh999NE//dM/hYeHf5uyGiYf1k88qBu/Vzd+r956r8F6v27oSN+xm1+9kJDUgIvVwPDpUEIqNFoNJaVh4vOwzHwUIxtMVHqFS10wPHeswDtU7BcmAYdLAyJkgRFSSDg3MIoZHMNnp+YU1jf22hatu1sTe/sTO0eTWw8n154MTt83NiwoUpsYCUUReDUKK4Njk5ARqRhyHoqcDyNmQggpkZw8RVFj5/haY/e4vqErX1eXpqlOyTcq8qtV+caMIlN+ZUNaaZU4M5/MF0fFc4gJPL40VSzN4gsy4+LUdEY6hZGFI6f6B7Evu4d84OBzzMHn1E3oyVuoi15RjkimK0ZwE84560m96E2/Dopzh3PcoUxnf/pV1yg3EAWMYQYRpCi8LDBM7IlguUITHCGMGy9GHwmX3cIvu4U4+oS5+odfd4Ofv+Fx3OHq+5cunrx6/aYvjJdcoMytEaVURMelBkWJArFMHzgFEcaK4WUlZlRnaFqztZ1JuSZuiobGVUWQ+CgMFQQK8fKCu7qDnT38PfwDwUh0SBSeyeGkqlPLNKU1usraioqSvEwmkwZC+16H3jzlf/anHj970/mNN53+109dfugQeNIT64iIhsWKmemaYrNlsLSqN7PIkpxZJ001iVRVQqVBqDII1QahukqcapSmm+QZZnl6jVhpYAo1lLj0CGIiNoKPjeQGRST4IfGXXaHvXXT/+XmvS644LxTfEy31QMvdUXIXpNQRJrgBZt7wIEODWBxpdmFlU0PPdP/07b7pu70zB91zq70La/1LW4NLd/rnHvRNP+ib3e1f2Oma2zQPLcqL2sPiS/1DU5HRGURuoSC9MkVTk6Nv0bdMFRmGpKlmPEONimJjohk5pRX6juHSgY2snl2lZUfWsCFs3E/uOCoZfdi2eH9o7c7Q6kZ6+0hcVXtCdVu8yRJnssSbLGxTq6yuPb99gJutQRJjrrn7OXqAQiMo9c19ZYYWtigDiYuHYGKgoQnw8DhIWDwEz+eotcb2sbndx+bZRxkD93mth9ymfWHzTmLrtqxtr2T0/vzhZxUDizGF5st0+UWy+AJJfIEkOk8UnScKzxEF50nCCyTRRYrkAll8Llp4Gs87GcY6iYk9AyEcdwl61wH0gb3/hauQm7egTtf9YGBMLDVBKlGoM/KziioytGZ5gTk2pVJYYEmtmijr2KnuOmgdvDs6c3966c7U0tbwzHxd51BeRRsvxRQn0SXIy5LyqzS1jdqGJraiJDohE89I56r0igqL3NTpzJSeiIg5Hko/haKfC4y1B8VfhwpB9CJywUBWn824tFy/OpTYkBxTSKNnsfFyaShbiaalIUlKcJjEKZDhHMh2hYncETI3hNgVIXCD81xhLC80G0NO4ijLimt7h5Z2x2y7vVPLbUNTzX3jrf1Tg1Pr1U1DYkUxNV6FI0jQYVwYlgkLYaKieER2elxiMUtVSZaUUBMrhfldstLRJN2MQr+sMKwm6dckOluibiGpdEyY2ULnF4YShGAYIQBGQKCpiCAqAk1BoskhITQBT6HTGi3NXUP9w+PjI2MzvRObMzMPH7bfflq18VSz/Miwea/rzoP1p09n19eGrSOdPa3do+1DtsnZJ087NnarrAu6gdm6ifW+tftLjz4f231omV1rtM41jM42jMzXDS23ju/1zT2cXHy4YLtvW7s7s3Vv9vbdxbuHtr2DlY3DleX7S0uPxxfudM4vDO6s9G0uNY1PZJVZuIp6krQlIb1fXDiRoltQ6ldS9OuJFZsy/Y7EsCXULwkrx6T6dlWNUVAopyTio4TEUFYMkprggyU7QiIuu2PPXYefvhL4bfbY/619nz9/bvty8vT0fJnnXn/9dTwe/9cHDv9LSjIYDAgE4uV1i1+u+mWO/C9Z+LdZyPPnz1977bWurq6/+QEDID5+G2eg799VICMj47XXXnv8+PG3WWv95MPaifvm8Xu1E/frJh7UTTyoHb1v7Dssbd7gpXdEsnRIUhaMkBqIV0GilBCCCkxQ+kcpvHAvsuMNWLwLiuMVLADhxJAwaWCYNAAnBoXyIBFcTIwsQVWYVd3cMD5rmbNZZlfbpjYtk3sW65363p2c8pF4YWUYMQ2BlUFQIghaFoBVBoZlgELTfLApXhgZhprGUxmqWqyG5qGy+t5cQ3tquUWhbVeUdavL2rMrO7RNg7mmNmlBWQRHBI+mI6PoLKFaJMsVivLiGGp6rJrCSIukpkCCE656YD6w93z/kufJ6wHHb8DPe4TfgsW7oHnXA5mn3EhnXIn23lQXKMstkOnkR7/sHHHTK8ojkBoYyg0M5fthOM4BsTf96dd8qVe8iA7ukfauoQ6uwTe9Qp19Q294IOxveZ++cuODixdPOly77g5hibOS0w3CxLLoGBU6jAdC0L0g+MCgGGKsQpKiyy5u1VYP5+vbUwqMLGkWgSpEB1P8/YPd3CC3HL1vOnm6evn5Q2HYMFx8fJwqOUmbl1ej1dbrysvysjms2AA02DHQ5Zyfw3vux3/q+NOf3vzRe7fevgE654t2RYTDCAwKR56kyitPVJfLlZWKtOqkVKNEWcmRl8YK86ncHBovN0aQHycsTBAVxQsLY7l5FEZ6JCkZGyFB4/iYCB46gukFi7zoFPDzc64/O+d50SXUC8X1Qok9UVJ3pNQFIXaE8m6AE657kKHBHF5SQUZpbaGps7BmsKjOWtQwWtjcXdjcWdjcU9g0rGmc0TTOahqHNc39efVdivJGPF/jE5LigU6G4dMJnAKuWpeUb8wobyytGcos6eDKdSFEKTiIEoDFpxeWVLQNlryMj207svqX8fFu8cjD1oX7A6sHAysbqZaR2Kp2RnVbrKkttsbCMFmYplZJXVtOex87uxBOpF5x87nl4RsSQapr6tbqm5jCNCiW7gMn+qHIkGCSfzAZFBbHSSmobhtc2HlQO30/o+8up+WQ1bjPadwRN22JW3Y0I/fm7/yqYmCBXmByoErPE4XniS/y4pfZ8UV8/I8ESRafJ4nOEvinorgnw5gnMDGnIfgPXNA/t/d//6LPWXvfK1f9rlxy9fOEkPBkkUiWmpmXW2pI19ZKC8yxKoOwsD2terK8c9vUfbtt6HB05t7U0sHk4mafdbrc3C5J04fH5KIIqcHk1DhZUZq2JtfQQOXnhZCVIaSUeHmZrKRFbLA4MWUnImI+CKGdRNLOBtDt/eNuwkQBMRpqwUBOn824sGxe7BPohYS0KLI6PkIoxDCSEEQ1IloJCZc6Q+OcA9kuUKEbXOqKELki+G4Inn+oBENV0iVFiqK6itbhvvkNi3Wuorkzo7QqMatUotao84xSdRmdnR5JlgeH8xHBCQHoWDCaHhAci6PJojnpZGFuSFxqGDsvPq1RUNAn004mVSwmVazIdWuisjVp2aKkeIyb3kTh5wdHC0BwPAROgKPJcDQZhiIi0ITQcDJfJCur0LW2tg8ODE2Mj03O901vzUw/eNC691HF+sf5y88qtx91Hz3aevZ0xrY8ONjX2V7fP9Y+uj499fRj88JmTseYuq5f0zHdOLU3e/SruaOPp27fn9o/nNq7M713NLnzcHbvo+U7v94+/Oz20a/u3Pt069Gn288+3n/+4cHjh7dv39uxHS1NHoyO2trHBgdXx3tt1tqB/uTsWrrQSJC2xGUMiDRTyRWLKZUryZWrkvI1oW6dV7HKqZzlGIaEplZFc1VKY1ZSjUSkk8VlyyLEQn8C9UYA7vQt2Lvn/d457f1t9th/h755eXkvT1sbDIa//yhgW1sbk8n8w7snjx07xmKx/v5l/LFzUlISHA6PjIz8wQ9+8FfeAQnExz9GA+ZfXYHf/e53b731lkgk+pYlAvERiI9AfATiIxAfgfj4x4eSf2xce1lJW1vby5PpdnZ2SUlJf1ze33n+5QBkWVmZnZ1dfX39X1o7EB//kgxw/6sl0NTUZGdnt7q6+i3LMk8emSYOjRN3qicPqyePqifumsbv1ozdqxo4TC4fi0muwzGKUIR0WIQKGqH0RoudoZyb4IQbIMZ1f/p1P5oTmOEJZfqjeAFBgkCMEILm+2EkvrgkCEEVKSwRFDTnt04Xts1mN0ykVo+mGsfTjVNpVROivHaiWIugKEDhAv8QDjRMjMIr0KQM32CZcwD7ug/NHRaDJgiY8qxUrSmrukVaVs/Ir4nOMuOzmmjpddycBqW+R23skpfV01LywFGxHvDIOF6qRFYgEefG0KQUioBC5xHpLCQu2tEXfvKKxwf2nqeug49fh551Db0God2CM6+A4065Rp90xl9wJ90CxTmBGDe9KZcccQ7O2Bte4Z4wujcyzhMe5wSmXfMm2bvhL7qEX3AKvegU7OCCuemF9YREIELoKBwFgY2EIIPA8GAoMiqaIqYxlFS6MhIvxWDZgXCaHwQPCiTA0fRIgpiRkC6UlcQK0yJiBbBQMhge7g8O9vdHu7uDHR29bjp5uHp4+4HBQRh0LJWYIuKXZ6XXl5Y0V1TqCzQiDh+JCXaDQK54uZ9zuX7OyeGK6xUvf2cKNUIo4iQmJ8mVaVJVtkSdp1Bn5eYW6vXV+qqa0oqqrIISRWaeTJ0lUWVy5aoEQWIsR8qXqqVJGVyBgh6fFEVJColODiEmBkeLwMH0Kx7oX1zw+OkZj/NOWE8E2wsp9ESKPRAiNxjfKYB9w59h706GhIlF2Qa5xszK0mM5WSH8IqyoMFiaHsCWedEFzngBOC4XzS/DiAtCxFkhAjU6LtEDK7gG4t6EiMFhqkhmfkKylqcuZScXEuJUGLwkAMNy8Yu86gpz8glUZOSUtfQV969ndu+ktG5L69ZEjQcpnfdLxh62LD7oW73Tu7yhtIzQqtpp1W3UmjaquY1W08owNQrMTZmWroTsXBiRdNXT09nHNyKaXN/aWd3QocgsDacKwRiKFywChcPDQyIhwVEcaUpNk2V1+6B+Yi+ze4/btMes32HVbwoa1kVNm0VDB7P7T8t6pii5hgsk0Rk87wyBf+7FaWvh2WjBGQL/DIF/lsB/OX8qinsinHU8JO4DNO24f/i7Toh37H3fveB58oLHhYuuZ086OF13DkYFxccnJCpTs4orMnQNyaXN7JwGWXl3Zv14Rd+KeXCrfWxvdO5gannPurDWPjierW2gCzSBuAwvhNIPk0pgliXnWzLLu8NicpBRSiwpjSGrFBY0s7UtjszE4xGM94JpH8DIZ8BUe3+GI0IMiy2JKRzM61mpnl2unesXVYhJagJVlYDj8BEkCSQsGR6lDAhPdIHGOwWynaECF7jEFSF0Qwm8gkUoipomLVFp28pax6p7J7ONDaKsQppEQWBJwmKEGCIXFBQDx3Ej6apwUlJYtDScIKLFq6KoUhCKHJ2gYCYWspVaBFkGp6Zwc1pFRQPiknFR8bSoZF6otQkqt8T6VUHZZEx6Ywg7GxzJ9UbRQGgGFMMOQLEgSCY0iIWLFgkU+VpTc7NlYLB/dNo6smLrW9mdnjs6bN56UrbySZ7tefX+06EHj+48ezA3MzZkqettLJ8cb57dmRn98BPN6BJT2xwmL46QaGKUFam6Vn37YPvk1PDy/MT60vTmyvTm9tT6/uTa0fTaw6n1J+ObHw3sPOvfuzewuzWysjIxuzY3sbM89WB5+d78/vbM3bW+jfmKnlF+hgUvbA5L6aTnjnBLp8UVC9LKJZl+VWbcFtds883rrNq5+Pp+RkMtozmf26WSDiam9KfJGtPjihQB8dQr8OBjtwLfvwJ7zwH2LXfa/6O6P3/+/B8yCPonyDKZzM/Pz9vbOzDwL773AIiPf4IG3HxFBXx8fF577bVvX5xp4q5p8qh66uhFdnwRH49M40fm8XvVI4dpxklWWlMkU4MmpMHCFdDwZC+UwAmScM2HdtmLfNmTeMWTdNOX4gqO9YGxQCguBM0Do3n+wVI/XDI4ShHOLeLmNua3TBe0zmTUjisqh5IrhlMqx1T6cYmmO1ZpDGVnIalJMIIYSZCho5NRRJUPRugIZlzxwN/0ifJDUcLpgqQ8XZq+kVdYTVCXByWVIZMNIbIKYrKenVcv0TbLyho4OeVQItMlEEdlKniiHIEgi0aVkMg8Mo1DpCegwwgu/ogz17yOO3idvAY6djXgtDP2Coh6Axp/GRR7whV/0jnqvDvxhl/MLb+YG14keyecvTP2qifOJYDsAY/xRDBcA2Nu+JEcPKIuuuAuOAdfcsZccce4gHBgdHRoNDOCwowgxYRGEUPCSbiIGBJVRKbJoklSXDgPjYmHwil+4Chf/wh/CAGBig0J4+FJclRYvD8K7+aPcfNBevggvP0QLm5+N5zcbzi5Ort7+Pj7oVAIGpGQxOdpMzLrSkubKiv0RUVSvjg4ONITDL/u6XPZzfWml7sfNCA8MkImE+fmZpdqtcXlhqJyU762trTcUGU0NjU3NTQ2VpvNpRU6TXl5fklpRl5BkjpdKE/hihLlivRkVRZfnMxgJRFjkiPIKSFEOTqSD8HEXPcMev+i18/Pel50CvZEML0QfE+EyB0ucoUJnQK4N/wTLrmRwGEiUU61rLg+PlOPZKUjublIfg5coPaKEd6MSrgUzHCnqCDsAig/B8HPQHHU8JhkjxDRdQjvJpgPCkkOi81iSDRMeVEMLxOKZXoFUFx8oi47oS5c97vmBpKr07WNnSW9tsyureS2bVH9prDpIKXzXuno/ZaFe30rB71L62ltgwxDC93YSjW1UmpaKDVNMdX1vJrGjLYuZnY+kkK75evnDgJHkakNbZ3mlu70okoyOxkemeCLJsGxpIAgPCiYwJGra5o7VrYP6yZ3M3p2uE27zIZddv2OoGFb1LJZOLw/ufe4pGOMmF52Npx9Aht/IiT+VDj7dCT3dBTvNJ53Gs89jeeewfNOR3JOhTNPhMYdD445jiCd8Al97xb0nQve7533PHPJ28HB++K5W843PFGwYCo1TixXZRRWFFZbCmv7s0yDRS0T+r7FpsmNzpmdoYXd6dW9ufXd8cXV1oHx1KI6IrsIEprpCVf5BaVFM3UpBZ2Z2m4UQREQKsES1XGyCn5uY3xRw814+QeRce9iacfg5NMQqj0o1hklRsYVxxf2F3Uv100vN88MKyrVjNSE2BRheIIIgReDsTJYWDIkVO4SEO8cwHYO5LvCRG4IgSda4B8qDqap6ZLi5KLGfFNvUW0PP72YIlRGJEjwrCQCKyWSoQAFJcBxwui47CiaKoIsj6JImcIcSoIKjKbTedmitCppdh2KokRQ0yWafpnWKtVOCoon+cUzPO0it3JdaFgTlM3EpLWEsvIC8UJYBBsRxkGE8ALR3AAkF4YRRJCSJcqSCnNbq2VgqG94xjq0vt5nO5iyHh3Urz8pW3quWfy0Yf+J9dH92x8fTE8N9reYe+t0MxNt87vzgw+f5Q3M0vNNMFaqP0UOpSYShFn8rLJ0fW1xY2tFe5exu9/UM2LsHDO0j+s7Ziu7lsp7Vov7Vov654r7RsvbB80d4119q/PzT9f3frn+6Onio/vDe7tm67K6YjwhY5CQ3scosPK0sxLdolS3LK9cTarelJu3xXUb3Pp5RkMPuaEivF4c2RJL7KTGdzHj6niEfK4XlXgRHHzsKuzMddS5G+hvv9/+lksYHR3Nz8//lgv5H9X95QCkSCSys7P7S+evgfj4P+ol8V3d2GfPntnZ2cFg/wX/xRrH71dPPqiZflgz9aBm8n7NxF2z9ajWelQzeie3fkaY2xrNK0ZHKwNxsoAwqReS4wSOvepFcnhxAe0oB3f8Na9oJ3+qBzTOB8nyR3NAQTwwVgzGycDh0jBWFifLVNA0VtQ6lV1vTakcTNYNpuhGVJXWxNJ+bnYTNak8kpcbylAHkZPhUXIwTuIOZ9/wo9q7hl9xDXHxD4eFxMgzdVn6Nn5+TVSyFinSQCXlaJE2TFpGTTXwiurk5Y3ykhoUlesICYmMkTC4aUxOOpkqjaYIiTQBMYYbFE5xA6HPXfc54eB5/Irfew6gk45BDv6U64Hx9v4xHzhHHneKOOtGuOZLu+lLveEVbe8Ueskl+LJnqCOY4AajeiJjPZAMJwj5qk/kJbeQi65BDu7om75YXxQeHRUTTmNF0Zl4KiOSSMMTY0hUZlyCLDZOFk0ShIYloDExcCTVDxTl7Rvu7RcBCiDDELFBWBYYSvb0D3PxCnLxQrp6w918A2+4eV1xcr7q7HTLzdXT1xsGg5Gi8FI2X5OWbSopbdCXVZbkyUSS0BCStx/KyQPk6OnrB0OER1N4oqTM7FxteZmxpspkbqiusRiNPTW1loZmi6Wzu6Wtva6hSW801dTWV1XXFhZrM7ILlKnZCmVWijo3KSWbI0iOYyfT4pWkWFUYUYIIZYKR1BvumJP2PsfO+zi4YL3gCZ5wrgdM6AYTu0DFjgHC6/4ce9docKhAmFUt1TTEZRoQ7DQkPxspyEbw03xjpc4E7tXQBE+6IoCbEyjMhgtyEJwsKD3NHSu5BmHfBLF8g0TBRCWVmRPHzaPGp4KgNGeP8OvOmAtXA844eF9xBslS1Nq6Vm3PXGbXemLbDrdxl9d0oOg4LB05bJ077F/e619czW3p5lbWMfRNtKomcnUjyVRHN9byapoyWns5OSXBdKYrGOYVAMNT6PWWzpq2rvQSPU2sxtCEYFyCF5TqHkjyC6ZzFLmmtoGFnfs103tpfdvc1l1W421Ow4Gw8bbYspU/ujuy97CgZTAyMf8UnPouOPoXEOJ7SPoHwfEnwlinIrmnojinozhnothnI5hnw+LOhsaexdDOIYgX/HCnbkHfu+B18pKvw7UAZyfkrWtgT2cYIiA8Gs/kC1OzCgwvvmlpaLFtbK1rdntged+6cTC9uT+/vbu8u7W8sz2xvNrUN5mcWxfOKPTHZrjDU/yC1WROeWpRR6a2HYRl+6ETQknJTHk5P7s2JrfmRpz0WGTcz0Np7yEpJwOp9pBYN4womFnE0XRru+dbJxe7JsYyygo5KYnxMkVEjBQRLgShBIHBMhBa7OQf5wxiugZw3GF8DwTPB80PxInD6KkxIo0otUqeUyPNqqIJMiPikkNjZASWmsTNimZlQYIFyPBEUkIRPiYtgpoYQZMwxblUVnoAhhnDL5Kk18uy21DkLBQtP6lsIrlyVl4xK9BO8kqn2NoZpm6ZX2Hjl84yUtsj2RosOYnAkEeQRZhwLgzNhiK5SIwompKiUJeY6po6LF3DfX0z4/3rO70Ld6e67u4bV5+Vzf+qfO6z9v3HU48Pdj7dsE72dTfWdpurZ6Z65veXe4+eZHaOE9PLfGliZ1y8czDDP1qIjldGSvJiUsvZudVCTb1I0yAsqOXl1nDy6tmFLSxNe0JxO7O4hf3iofr0yi5D6/zY0rPlgy+W7n46f/cj6/6j7qVDQ+9GavVcbP4Qu2RSVL4g160mlq0llq0mVyzJDauS6jWeeS6mtj2iNjfAFAZugEEtMKwlKLgaB0uPuhEedcY99MTFoKu3sLdcQv6BB56qqqo/fJj6v+lj1P/ArftvXXVUVBQOh7OzsxsaGvqzKwLi459lAe58tQReXt8/Kyvr25dlsD4wTjysmXpsnnxknnhgHr9ntt6ttR6ZRw6Kmhfkmk6KWBtESgnAiQNwYm8U2yUg9po38bIH3sE98rJH1DXvaEd/ijuU4Y1k+gZx/DE8EFYIDhH5h/JC49TstMr8huESy3Rh81Rq1UhKxXCKblStn1DqRhOLe7mZDXR5eQQzG01MhuBEXmiuS2D8DV+KvWuYvRPmhgfWN5CQmFFZYOyRFNZHJ+tQwmK4uBwt1oZKtdEp5eyCmqSKJrWhKThWcAOEwZJ45PiUGKY6miYnUCXRNDExRoAJp3uCgy/e8Dvp4HX8ss9/xEc/8rUAxiU/2jGniA8cw8+4RF3xJl/3IV3zxNs7v4iPVzxDnQOIfph4eKQgmCSDRwp8g+Ju+Udd9wl19Mf5BZGiGCJOUjpHrubIlDypgi9RCCQpfImSK0hhxEvxRA4uIh4XyYoi8EPCWKig2AAYJQBGhcJjEOh4EITk5Rvu5oX18MP6BISAUDhfeJBHQKCTt7eTl4e7r3cANBAfGSVk8wrScwxlJbXG0oqy3CRZYlREHCQg1Msf4QNBwIPD8ZQEtjBFrkxPy87OK8orKCopyNfn5dQWaqq1FTUGU4PeWKerrC7VVur1NXp9TWlpZWFheW6uNjOrRKkqkMiyEriKOI4qlpNGY6XhiBIoNg6Mojl5485dDzh1GXLFDecJi/OAsd1gPBeowAkquhkguubPdXCNhoTwBenVovyG2DQDnJWK5GejBDlIXiaYofAiS1yiBH4MZSAvK0CYAxPkwtjZYFqqYxD3gg/lokf0LdCLr/ILIciIdCWRpvAPpDi6Ye2vQ09d9D5xwf2yk78kOaXU3KjtmszsXJW17TAb9jiN+8mW/dLBvebp/b6F7f55m6alU6yrYWjNFJ2ZqDeTqs0v4qOpObNlgJ+nwzH4XoEYPygqmhrbYOmsaelM01TGStMjmAo0WeYOYbhC6OBwtiCt8YRiwgAAIABJREFU1Nw5Nr/9sGZmN6N/k9+2zW28zW+4I208kHVsFFq3hnbuZtd2hnDV77qH/G/noB+7Y38Owr+PoJ7Axp0KZ52JZF+I5t2MlXqyUyCCNKQ4M0iUgeWn4uITMUQuLDQGjWPgIpl4PCcISUIGRgUhCC/io0CdW1jV0j0+NLs5urQ3srg/vLg3tLAzurA6ubw8v2Fb3NoYX1pr6p2WZdZjafm+mDR3eJJ/sILCLUnXWLK1rf6YWAiGQYhJESkrpfl18bnVt2IlH0TE/jyE+i6CfCKAfCkgxgMrwrKLuCXdup6Z9snZ3vHBzJICjlwWJ5BHUvlIHBOEjAOhWN6w+JvepFt+FGcw3R0a54mI90UzA0K44TQlQ1jIT9EJVRXc5FIaLwsfrwqPVUQzM8icnGhmDjRUgo5UvIiPsWkRtBfxMU6YQ2amB2K5MbxiobpBlN6GJuUG0TWK8hlF5bysYpavneCWTbLLZhLKF3jly4Li2ThlB4FdGkFTMngqEkOKjWDB0PFQJBuNFdPoqrT0koaG+m5L+0hf97S1d/3/Z++9g9tOr7tfZd65k/ImWcfrEnvXWq2kVWXvHSTReyVA9N577yBAAARBgL2AJACCvRexU6xilUiJkqiyktbbW+zYzjr1vjfJde7IeifvO9m9M4m9zt2b0czzB3GI5+D8vsM5+PD8fs8576zc/ORg8qN34ye/6Dr8u95bf7/8489v/eTZwy/ure8szo2NLA4PHd5cO/rxycK7n/un1xne1nKhsYCmyKfIAUwDROTGqMNkW4Th6eH6+3m+XpqtjaAN4g0NJFtHpbuH4e1j+/r4/oSsdsDefq15dO/a3ocb9/9y/f7na/c/XT7+aO7me4NrjxvGj1Rt6/rOXWv0tjP6wNn10Nl539F1yx49Nsfv6/oPxUMz1OEgeBADnARB56HIGQg0Ci92Ya8SaedyqOcvVRQXMcBA1m+ft/+jHr744gu32/2vDR2xWOx/wmHq/2iQv8H7XxwV/w02/gZbRkZGvvWtb2VnZ9tstq/c/hIfv1KWl8ZvlgIVFRWnTp06PDz87cOKb33au/3ZwO5fDO5+Prjz2dDOJ0PbHw3deI6PnbP3vd3XZc4YSeBFUJ9PlAEStEVIWTaI/7yFDYCVXsrOAvLyoKIStLzs1/gIJunBJCOYZACStCSJR+XrbhhZ75y7FZm9HRzY8cZueLq3/T37tYmDQM+uvWVB4elnqBswLCe4wgDAaYtQyhywKK2YnpxHTC8gFJZXumrj7YOrrrZJvidGtHTgbVGSrbvS0cWsimiaBjw9U+GhWYrSmgkm4NkatswlVHo5YidbZOeIbVyJuYIhAyIrU/Ngb6WXv5lS/kYa9K18YhqYn4mQJYH+Jz5eKGCmlvIySrnpJcyUAkpyPikDUAlACbEMI0vmkxkbBZo6isAJxIpLEOxyDJfM0zlq2zsHZ5qig41dfc1dvW3dAy2d/eHmmNlRK5ZbaWwVjaXmiSwqXY1C5eMLHRWVGixehsJKMTg5BMYrBTKKyyggOANF4lE4cipPSmRyQWgsAAothYIRWDSbxzFbTI2N9fF4x+BgJN7TXOOvlcvs5EoxhsjCkBgkOp/OU/IkFrHKpDKY9BaTwWTX671adchsq6vyNQTr20PPV2uwrqmpsaO9NdoZSXRGetvbE42NsWpfi8laq9R6lIYapTksNYYpAhuMJINXyIth7NRCwpVcXGYZHYCWFaNVhWhtPkqfizRmw40ZEF1aERdBNhn9A6b6MYkvgVLWYHUhnKEepw0hZD6QwAXg2CAyL0JXBzeEkYYwQhMEi9wZONnZ4srTWdgLecTMMjoEKyUzjQyuFYzkZRfiL6WCfvRW/umLeSm5IIvL3TEw2jm7Uzd71z71tmLkmWbkqWvqSfvy22M7TxYOHi7uH7WOTVva44JwF7slxu7q5fcNSnqHjf2Toak1c2OcIbcC0RQYukIgVoxfWxiYnA+0xFXOeqEpxFIFy5EaAEqJ5Vkc9fHRpb2jtz8dPngauv7QMvPYNP6Odezdqol33fMP2rcfbrz9XjAxgZdYv5sGfSUV/GfZyB+WUc4guedJkotU5WWGOlNggluCnFBUHx33DC0GR1caRpdaBmYaoiN1bYlwa099c6wuFNHrXHyOopLM43IUBpOnqa1nfu3g+QSXo8eL2yeT14+HZm+OzG7OrGxsHOzv3z25cfRofOnQGhgl8hvKif5itANc4RLq2+o6ppvjMziWhswxakz1gcbh2q4pc9tQicL2FkPyIzL/R2juOTgvGfF8rhLF0KGLLEWX92f3dpa25wLNNUqzVqLV0QVyHE0IxfNAWH4JgpNZVpkNpOXDWMUoLgArKMeLIQQ5he+UGhsM7i5Tdbfe3SE11fPUAZbCx1MH+ZoQV1mHpdmIbA9P2cSSBhhiN1PikJvqhZo6PMMmM0VM3hGjb4IgqCfL2r3Rm+7Yob37wNCxo+/a13XfUncfGbvvmtpuKarnuZoIS+rXWoMilaOCqUYRFBiCjkJ1KFXB+vrOyYnRpdmZzZWF/e3lhz9e2//kcOSD97vv/1X34d8PHP792rufHf3Fk/s/P1q9MTc7Nrw0MnJ0uHX07qNrTz91j65UVjWWCwwlLHUJQwNgmSBiL1rXTLRFKVW9VE8/taoHpQoWs0wlfCdYGcRaOiiuOMPdw/YkJIEhc9ts3cB279LDsc13xjaejm08GVl7PHT9QXz+TmhkT9W+quvaMUeP7LEH9u5H9s4Ta9eBufvYELuv7j0SDc5SR+qgo2joLAS5jIBOlQPayjINkLdQlDfSKefeIoGBfBxa/Nvn7X+/h/8dHF904fmvVHR8cbaGw+H8J5z1+eUvf3nq1KmsrKz8/Pyv1P8lPn6lLC+N3yAF/vmf//mVV175gz/4g99sSuG/uZLY5ic9W5/2bX8+8Hx9Nrj9yeCNF/j4fnzp7WBiS+XpI4v8SJoVSbOCiboStCIXIswC8jLKOJnl3BywoAAuKUErynBqIEELJumBBH0pTleC0+AEbqm7KzS41jV3u3vhJDR00xvfdXft+uK3Qv13G4buVXWsKzxDVHkITrWWE7SleC0AqymASzNLWcl5hOQcTFYhzhWIdY2sezqnRd6eClsn0dlDdsaozm6Gq0PT2O/tnWmZWKap7RlAPJquYIjtAnk1R+RkC21soYUrNpOZcgiGnlGEvJABOpNc/mY67GIBKQ3My4RLk8GiswXMs3n0C/mMpOJf34svoqfkk5NzCdkllVCslC5wqczNTn+vxROT6euxlRooTowmyySa6tjQ4s6dZ/Mbt66t7s+vH6zcuD23ejAwvmR113PFJhJNRuNoZepqZ3VHlbfTYG7g8GwkshqDk2HxcjCcBwAxisorYRguhamSaas05mqpxoqrZEEwOBAKiSETBEqRo8bR2N0YHezoH+tKDERa2jrdnla5ysUR6Wh8OZktwVWK4DgBksDCVNDwlEociYHBcVFIKYWu4Ev1ar3daK6yWN1Wa5XDXu33hSLt8Vj3YHfXYHNzT7W32WCuUWjcKlOtyt4stbUQRU4gSQanaUpxomwQPbWEnA1mF2NkhWh5AVqZh1LnIDVZcE0GRJVexENUWAzeAWPdmMiTQMgCaHUIq6nHqsJwsR/IdQEYNpDIC1MFodoQXBeEaXxlIksShvODXOQrl0q+c6n4jVRQJoAEw4sqGBoQip1RgH7zStF330j//tn0K9mlRkdVW+9IZOZGcOqObeyBfOCxeuCRc+xR68LD4Y0H0zfuTK/v1PcOa+paKPZasr+R1tLFTwxKE8PGvsnw1LqloYcps4GQVDiaIhKrJ6eXBscWAk0JnatF5WiXWyIIvAmK11IkLm9L3+Ty/p3Hn4ztP264fmKfeWAbf9s59tQ38cw/f6/zxv2th88Cnf1IpuJPzuf/0Vv5r6SUvVaMPwtnXCQIrpAlyTRFkcjCqol4hpf6dh6sPP5s/71fHH/0V/c+/Mm99z+5+877dx4/2799d3l1o6Oj02y2sllcPl9sMDma26NLGwc3bj2YXT+Ij22GOxdddVOe0EBjZGR89vra7vHG/uPxhWOzbxTHCZcRfUVoG7jCLtA3h7tmuoeWRDqfylQXCPVG+xa7R64HeqbgOkcSU3yGxHkDyTwH5STBJaU0F8XUre1a7VrZnd5bm78x5A4bBRoWW86m8BlYOg1aUVmOoxQiiOmlqEwQNhdGLERTirG0EiyzBMnDMY1Cba3BHbH6oxZ/t8LaINQFuCofT13DUwXYMj+eYa3guDiyOqbYzxRVsyXVSlOTzNBIF1arrJ1GT7/O3U8S1FEVbb7oflX3gTWyp2/dNnbeNEZv62J3zLG75vZbiuo5rjbCltXoHSGR2kliqNBEFb7CxGRX6w2Nzc3x6anx5blrv8bH6w/f3dr/5O7Qex913/9l9Ogfhu/83eb7nx39xdvHP7m5sjlzbXRweWz09p2do3ffnnz4sWNgscJeXy40AflGMN8C5NnQ6jDFGWf4hpg1w0z/EKM6AZf7s8mKPIaxXObHWTvo3j6Of0DgH1A3TNo6FgOJzcahvbbRm+1jB22j+60je81D2+H+LXd8TdmxrO3eMsZvWuL3LbFH5ugDY+xQH7unjT9U9B0LBxfoow2YKTJ+GUdaJyDGwUX1pcmKsjdhpNdTSGfOEZAIGZWi+zdJ+Hf38l8rjq+88kpVVdV/AmP97q7lKz3fu3fvxVycM2fO/CcMrcnLy3v99ddPnfpqUPxq61fG/dL4UoH/TxR4/PjxqVOnoFDo1/Lp8Y1PE1uf9t34rP/GZwNbnw5sfTy49dHztflh7/Uf1w/ua32DZFHNC3yEVBgAGGUeVJRZzk0DsNIArF9XH4VFSCkA8z8JsgyvB+D0JXgtml/Ft7dXR+ebxvfbZo5r+vZdXdu2thtVHQe1ibsNQw9sTasSR3+lNIxm2MEkPQCnAZGM5ThNAUSQVkBKykImZ8Gs3o7I8Gp157S0JkF1dlPcvZXuBK0qyqiKaJuHAoPzkdkNpr4qE4RHVsqoAgtX6maLnGyBlS0wccTGSrYCjmfnALAX0oE/vFj4ejLofC4+BcjOhInTIOJLAN6FItbFAsblAvqVfOrVPMrVHGJKDj6vmAxFifAVajLNSKaZKqhGLEkDggvKoGwoms8SWCPx2Z2jd+fXbs+uHi5s3F7euX9t9VZibMUZ6BCpqyhsDYmuorB0LIGVzjFWUNVonASJEaMwEixBDkRwi8CMQiAViOCgiRIqU0uhKfEkAQRJhmFJOBqNr5V722ujs/HYYrxnLtp3LTY6O7K0trN242F8cN5X36myullSPYmpQpJkIDQThCJDMSQEjo7GiwhEPV9i0xjdZrvP6vDZHF6bvdphr/ZWB1uaOiMdic5IX2trT12o01nVIFe7FKaAytUid3cSJO4SogxEURVjRZlgZmopLRfKA+AUhRjFc3xEq3JR6my4MgMszShiochGS02/vWlcVdtH1NcRDSGSIUTShyACRz5FnYoSlLBNcJUXoQ+gTbVokx+qcmRVis6U4r51tfjblwp+lFKaVowDY3l4mqIcyUjLR5y+lPdnr1/59umrb6UVas325thQx8RmcOLINnxP2Xui6XvgGn3QNv+wd+lO78xGW++oyOQA0fmZBBZApsf46rjxPml80Ng7UTdxXR/squDri4AEIITA4ynHxpcGhhcD9b0GZ7vW0aUwd8GwBhBWXSFyVDf1Ti7t3X748ejOw4alY/vkXfvoA9fII//Yo5q5467N4827jwPtcTRd/K3zWX9yPuvPrhb9MA9xFkS+jGEnEwWpZHEBS1NhCphaB9tnbszsvb118vHROz+9/e5Pjt/9/O6PP73z9nt7t+8vrW10x3tsdjudwWSz+XqDrbW9Z3Xr9tr2/djgoiswJNJ2kdgNZLZPrm9oj07NLN1a3no0PHusdw+hGMFyoq8YYwOTbWJTc8fg8uL2/cFr21PzB2vrJ/sH72zsPR5c3OHXNBRLNRfJnDMI2jkIKxkuLWd5KbZ+dXS7dXF3cGNhaD6icvBxLASCioBTMHAKEVFJhVeyQER6LhRXgKwoxlKLcdR8VEUOrCIfygDhJTimgS5xshUelryKyNaTeSaG1MlRVnMUXqbEQ2BZKjh2hthHF1QzRT6BPGiuirn8/VZPj6NmwOztk1sjFaIapqYtENv1xW9WRW9aIzet3UeW+LExcc8av2ftONQGFqWWHom+wVrdLNVVkVkaMtPMEdWodO12Z2dbe+/09Pji7PT68vze9vVH7+3tffKo/53POu/+Mnr0tyPHf739/ie3P3t09NHe8trE7Gj/yuTonbt7h+8+GT5+39q7QLI2FLP1eZWKXLKigKaDKQJkZ5ThH2QGhlmBIba/l+ZsIxnriJbGCmeE5u3lBAZ5gUG+f0ARGje1zHm6V2sTN4KJGzXda3U9W/V9O40De6H+XW/ftimxZe7fswzctg08tPU/tfY/NQ/eNw0+MQz+WD30UDS0RB9uQA8TcDMI4hwK3g8qCpQli4BngMQfXMGffhOHxao57K++9fm15PP/3cmLUS7/VcHxX6/0iy++UKvVp06d+ta3vpVIJP7V/rv4wePxvGhp/vnnn3/Z/0t8/LImLy3fLAWmp6dPnTrl8/m+lrCi1z/sWf+4f+vT/q1PBjY/Hth4Do6Dmx8Nbn40sP5+88ihsXa0UlqLpFkRVAukwlCKVeXDxBllnJRiRnIRPb2U/esCpLgYJQNglOV4TRleB8DrS4haJM/JMjdaW8eDg5tNE4e+xK4jcsPSvGlv3Q303G0cemgKLwutvTR5QwW/GstywJ8XOO1QkqEYLsoorLiaibicBjRWNbf2L1ZHpmSBXkZVlFrdR/P00t1xprtL3zoSHFmOLm5zTNWZYAKMLCZzDeznd64dbIGFxTdwRIZKtgJJ5OSV4S+kA7//Vv5rV8vPZWOTShnpEEE6RJRUxr9UxLyQT7uQW3kxh3wxm3QpC5+SjcsrqoDA+QiUGI4SASHccjCnDMQGlDOLy+hAGKeSaeiIzR7c/Xh15/HKzqO1gyebRz9e2n04PLdT3ZCQGvwUrh5XqUBXSNEkKQzNB8M5ICgbhuCjsRI8SQlE8Qoh9AIQrQzGhqOFOIICieSDwfRyEAmKJuMYTK5e7or4mmfb62bCDVMNkenOsaVr27cfHT/+y4nFvfquQb27lqO0kNg6ZIUaiOaVIWlAFBmEokPRAiRWK5Q5NUa3SudQaiwqjUWnt1ksVR53oCHc1tYai0R6OyJ9zS09vpo2mdqpMAc01e2aQJwo8xTiJeVkVRFGnAlmp5Uy8mDCMrymGKMqRKnykapchDIbKs8AijOKGCiy3lzTZ28aU9f1kU0hijlMMYcrTWGE2FlC12biRUC+Ga31YYwBnCWItdTANa5squTNMvxzfLxY8HpSaWohFoTm4ivlQAQjPR9++mLOt167+GevXzyfnKfW2xq7BtvHNoKjt+yDd1TxY23PPdfw/ba5Bz1zh9GxlXBHgi5R5yEJl8pRuSwRwunhROOSWL8hMVY7tqQJdBA4moIyHBBC5PHVY+NL/UOLgXCfwdGutXUrTd0QjLEcqyEKXe7G/vGFg6OTT4a2Hobm7ljHbluG7joG73lH7vtmjiJrt9eOHvmboyiq8Ftn0//0bPqfXc77Xkb56WLMBVhlEpaTRhDkVcrhIgvPVm9v7G/qW0xMbo8uHI4sH4+tHE+s3B6b3+0fX4rEh3y19Qq1roJCZ7IEeoOztb1/fetkZeNBU/u00hjFM0LF8KpShJHK9YRaRsZn9xc2Hg7O3NY4BxDUmjKCtxhjhZDtEnNr98jaxuHT+RsPVrYebe88Odh/Z3P34fjKniUSx5qdKVTeWTj1HIiRDJcBObWVzlFl7GbD/M2elaX4RIfIwINR4EAiAlpBQFIZBI6YxFehmfICBBVI4iMZCgRDUYLn5MJpxSgekCCGUxQYugbH1GJoKhCOj6bKaWILW+5iyavoYmcF10rm2amCKgrXReN5uOJag73b5Xveqd7qiaqsrRxloELo4RlaamNbNT371bGbjs5btq4jS/cdY/yOOXrb0ravr13UVA0aqrqDzb3W6iaR2iNUBpSGNosz4a6Od3T2z1wbX5qdWl+e291effjerZ2Pn8af/KT9zi+7j/567O4vdj/48M7HJwfvbC2tjM2N9a3OjN2+d7D/7Eli76mxe45gqi9i6rNIskyCNJ+qg8prSPau59nD10/z9tI93VRHM9lcR7E3V7q76P5elr+f5e3leHrldePmlnlP97ovtuntWne1Lvu7N0OJvcbBW/WDt/wD++a+G5bn+HhkG3xoG3xqHXxqGrpnHHpbN/hUNXBP0HeNmvDBo2D0QDF+pBQWKS6qKk3lwy5CqGfSKs9fIlMqLRKJ92tJ3f8eJ1tbW//1Ko5feeGJROLFxJrf6Ynyw8PDF/i4s7Pz5TBe4uOXNXlp+WYpUFdXd+rUqampqa8lrLa5Z9GV9wc2Px3Y+Hhg48OB9Q8GNz4Y3PhwaPPjwY0PW8fuWEKTDMXzAiGMYoJUGMpw6gK4JKOMk1xEv5JfmVrCfPH4YyFCWoJWPMdHgq6MqANUqBFcK00f1Ib7vImlhrF9X++2M7Jpad6wtW4Heu40DT0wBBeElgRb3cxR13PUYaYyTORVw8nGYrgwo6giKRN+ObVMYws1xGfc7ePy2l6mJ/YCHxmeHpan29A+Hh5b7VnZ51l8mWACmMgnsrQsoY0tsrMFZhZPxxHqqGwFksTNKydczAD94ELBj5KA57LRV4qpqUBOGoifUs6/UEA7l00+n1XxVibprUzihQxccjYut6gCCOVAEQIoQgCEcEqBTEAZHVBOLy6llkFYZLq+M7F498nPb558dvDgs1tv/+To2c/2H362tPd2bfuIzBQkcw1oihyBF8MxQjCcA4SygBAWAiXAEeRkqg6E4RdAafkgahmUA0eKcVgVAiIEl7OAQCoQVgHGExHsikoLm1snYoRZyg5NzWB4cHF2eff+2sF7kcFFV7hTbvOyFBYCywAnaqEEBYQgBOHYADijEMgqKOXTuSaB1EimCfAkZgWZzeFKtFqz2+Wvq21qae6OdPZFY0OdXYPBcKdMbVdZa02BTktjP1lZXYAVgcjqEow0G8RJL2HlQyRArKEMrStGaAqgqhywIgsozSgVpRcwECS9rjphCg3LaxIkfR3FUk+1NtIsjRXaIE7uRUpceK2fZK4jWEJEaxhnqoUqq9IIotfyMK9cKP72+aLXL5en5uHBSB6RooIhOTkFqLMXc1/94cVXX7vwVnKOSmdriAy2j2wEhw/sfUeq7iNd7LZr4Lh15n7P3FFiYr0tNizV2+FkVhYMX8IVoZ0udlenOJrQ9QzXjM6ra1qJPHUxmABDVUpkhomplf6hxZpQQm9r01i75MZuENYMwOlx4mpn48jIwtHN+5/3bTwMzNw2Dh8a+o/MfXecA8fuyVutK7eXbz72NEThZP6fnkn5kzfT/vRC9p9eKfheFvg0AHcJTk/F8XNI0ucHexk6gsDOUnhF2jqZoVli7BYboxJ9h0jTwJNXM/kmElWMJbAxeAadJdMbfS1toxs3ni6vPQk1XZNoYujKcD60qghmoHA8oZbR8bn9hY2TwalDlb0XRvGW4j1FaBuE7JCY2yNDq3M3TiIjGx2J5Whiqa9/pW9oOTqyEBya5NaEc5ji8zDquXJGMkwO5tVTq6bk8duhuePuxa3u0X6xQYum0RGVLCxTQubr2Qo3X1NbKfIUwoVYpo2tCnE0DSiGtRQnR9B0aIYOTdcgqSo4WQrGCwBIBpIipolMLJmdIXVQxbZKkYMidJB5dgLDRqTZKQy3UB5S6JrUxkaBwksTWPFMHYlnFZmaAtHrNbHt6u49Z/u+te3A2H6gjezq2nb0DRu6mnlTzbi3Yax3bKU9MeWtT9i8cYs7YXf3VfsTXd2Dc3MTKwvTGyvzuztrJ+/e2fzg3c4Hf9ly9EX34V9N3v/pwQfv3fngeOdkdWlxeH6ib2Nh4uj+za3HjztWTzSt0zhdfTHTmEtR51HUAI4VrgziLR1EZ5To7CbYO3CmBqjMCeBowFIn2hAmuroqHF1k+/OWDoq6cXvHSk1ixxu94e5YdzSv1ER36vsPW0buNQ4f+/tvGrrXDNEtY/zA3HvP3PfY2P9I23dLnbijiN+RRHfYnX3EVn15OB3adgndlQIKZhYaS7K42By8JL1UnJkv4Aq8Wn3D15K6Xzr5Nwrcu3fvBUFyOJx/86uv6+WvfvWrFx/R29v7ZZ8v8fHLmry0fLMUeFGo/8r/fn6DQF/i40t8fImPL/HxJT6+xMff4Ovjm7blgw8+ePEo5O+OIMFg8KlTp4LB4Jev/SU+flmTl5ZvlgIvzpo9efLkawnLn9jpmL4/uvnB+I0PxrfeH9t8b2zzvfGt9ye2Pxq/8VH3zH1P67zQ2EbiV6PoNnilGUTUFSFlWUBeSjHjSj4lpZjxvw7QYBTlBE05SVVWIQdUiOFcLd3gMTRG64YWInP79aPb/p51V8f1qva1+r6bneP37PUzWk+vpipmqI4rHRGOOoxjO8AEZRGUm1VETM6CXUop4cpsrnDM0TygCvXyaxI0b4L2/P51gl7VrW4ZrRle7l7aFVeFinEsEJGPo6vofDNP4uAKLWyejsPX0NhyXKUQAKdezoZ892z261dKz2XAL+cRUgC0DBAnGyK8XEA9l0U8m4E/m447n46/kIHPKqWBcOJKvoUrc/PlHqbAhiXJgDBmCZCaByDll5ERRHFN89D1m++s3Hx2/dY71w9/vHb7vbXb783vPKrtGJOZ6kgsHYIogWD4UDQfCGOVQ5jlYGZpGb2ohJJXSMwpI2UDK3LKyCUgJgQqwCEUSKAYWsqFlDPLwKRCGDILVZZKzLtKT7/CS4ZZcKpmV8voTGyCSdLkAAAgAElEQVRqNzKyawv1KFwhkdnD07npkmoS20dkufFMK4amLkFwU/JIZy4hy+EsBI5ZCEBk5ZTl5JaVlyO5HInZ5PRUBUJ1Le1t8XjPaP/gdHd81Fld7wq0VjdEqxpiNIm1BMnGM/RoshYIlxQAeMXlYgBYkZHLupxGOZdEOHMFd/oK5vQV1Okr0HwoT2BpVNREhb4IwRQgWmpJ1toKSwCjckFERgBbBZYYERo7yujGmHwYvR8mdecQ5ecKK159q+zVN0peO1eeko4HgfhEnBIKZGVnIM6eyf7edy7++Z9fvHwlV6awBpsHWvrXgv17zp4DTWRf13XgSNxqGL/dObHfObTcFOlX6u1EGhuEJoAYDLhWUVHrFrQ2GOOx4OiEub6ZrzXSeUKdydLc2ja/sNQ/OF5T12601+vtLUpLO5BoKSKaUBK/pWm8f/74xvFPu5YfVo3dUvbtKXr2NfEDU+8t6+jN0MKdqe2n1mAMSOD/99NJf3gm5Q/PZfwf57L++1XAqzmoN8ppV9DidLwyGSFJg0myYdICuKwYriqB64vh7kKYuwBizwPpcsslOaXsHEAltlKhd9Q7/R01DYmmrsnV3Wdza488dcNsZQuEUp0NMxcglGSBPRwZmFjcmt+83Te5JTG1leGsxWhHEdIKIVeJjJFQdKl95AZd34rn+8jcaq64RmFoMAe6fX3Tkrr2Yo4yCcFIArHykEq8qEHonTIlbjVMHnVNbEVio2qDhyMyyTU+pb5Oa2wyWDpN9phE0VQOU3JF9RbXkM09yhLUYStMXKmbJbZR2BocRYwi8BBYFhLLpDLlYoVVILMweDoCTY6jyrE0BZauxpC1GKIOizcQyUYSRYcnyZE4HhTDgmJZOLqcLraJjPVqd4+pbsrRdN3RtmVr39Z3bOqa1/X1K8baOUdouq7j2sDMxtC1rfjoWn1kzlM7ZncPBOoGenpHl5am11ZmtjYW9vY27r33cOXdzxru/E3j4S+jd3429/iT2x8+ufP05vWt2ZW5ofXZof3N+VsPjhePH9WM7fP9Awh5AMCyANjmUq61lO+Eq+tw1g6CsxvviGCtzRhDLUhkLmLIQGIrSh8kOSMke2eFrZNq79a3zPn6dhvHjv09e+7OG1WRG+GB4/bJJ9H59zum3wkNP7B17tu6b9pjt12JE1fvQ2ffXWvvlr57XdW+omqflre3CFolFfUX8aHvof3fL9GcLREDEFKx0tujqxpUGjsd3p7q2q8oXH0tyfylk3/5l3/54osvXhDk7+g5SB6P9/82RPElPr78C/ymK4DFYk+dOvWzn/3sawm0qmOpY/L2zO6H8wcfP1/7H83tfTi3//HczU+v7X/au/Aw0LUit3dTJQEM0/H88DVJX4ySZ4P4qSXMK/mVKcWMjDLOv56/LidoykgKAElcTOIjeEqG0WVu7goPz0bmthtG1n2xJUfrNUfzbF18o33kwB4e1Vf3GL1xa02vyt5Bk/iQVEMZWlIIZmUVEVKyoJdSiqk8rdHbYm/s04b7hbW91Oo41Z2gVvVUOjvlDUOevvmOuS25twlcKQaThBiqgsY18qVOntj6HB95KjpHQaRJytHMyznQb7+R8drlkrNp0Es52JSSymwwtxApTS6mv5VNPJuOO5uGPZ+Ou5hFLIDzcGyDxFindTbrnc0yXQ2ZqYGg2MVAcm4JLheAh+B5zrro1Nrx9Ma96c37M1snszcezG8/nF47DraPys11RJYOhheBUTwoilcOZZaC6WUgRkFhRVoG8q2LgOQ8REYpLgtALCqngcE8DEyGKBdBARxIOaMMRCqEIjMQgEvI9DPYi2co5wEqhCBor+2dbOzfqO1a1Xm7JLag0OwRGn1cVZAuaqzk15K5bgLLWIriX83Ff//NspxiAgBEyM4DpaQVpqYW5OaWUak8rcbqsFcHAg3NLV2x+PDg8LXegelAOFJT31XTGK0KdtAF+jI4nco2UehGFFZZBhQAyoRFAMHFq9jXzwK/e7rk1dNF336j8NU3C777Vm46mMgyV0trmwTBRqLTTXBWER0ukt0BV2kAfEEWlVYiFEA1KqTFiLHaMcYqhNxRQJZfApC/c6H01dOFPzwDSE7BAEu5eJQcVELPTIae/VH291+99MPvX756OV8gNnvqesLRJX98yx7d1XbsaCO7luiOv3e7LrES7Bjz1LbyxSosgQxBYEBkEkTMwtjVgnqvLR5pGh/1drSbqz0mu7W5tWFycmRlZX5waDAYbna4Q1Z3s87RCq00AygmtOw5PvbNHW/d+Ulk8cQ5sqdIbMlj2+rYrrFn3zJyEJy7M7b5xFQTK8Xx//BHSb//Rsrvn834b2ez/+AK4FtZqNdL6ReR0hSc5ipckQJTZMJUeXBNIVxfjLAUI31FCF8hzJUPMeWClTlAYS6IRRM56iKjjbHJ5ys+df3g6fT6PXuwhyqvKyM7MuC6PKSkQmiu7+qdWFqf37yZGL8u1DWUoPSFCGsh0gqpcAsMnTXti3WxNSivJh9nKkHrkRUWmsgntbc6usZEgXagQJuD5+ehBCCChiENq32j7t6d1tGdroGl9tZendatkDs8Va1uV3uVs8Pl6HQ5omplAwqhkMvqvZ5hn3dUIgpSK40qdbVUbuNwVZWVwgoih0RgVZI4EqHGbKzSqh18ga6CIsKSeFiyCE9T4MhqHEGDxWqwOCUKI4bCmWA4FYKkInBMAk1C5mjJfAtfF9Z4eh0Nc+62tarOG5auLVPbhqnxuik4ZwtO+pomIgPzPROr8bHNhs5FT3DC5hkM1g/39k8sL8+sr85sby3u39y6+96TpR//NHT0Dw2Hfx2/+9PFpx/c/ejR8ePdhcWp69cGbyyMHu2t3Hp4/9rhI1fvBsMVg4i9JUxzGcdazrMXc2wQVRBn6yBWRQmuTry9FW8OIZVOqNCAUnkIlgaKu5vi6qY4uujOmLF9sWbwoGninr9n3915w9O10zB8v3PmnZ6lj7pm328cfVLVfeyO3a1O3Pf3P/b3P/L23XYlrhs75jRNk7rWYWNnkyGmlHWlc5peI1Z/t1T6ZjkfVKEy1HQvhbvXPeEJb3jAG+77WlL3CyczMzOlpaX/lXrx/PbifPHFF7+7Y+Zut/vUqVNGo/HLcb7Exy9r8tLyzVIAAAD83u/93q9+9auvJayX+PgSH1/i40t8fImP/3/ExxfzI06dOvUSH7+Wb8N/j5Oenp5Tp07J5fIvv/klPn5Zk5eWb5YCRUVF3/nOd76umDonthf2np28/9d3nv7lrUef7598dvPRTw6f/uL2u3+99/Yv5vbe6xo7sAVHWMrwr1uC68vxmhfVx5RixqVcclIh7UX7nhywIB8mLkRKizGSEpywBM+DsxVUjU3hrVf6G6VV9VxzHUMboCpqqPIahqKGqfBTBDaqyM5VesWGMF8TpAjdYKKyEMbNK6fmAAjZhaisPCiGzBfp3faGHnPLkDTUj7O04iwRvLUTb2nj1cSNHWPB4UVjfTdd5YBTxMgKcQVdzZfY+SIzm6Nmc+R0lpREE4MwrKu5sFffyHjtUtGZZOC5NGhSPqEAyoVTdNkgzuW8ivOZv755nUm4lEsGk9UMRbXUEpYaawXKKipHiyMKILDKoiJUQSGiHISvpEvrGuOL60cbNx/t3Hln7957e/fe3zl+9/ruw9b4lM4RJrM1MCwPhGRDUbwyMB1QTgWU0/J/XX08fxFwMa08OReSVYQpKadAoWwsUgQHcsAAajmABCjHFoHguZCyJHDmefCl84iLxVwUzWo31o+YQtdUnhGeqZ6uclCkOqrEwpIGuLJ2CqeWxHaTOBYgXpSUj3v1jcKrmdCsfFhqRunVpIKk5Pys7BICni6VaExGp7c62NDQHulMdMcG2zv7/HWtbl+DzRlUaZwEIq8MSKQx1Ey2vpKuxhCFEDSjEIw7l57950mXvpdy7rWct84CLl5GXE6tOAPRpok6cKoBmnyYxkkQuH0ETi+eHUPzYmhhD0bSh5MM4CXDBOkESdhPY7azCB5mqQKTUlH8o6LkP0+78npSytUcQDmMTCSJIRBafj4mNQV09WpZahokrwCHxIsY4iqZo1NTO6ZpnFe3rGraN/j+CYS4toyiLUZzADBSKRABLANBgUA4BoJlYph6prulqm+qZ3174fBw7cHx5tO7Gz++t/bO8fL9vZnd6yNL030zY33jwwN9if7qmgarp85V1xLvn1y7vn9y9Gx6Zb99eq1mbMk7tOgbWAwMLAUmrrfNbk0v37J6moFo+h+/fvmPTif9wZn0/3Ym8w8vA76djf5RGesiUpaE015GqK7C1KkwbRZcn4swFiCNhWhjAUqfh1Bnw2SZEFEGhJ+LFJKkblvTkD82Ex5Yah5dv3bznf7rd7S1UZKqvozuzcVVFeJ0lTJXS2JkamVzbn2ve2iBq6wthKny4aZCpBVKrubrujxNC9Ud18t5oWycvQBtQVZ6GNIGhTNqaBo0NPfqQh1Wf5O7KhSwBWoMnmZv/UCsfywWG25tiHlsNXJBo0G50NU22RweCPq63Y6eanenwx6Qy7qczpFQaDRc3+lwNhtNCZ8v5na3Wy1NOm29SlmvVDSo1IP+muvxnsVoz3BTa6vb5zPZ7WqTQaYTc9VMupJCUTKYWhZby2KrWWwVh6vmC/USpU2mdUm1HqUlqKtqtdTGnU2j7o45V3TD1XXD3rymqR4TGtq5qoDSHrTUtFfV99lrB22+IYdvpKF1cmB4emllemtzen9/8fD4xtGPn868/Yua/V/VH/5N4sHna+89e/Tx/ePjrbHewcWRvs3Zkb0by4s7Nztmd4U1A2hVqJhpzaVo8mnaAqYhn20GKgIYWzuhKop3dWIszc+7SsmdGIWDoA8Qrc0kZyfJHiHbOxmuuKbpmjO67kvs2jtWbW3XXZ2b/sRB3dDthvH74dGTwMADV/eJO3bf13sSHnq7YeikJrapqekQWOs5+rDU0WhtrA+N+GLbyqZlmjWBplvgBDGdJrFXN0yZqhM0sYMhsTCk5q8le79gx1deeeU/od/h1xLwfw0na2trp06dUigUX76cl/j4ZU1eWr5ZCkAgkMuXL39dMR0++9mtx59v335neGajs2+mNTYRG14aXdyf3310bfvhwMJRY2LV6O9nyOtARB2Y9BwfXwyeSQOwrhZQkwppKcWMF+NnciHCQoS0GCUtxUjLCFIUS0tVOsT2INtQTZbZK6QuuqqGp28QGporhR54hbqCa2ZJnHxlNV9dw1PXsuQ1sAp1KUpYjuIBkaxiECkzDwzB0Jgyk70hbu8YVTYOYU3NGHMH1tKJNbcxq7tVjf2enilrc0Jsq0VRpQiikECR80U2vsDEYilYLCmNKSU+x0d2Ui78O2cyXrtY+MbV0jdTgBczEamFpDww+3Iu8c009Olk5Olk9JlU7LkMfC6EDSZJMTQ1lqrAkMQIFAsGowBLMbkZpdmpxYU5QCy60mEPDA3NLSztrKzfWt44nFs9mFneG5le99Z1SdQuAlUKw3IgKDYUxS0D0UvKqIAyWn4hKTUDee4C4MzFvLdSirIKkUAIFYPhkwgSJJQFKq0oBeAAZahiIDQPVJ4OzE0CpiRBU4DsCrbVa26YNtXNK6tGBeYmqsKO58rxbDVd5BUqO8nsAInpInMtEKIouRD37dN5l9NB6TmQpNSSy1fzk5ILsrNLMRiKgK8wGux+f6i1tSveMxSND3Z09da3Rq2uWq5QA4WRM7PBKWllCBQTV8HHkDlQPAWAQefAAWeLLrxZduYq7nwBPwWiz8Z78gi+y8y2VPVEqeYaUDYDYI3mcCfzuRO5jMF09lA6fyRTMpEtGM8QTGXKlgpk8yDxBIrXi2N2YAl+WLE0N5WQfBF4JQ2cC6MQ6UIpisQGIqgASCXkeR8fJZVjhmBFWKZRbO/Q1Y3rmhaUTSua9g1BzSRCEiwma/IRrCIwAY4iYlBoOLCUUoFQqBh1jZaZ2ejRzYW376y9e3f9o3trn95f+YuTpZ+czH9yfO29o5lnN2ffvrn06Obayf7GrfWl3bWF3a2lBzd3Prx756cPH53cvr15cHBtd3di88boysbQwmrv4vLw4tLS3IrL7gXD8H/yg3N//PqlPz6T8vtvpv/JleLv5iDfKKdfQoqTsarLMMVVmDIVpslC6HKRhnyUvgCtzkcpcxCKDIg0HSLNhCtAtCq2KeZsW6vtO2gcPW6dfJC4/kHz5ImmbppuHkKJ40BGBEyrYWka2vpmp1b2rq3e7Oxf5MhrC2CqAoS5GG2DUb0CQ1dV06y7bQHIrc3B2gpRFjTVy1W26Kp7LU1DgcRU59hc/+D4SGd8NFQ/6queqvMuRcKrkeBqq3epzjbt0c549WtNVSv19sU6y1zAuFhrXgiYr1XrFmst18OO1bBjsdY6X2NZCbuvh9wrwaqVWtf1WtdasGoj5D3oaLzXHz0e7Nnt6V5qb+73exuMeptAKKFz+UyJWGz2+9va2wej0fGmpoTX26w3VAvERiZPwxLq2RIzV+kQGqoVzgZdbY+5bcHSsmIMzcudA1xNM1PulZh8UkuNxBySW9sNVb3u4Hhb19zI+NzK9ZntnZmbh4tHJ9s333ky8fDn3r1fhY/+tvfRZxsfvv34o+M7R+vD3QOzvfH5odjEaG84OqAMxtGqEEjoKeXYS54/+GgBiZ0IXS3O1kbyxCq8CbyrC66vL2CbCmmqcpYGpagmWVto1T00dw+7uk9UO2LqWHLHN72JbXvHdWv7dWfXhq93Lzh0WD9+HBq9W913rG871LftWyL73p6jQOLA1XqNa/BwtD6uJshU+LkGhyZobFnU188rbD0ClplOEghofLszMGL1JYR6H0NqrBRpf/vs/ZIdf3sNfzMPz549O3XqlNVq/fL2l/j4ZU1eWr5ZCuBwuJKSkq8rpuN3/nL7zrOZ5d3u3smWrsHW6HDP8FzfxPWeydX2wYW6rilneEhh76JKAi+qj0CC9sXgmfRS9tUC6tVCWnIR/cXw61/jowyAUpZhVOU4JZKuJ4sdPEMNQ11NEtuJAidTWSe3durdCaakBoSW0gUOgdIrVPm4Cq9AG5RZmnBME4ykwFCUWLIUgqRn5oKKwbgKrtJWH6vqmtC2jGJMTShjG8oYwRhbqK4OSTBmiww52wf0/jYsQwknCHEVUr7QyuMbmEw5kymhMSUkmgSM5STnIb97JvO1CwWnr5ScSSo7nwq5lIVKzieeT0efToK/fhX++lXE6WTU2TRsWnFlEZQFev7kIheOZCER9Aoch07gkJFUMoJCw9KlbFnI2zg5NLu2tLO1cWt989bs0o3eoWvh5pje6hdIzVS2ilgpRROEUBSnDEQDlFFLSql5z/ERdf5i6Rvncy8kFeYXo+FIBpEkqiRLUQgmqJxYWooGlCKKyyAF5WWZgLw0QGYuPB/D40icDY7mJUt4Re2ZENvaaAoHhi3F0OV0QbVE3U1mBUhMZyXfCqsQpxZhv306+1I6MC0HkpwKuHK1ICmpIDMTgESQOGyxTmvxVgebmiLd0f5ofLAz2t/YHjdYfRWVopw8+KWrRRevFBaWYkqheAASU4pDgOkImBBayM4oklwFmZNwgQxqWzY3nsuJpor6M9TXiuSzhYKZHOp4Cncumz+fzZ5I4U6mCKdTJbPpgulk/myybC1HvlYgv14snQdIZ4DCIRClsQhpywXKcqEiIEVN4xkVOA4XWsECE7l4loajrJYYwxCCDEU3iu0RfXjS0LKoal7WRTYloWs4TTOQYSrBCcpQVDpLoJBINBKh167ubnYtTrbe3Rn/8P7qX5xs/Pxk/YsHq3/zYOnvHi383aPZXz6Y+cXJ7M9OFn56svrTB1s/ebDzk3vrn91b/fRk7ecPb/zto/1/eHT46YP9Jye7d052bx1v7x/e2N3fXN9f29xZub223Bmu57P5SZkFP7qY9u03k/7ojaRXLud9PwvyZhnlMkKQjJFfhkmuQmWpMFUWQpuH1BegX+CjKhehzoZr81BWQEUNRdEv96w5W0980Xdqez+oG/i4YfQv/In3teFDQdUOVb+Gl83hhQmJpT8yuDG1cntm5SjSu8SS1uZDlAVwUwnGBqd5BYaIs2HK1TIDZPtzMeYipAlH8wo1bRb/gKt1NJyYiA1PDsTiow2h8SrzNZtyqUq+XqfeDuv3wqb9oGm7Rr9do9sLGndrdbsBzU6Nei+g3avV7gU0+7Xag1+v/Vrtfq3uoM50K2Q5DFnuhK136+33GpwnTe7HHbVP401PettOEm2HsZbVluBkwB1zmoImo8NgNZk8Pm9jONTZ1BDz+1rttqBGU6VUOTV6j7UqbPHUW/2NzlCrt63H1zXu7F62ta4YgrNSWx9b2UCTuPk6N0dTxVR6eNqw2hatqh2PxBfHJhdWVqd3d2eO7iwdP9w+ePr26MnPPbu/Ct/52/63P9v6+NHjj27fvrk62NE/E49NJyKJWLsl0FJpCAEF7mKWtZBuKKTrABwTWOJCG0IEZwfZl6is6a+o7sFZ20ASD0RgQ4ntRH0d1Rlh+vtZvn5ezaA0NGaOLLl7Np93GetcdXSueuI3AoP74bGjxqm74Yl7noE7irZ9VduOIbLtiu15ujbMoWGG0sJRVfPUYYa0liZ3cq16W1yp75YIgnyigo1nSahsm8ERM3ujKleIoTCQRV9RuPoP5fOX7PgfkuvrffM//dM/nTp1yu/3f9ntS3z8siYvLd8sBWg0GpFI/LpiOnr00erO3aGJxa6ekUhsONo30T+20D0wE2wfsNVGtFWtcluLQN9EEfmhZAOUbAARdf/aOfw5PhZUJhVSU0sYmeWcXIiwCCErRanLMdpyjBpGMeC5dqbKx1D6KiUeAs/FUTXoq/o8oSmBsh6IkHAlXqk2KFL52VK32BAyeqOVQheOYajkWeh8E54iLi7HlMGIZJ7K1dTj75mxdk6RHW1EexfRHiVa22nOdqG/09DUW9016mxKEDhaOEGIIUm4QiuXZ2AwpAyG+Dk+0iUQHDclH/W9N7N+eKHg9cslp6+WnUkGnUuDns9AvpEMe/0q5IeXIT+8AvtREvLNNExqPqmwnAqBMVEIFhHNpuO5KrbKITNXyUxVcqNXZQlZqgeaY6vjizdXdo+2Dg9u3FqcX4109JjNboncKBDr+WIjW2AgUeWQ5/j4vPpYDKjMKyClZaAuXCo7cz7n4tWCwhIMCs2kUEQ0qhSDYoCA+LJSJKAUVlwKLigtzSrMyyzKASDKyCKp0tPualuzNaxrqqdljk6G0oVmSlBUKV3oUeiiFKafRHdQ+TYkRZpegnv1dNaltPK0bPCv8TH/alJeenoRBIJh0HgaldHt8ofDLe0d8Wh8sLtnqLE9rja6MXhuShrw3IW8c5dyUnNLM0tLc2AlJeQytBJOr8ZW+ADk+jx6VxZ3MFM4mSGZSZeMZ8gmsuWz+aLZHPZ0OmUiibuULVzJ4V5L5c+miubSpIsZgrlk/kKybCNHfiNLsZ2uuJGq3srWrBbKJkv4MQCrEcSuxYhq2RKfnKziofgcBFtIUZgljrDWG4FR1CiGReLoNtZPG1uXVC1Lxq5NReN8paULzq8CUZSICr7OYGkMBnra6ucGOw4WE8/2xz+/t/jFo/W/e7zxfz5e/8fH1//p8dI/P5n/56fX/vHJzP94MvcPTxb//sna3z/d+oen2//4dO3/erryP56t/POT1V89Xv/Vw82/ebTxk7c3Pnq69cHbN95/fOO9B1uPH268fW/tg4OVpYHuoNNGJlfml5SdS8r47vmk713JeS0LeK6UeAXOSUZLLkOFVyGSNKg8G6HOR+qK0LpCtDofqc1DGAvQrvKKBgx/QOzcNYae2Fs+cXX81N35C3fXL91dv7S3/6W+/iO5/x2+8wHTcMBQz2mq5qLDN6eXH0wvHbfFlxiiQB5IUQAzlmCsCHo139BuD4/aG8eBTE8uylCMNBDoPqku4gqOVLeNhroG27ui3aHahFM/pGZPK8lLOuK6vWLXzb7lldzxa45rNMd+9R2f8o5PfuyT3fXL7tXI79fITwLy+zWyez7JPZ/kvl96v0Z2P6A8qVU9CmqehHTP6g3vNJjeabC82+J8r8P7bnfts1jocbz+bnf4ZmdoqyM41VzXHaqr8wd9VX633ee0+vUap1Juk8tsFmswUNfV1TPR2TvWOTAWG53sm1mITq/V9G06O1YNwVmJtYcpr6sUOjgqO0Nuo0gcDHlAZo64AiPdicWJ6YWV61N7ezO37y7ffby78/Tp0L2fe3b+74bjvxl6+unOJ48ef3h0uHe9r6V3srt7LNoWaWuU22tREg+Abcun6nPIqrxKVTHbAJI4UYY6orOD4kvQagcq/b0Vri6MNoRX1VB0Abq9hVkdYwcGODUDgtoheXjc8hwfN3y9266utaroek3/bt3IzYbJ2y3X7jXM3PMM35a1byvat3WRbXv3tr19WVeToMmNbEU1T9XIkDSQxZ4KlY7r41KqGEgtA8ZmY6hSKtMq1zUZ3R1GfyNDqScJpb9N9r53796pU6de3rP+bTT8Lfd+97vfbW1t/bKTl/j4ZU1eWr5ZCggEAqFQ+HXFtHv0eGn95ujk0tDo3PD44tjU9aHJ601do/qqRq7aQ5O6aFIvQ15LFnoRVMuLzuHleE0hQppZzr2SX3kln3K1sDKlhJ5Rzs6FCIqQ0lL0c3wsRavBRB2KbqaIPWx1kKMOk3jVPHWLxTca6liTGzrBKJVQGVIYGoXKGqbYKTWFXfWDbFWAInSy5dUijZ8vd1CYMgpLKtY6gl3DzcOLtQPz8lBCXj8iDY/x/D286k6xL6ILxwLxqUD3OIlnhBFESIKYI7BweAYaXcqgi2kMCYkmheJ4qYWY75/L/cHFoh9eAbyWVP6jZNDpVMjpVMjryaDXrgJ/cAX4g6uQ15MR5zKwOUVEGJhWieULyRIdU1kl1EUs3rHaplxlN50AACAASURBVNmGtrmmjoWWzuWO+N7Q5IP5tWdre+/cuPVoa39zZr69rkHOlwq5UolUr9JVybRuKk8PRHEAEEZxGbUIUJmXT8xMR125BHzzfM6FqwUFJWgUmk4hCxhUMQ5Ng4BwZaUIQCm0uBRUACjNLMjLLMwtR4KpYqXa2+mKrNma17W+awpXjKn0oJkyNE3KEru1pm4KvZpEddB5TjRFmQkgvvpG1qXUX+NjGuBKUt6VpJzU1NzyUgiFRFXJtU6ru7amvrkpEusZjg+Mhdq65HoXEsdLyYCev5L/5tWMizkZScD0LHwmUFxA9cOUvSTFCEIxDVQsFslXMiXLScLFi88JcjpbOJPDmclkTKdTp9P4y/mi64WChWzhfLZ4IUe6lCOczxQs/j/svWdMZFmW75tfRvfDSKN+ut3Td9Q9XVVpMAEEkEDivXdBeO+9IYiA8N4HnoAg8C6AsHhvE8gkSW9I721lVnrvq6pr+onqUetJ+T70nS7dV09DaCl0tLTPOuv8Q9rnF+to7xXN3Z/IPRjF3QBwD3/D3wgQrgPFq/Hi+UzReLHIgyzvJZU6GHg9GSoigfhUrEzMtVRX1Lbm4cTFRC1P2ydtmJQ6FgT2OVnnSrl9lqzpB7Ori0kKBKW8ob5hYdyzeWjh7ub+55dX3l9ben9l8cOlhR+uLP10Zek/ri785ercX67P/OXG9H/cmPrp+vSP1+Y+X1v8fHX5+yvLP12a/unSxJ8vjf/HhYm/nJv8j82pz+em3l6ceXl1/tX1pdc3Vl7fWH16c+Xptf1vLixdWRmeH2yzmTVsKiEnJytsb/SevbE796XvSS0B5BLCCplBOfSQHGZELmdfPj+xUJhcVJ5YKIwvkCQUaNNhTSVUP1myIa69q7Q/lzW9kja+ldo+SmzfS2yfJQ0fJA1vhVVPuMbbdOVZunRFalnu9Z0Zm788Mr1p75zD0q2xmdz4PFFqibwQr6eJ7fLqQXmNKwunjS2sSC4QwwiWUkmHsdZvanQZaxxGnd4q5NYzUK34HBc+dZSaPMNL218B2pDjTmiYp/Wsswb2eQPrgoFx0ci4ZGRcNjGvmJiXTYyLBtoFPeWCnnzRQLlopF40MS6amZfMrCsW9jUr53ol95qFd71acKNecr1Rcc2hvdZuut5Tc9tlvzvccX6oe6W/zdVcX6OUy3h8HpVDQFFxaCaNJrZUtg9455YPntl/6OTK4eMHj584dObs3OGzNv9RfeeauHaKpejGca0oqozEleE4ciRLjeFaWeJmtaW/xzk5NjYxPz90eGPs1ObimStHV67c7D/zwrj+Q/PpV0PXvj3y4NKlOyePrC/0NHV72ztc7Y6mJhtTZi1g6NJJylhU+V4oLxrOSySIMlnq/PJKiLIZZezBWPsxZidK1wmVNqBl9WRNE9nYTrL0Eq39ZEs/o8rFrx9StM3qelZMfQc0nfv1PWvVnqN1/uONoycdk2fsk2fM/mO89v1l7QdFHYcUHesy+0yZuRvLlxFKzWR+M4HXguJWlnDKc3kl8ZS8SFRREgxdhGThCRIG11yuqpdZGnC8ciiV9V+eve/cufOb3/xmx44d4+Pj/+Ug2yf+gwoAgcCenp4vg2zj45eabHt+XQpwOJxfcE/Ua7ceX7xy/8Tpm8trm77RNUfHmNbaUyptJHAtMKoWQtEimSYspwrFtIAI6gKMLAchSgeXJRayo7PIoYkoQAIyJBEJTMHszcDvyyEnFDCSi9gpIG4KiJsB5eeiKyBUNUlQy5A2w+kmitCuqBy29azzlb0ZIBG1zM4W2clcM4YmY4mqtA1uqrgezbMShbVCfbvRNtjSM9raO9TtGvVOLPpnVz1zB3onV93Lp52LZ6r75xRN7orqHlmds2FgztY/h2Aos6CsHAgTv9WxUILFl2KxHAyWg0Bz8kpokUnQfwtK/VdAxm9Ds34LzP5dRPbvI7P/197M34en/j4s+fehKf8WnvlVVAEgAVKUi+YhaVVsca9UP2WsWa9t3GxuudLZcbWn42pf19X+nuuu/nvDw48npp9MzH43NnXTN3S0s9Ol1xmYLDGDU1EmESnNPLkVxVYkgxkJeeT4DFxiMjpxHzQWWLg3IOOrXVFfBUdFxmdm58JgECIeQYcVYgszIdlphenpucnpWfHpaZFJceFJ0fE5ySAKlaatEzkmKxrn+KZxjsqJ41aCcAIwvpTO18s1bRisFo5Q4UlmMFIak4r97df7goCZ4XuzQoBJwSExgJAIIHBr8x5QXkEZg6OVaGpN9c22jkHX6ODQpKW5jVWhLoBS98YW7Abu+yoiKCgrII4YWqCMQTclkZ3JjOEk1lQibyGRv5LAW45izIUQx3fTp0IZ00DqZBhlGkidjWAsRDEXohlz0bTpSNpUJH1yL2Mqij4VxZiOZs/Hc5aj2GshzAO76Mvf0Bd2cRbCeHPR/Kkk/lhmqa+ANwBhdaBINjS2EkuuZXLtMn6jKQtfXkQ0CjQehW1O6lji2edkHQuixima0g1nNsMolVSOYdI/eHdz8fHV9de3Dn64s/r9ncVPN+c+3Jj9eH3LPl2b/XRj9vOt+R/uLP54Z/nHO/u/v7Xy6ebKxxurH6+tfH9p8fOFuU/npj9vTn5/euL7k+OfTo1+PDP24dz4+wsT7y9Ovr009eLy1PPLU68vzzw5PX77oPfMZOd0V2WjXsDAQ/ILcmPSs0PSikNy8YBC1p4cZnAOJzyXty+/NCGfl5zPS8jjJeTLUoprigheYsVhgfWupPGppPlFhf1ledPbctvHctsPFQ3fi+rfi+qe8y23WZpNsmSVIpqQmKZ7fSdHZy/4J083tM+g6ZZ9WZy4fGEaRFpM1NPEjVJrn8TizEZrYwtECYVSCKWGp+jT1Q3LDG0VIp2QzpQTUSZskQ2T1YZO7sUmDpCSh5g5U3zQkhh1SIU7oSdsGgnnjISLRuJlI+mqkXrVSLtioF3Sky/oiOd1uPMG3LmtAbRzRsY5A+O8kXHewDhvoJ/T0y8YWRct3IuV/EvVwst14mtNiputujtd5lt91ivOys3eyvV263i9qVWnkbLLmBQ+gy2vaRr0T20cPHFt4+SlY6fOn9k8u3nu4uqRCzbvCW3nenn9DFPVReAasGQBg1VOZCuQbCOaV8WUNmqtHe4Bz9SYd37Wc2R9/PSZtVOXz01dfth5+kXVoWe9px/MXrl1+t7l8zfPHDg439bc3NvW0tnaWmtzsOQ1JWxjNkWdjJPGoysSsKI0qjKXawKJG2BKB0rXjtJ3QJX2fKE1Fl+eRpOCy81IlQ2jb8UYO7D6NmaVU9Yypu1a0Hfv13WtKFqXNJ1rla7jtZ5jNv+x5pFjjtEj1d7Vis6JirZVScsxecsxadMC3+rEi/QoXg2S3YIpbUXwzUVcVjwpPhQWHVyUmgSGQNBUGq2cW6oWSI1ChRFD50MI//U//xERETt27LDZbL+uZ9L/H7JZW1sDg8G/SAvHkJCQ3t7eL296Gx+/1GTb8+tSgM/nYzCYXyqnJ88+PXn2w4OHn4+f/tYzvKGvHCSyrBC8BoTXFuC0xUQ9jG7GsKvQLCuMqi/EKXIQFelgflIhOyabHJaECklAhCQgwpKRkemY6GxCXD4loYiWBGIkl7BSIZwsZFkRUU4ub+CpO+EMM7ncrqgabnQe5msG0yEyIt9BK2/GswwIUgWj3KxtcNPlzRhBHVbYIDT11nVPjy+eHJ4+MDSxNDq1NL10YPnQiUNnLh++eHfxxPWOof3GZq+kskte42x272/1raFY2kwoOxNMx9BkhC185GOwHDSag0Cx80uo0SnwP4Rm/TYk6/8Kyf5NWNb/DM/8fUTGHyJT/xSRuCsyOSQ2Kzq1JC0PWwJlyMm8rnLpvLnylL31dl//c6/3td/9xjfwytP30tP7wtP70uN85Rl45Rp83ue839F+palhw2IclontHLaRzVOWSaQyI09iQTIVKRB2fB4lPh2fkIhKjIEkAAtig9KDAqNDwmNT0vOgYAwVy+CRS+lIOh6EQ+TDQLnFudm5aVnpMWlx4alR0blxeWQcQW0qs/sEDRM84whL3o9l1YAw5VA8ny3QaYwtGIwSClPhiVVgpDo2jfC7b/YFhmaEhmcGhyYEhEQFhgIBwJCIiNDM1BQWkaoqV9YaGlptPUNDs8NTS1WtXVyprgTDTMgoASYlADIA0diAfFU4sSueM5HMnI4hTYXSFyI5KzH8g3Hc5WjqdAh2eBd9LoSxEEqdDaLNhbAWI0pXYljzkfSZcNpUBG0ygjoeTh4NJ4+EU0YiqGNRtKlI2mwYZS6IMLkTN/Y1cXwPeTyYOhZGGdpL9uyjDCax3QXMvhJKO5TegWN3sFj28nQSp4isK9e6lD/jI6dpVtY2I6kfZ8o8SEYrmlrHFVQdWRj6dG/t/b31j/dWP91d/HR7+sPNibc3xl9fH391dfzl1YlX16be3V74eG//x7urn+6ufbp74NOdAx9vH/h488DHK6sfLu5/f37xw9nZD6cnP5wc+3B8+ONx/8eT/g+n/O9O+16f8b3Y9D8/N/T84ujbC2Mfzo19PD3yeMN9cszRZRWJuGQIApGQD4/IJwTnM3fnsINyuMBcXkweLyGPk5TLis9hJRWqshFtKM4yR3dDZn9X4XgpcDznO56VNr0qbXzHb/gsqP8orH1VVvUtS3+OIj+AE44RBS6xccQ5fGJ07rxv8mRt6ySKbtqXzY7LL8uAScEUA0PSKDZ3Vxi6c1Da2HxxXJEcTG/gaQY1dSN8cR2DIqDDUEJYsRaZW4vJtiFTmpGJraikLnzaAC1riJs/JwIdUEKP6WCndPCzOsR5LeqCBntBjT+vwp9VYk4rkSeV0JMqyEk17IQKe0KJO6HEHVdgjyswx+XoYzLUcRn6hAJzUok9pcKf1hDP6innjfSLZsa1GtbtptJvO0T3nMbzPZULjWa7XKIViuUSXXv30NTS8UOnbhw9fe3kmSvnzl05d+7aysalusHjqvZ1YcMsS9tNKdOTaXwWnU9iKVBcK6asji1vNFS3jHicc+MDs1MDRw9OnDm9cfLyNf/F545Tz+sO3XOfvrly5fr5O1fPXT+3sr7Y1mnv6Gx1tHVUN3bxtc1IQXUeTZtOVKTgZSlERSZdV8CvgskdSHUrSt2KVDtKJLXpLFUwiByF5uTy1GBZDVzThNQ5UJomdnWftnva2Luo715WtS3JmpdUHQesrpM1rmM2z+GWoY3OsUNNQ0vqHp+8db+s6ZjUdqyibpZn6SMrKxG8uhKaHcG1IwS6Ih4xHB64O3/PnuzoJFAhHEdisYR8oaJMpOGWqzHUMhjhv/7yOjw8nEQi/VKT/3+rODabbceOHQKB4B+/64CAgIGBgS/jbOPjl5pse35dCpSXl0Oh0F8qp4dPv3/y/M8PHn1/+PidPveaQt+NoRmKMYpCrLoAqy4iaCFUI5JpQbOsaJa1mKDMQYoyoYKUYk5sDiUsCQWIhwfHwQAJcGAKam8Gdl8OMaGQ+ld8TAGzM+ClBXgJTdJYYXYimBaiwCax+Gx962XagUyYHF9qJ5fZMHQNnCCkC0yaejdH1YYX1iM4lQRBLU9p11R2M8u07DKVubbFNTK7vHHmyPlbo8snmgZmZNXdHFUjQ1Zfpm9rdq/0jB3B8YxZUHZGMRVFFuEoFRh8KQrDRqKZcBSjEEyOTYN+Bcz4fXDqbwOS/zUg6Y9BibuD44GAuITwRFBiHhtM0jGkLbLqIWv78ab2mx3tt3u7brmct/ye2+Mj96cmHk1OPhkafTrofdrd/7il/dvGxhu1VZeqDCfMqv1a6ai0ok/At7O5lfRSLU0opUm4JCkeJSwuZmdmkpKT0YmJsLg4UGx03r7IjNyYNHx2sYzKqZKq7YZKh7m2XmGw8CVqCqccRaCDIMjcrKyMuPisqERoEphDZOrNiiaPtHaUr/exZX1YZlUxUgBF89h8rdrggGMVxQgFhlpZglPuy8D+69d7dwenBodm7AlJ2hka801YxDfhwF1hoVHxCQgEvownNesa2poGJ8ZW5hYOd/UPq8x1JG5ZARqZRyws4mXBtClERwrbl1o6m8Kej6XNR3BWY/kHE8rWEzlL0dSpEPzIbs5yJG81irkIZMwDGfPh7IW9jNlIxvRe5kwMYzKaMhqJ94YhnIGwngCkE4AaDEV7wzBDYdihMKw/FO0BoAYBSCcA2hFc1BRYUBuMaknEt2UT24qp7Uh6G5Fio2UyMSXsMqHRIW8cEjtmOE1zstYZSd0oSzaAZjViGWZeufbgVPerK5Ovri69ubbw5ur06ysjz897n5x1Pz3nfXzW+2jT9+TC8JvrMx/vLL25Pvvm+tyHW0uf763+8O2BH789+Pn26qdbK59v7v98bfHjxdl3mxNvTgy/OeZ/e9z/+pj35VH38yOulye8L056n57wvDzhfXPC//bE8Itjw3fWPIdHO5z2SpVciiKzU8DU0BxKUDYDkMMG5nCj83hx+dyEfM6+PHY6wgRheamKE/yq+2LHO0HLS17LM7bjCbPxGaPhJaP2Dbv2NavyIdV4mag6ghXPo8v8+DKn1DLqmz43uf+yf/pUtWMcSTPty+bE5QuyEAoY3cyU2kXGLoGmPQepjssXxxfJoUwbX+fS1o9wBFU0YikDjqqAl+hRBfXYnEZUih2R6EAmtKITO7HJvYRUHz19qjRrRZR3UJy/Ico/XF5wWFC4wS9a5xUe4OWt8nL28zL2l6bt56WucdL+09ipa+yUNXbyKit5lZm08ldjJa9uOVPX2FvDDvLSDwmyDovzN5SwNQ1+TsPwqbgDBqmroXphaGRjdePosQtHTl09cvb2sQv3D5//burQzWrnYWXrSrltim9xcmTVTK6YSuEQGFJsaRWxorFM01JZ3zk55J6fGJyecB45MHn6zJETV2+4zz+1n3xat3HPs3lr9dqNC/eun7954eCxAwNeZ99AX0ePs6FjUFHXT1G1bOEjQZ6MkyThpKlkVS7XglK1obXtaG0bWtsKVzYWVljiScJ0pgwssSDUNqTOgdS3YLQObu2AvnfW0LOo7dxacy1zLGu61qs9p2vdx5p8R7rGj7kXTvXNHqp2jxg6lhW2A+WWBa7WxVLbObpqNLcSRKxCMmvRfBWIgwsp+tM3GX/akxGRWJQPwZEYHBFfpC2TGrliI4mrwLGkv9TsvR3n71fg1atXX3311Y4dO/7xfY6+/vprj8fz5aW38fFLTbY9vy4FxGJxYWHhL5XT+vHrx87cPXr63tDk8drm0VKJHUHSFqLl+WhFHkZZiNdAqEYUy4rlVGG3Gs+ocpGiLJgwFcSLy6UBk9GAeHhQHCw4HvbXAmRMNiGhkJpcwkwpYaWUsNOg3FyMiC5plFgHkSwLnl9fbhis7VoRaPtzUUospwHPqUZRFHC8gM43qKqdPE0HsdwGZZrhTBOh1MqXNUBxfBSxTGNx9A8vLh6+cHDz9sDUhsnh56ia8GUWNNdIEdWZW8ca+uYRDFUmmJFRTEYQBRiSAI3nItFMBIoOR9KKwcTEDGhAZOYfgpL+bXfcH3fHhoQlZyTkEApgFXB8NZU7IFLPmRqONnZf7vI9HvS/9vqeez2Pfe4HPtc9/+D9IfcDr+vbvt7bbW3XGhrPV1adMBo39LpDFsOqWT+nVw/L5X0VIjtPYKKVivEcOoKBBtPAIGpBETUzF5+Vi80vIoChFAyaQSWwVAy2XVThq6qcdjgWu7oXu3umHK3DtfUuk6VbrW6WiKrLOEomvpwKF3HQKpnQbK2z2tyqan+Z3sNWOLHMqiKYAALnsjhala6lBCvLRcngTAuIKIvLQv3b12G7A5MCAWm7AIlfh8b8KSzy34Hh/x4aGhobXwzFstkSvaa+pXFgzL80P3PI7ZmstTsqDFKShIBXQQmWAqItldabzBlN4s0nshf20RYiWcsxnJVY7so+1sJe+nQYdQLAW47mr8Zyl6O3PLORtKkI5kw0c3offSKGMhpN9EViXEBYDwDcHljSFghqCy5uCyluDwN1AsGdQEhnGLg9tNgByG8IyKrclWnaXVy7F2ZLQtmzsPYCjK0YWVVSLAHhVQxZQ7Wsubes0Uuq9pc1DAkr3QxJN5pZhaWpeGWilRHb0zOup5vjz8+Nvzw/+vK87/lZ95Mzg49PDT48OfDwlOvJWd/rK+Pvb8y8vDz++urk+5uzn24vfrqz+PH2wvvbsx/uzH28s/Dp9sLHG/Pvr8y8OTfx5sz4FkeeGn11fOjFEe+ro74XRzyPD/Y/OTjw9KDr+SHv88NDDw8NXVv2rvi7e+wNcrkaRuDFFlDCsqmh2UxgDmdv3tb769gCXlQ+NxlpKmZ7cfIjNPNNVv0zeuMjatN3VPt31KbHtMbnDNtrTuNreu19rP40UroCF4wjuIP4sl6xye8cOTY0e2Zw9EilfQRBM8Zkc2PzBNlIFZJZxZY5ynUdPLljCx8LRAnFMji7UWBw6+pHaBw9EcOkw5B/w8cm1Fb1seVna0UmtqMS+3AJPmriDDdtgZu6xEldYqYsMVIXaWmL1LQ5SvIMJWGaGjtNi5mlRS2QI7eMFPGzhc+TtmyOCJwlhM0SQmfxobP4sJ+/gXPE8Fli5Aw5aoYWO89OmeNlTZbmjwoho3LiuKlsvqVyebB7aWR0/8La2qHN9dO3187cn9y47fCfqBrYMPTs17aOKavahVIdnkBDkstRPCtR1CjUtdTYOmdGPIsTrulx58aBqZObx45euzVw7qnt+JO6jbves7fXrt+8cO/65vXzS4f2t/a2d/R1t/b213e6xTW9BFlTLk2ThpcmYkTx6IokgiyLZYQrtqqPSLUDqW6Gym2FFdZUuiyHq4ZIK+GqBrjaDlM70GoHt2bA0DNn6FnUdS4pWxcVrft1PYdqfKfrvMfsQ0d6Jo/5l0/7lo+2T0w3e9ZrOg+ra+YFmh6usk5kriHyTCU4PZJmwvKkUDYGWPDVnvSvgjMiEwrzitFEMrOiVGzgio00gZbM15L42l9q9t6O87+lwPj4+I4dO9LS0v63zvpy8B/+8Ifh4eEv/dv4+KUm255flwJyuTw7O/uXymkbH7fxcRsft/FxGx+38fGXeqb8muOkpqbu2LHjH2yH/bvf/e7/denSNj7+mn/67dy2FFCr1b/gvo9l6maFpVdf5xGq2mj8GhRFB8YpizDyQoyiCK8Gk/VIhgXDqcKwK5EMM4igykdLsuHlaeDShALm3gzCf76/joeFJiEi0tDRWfiEAloKiJVawk4GsVJA7ExYGbW8XmLpR7HMGE4lR95maJwQ6nrhNCOCbkFQdAiCGEMQ0rkakcYh1HbSxQ4YzQwialAMI0/WBMWLURS5pqq3w7vqXdgcnN+0De5X1HpI5bVgijoPIy7Cy4hllQxxXSFGkANl5sOZSJIATeIjcSw4mgZHUuBwMrgEn5UNi4rL3RUc/6edkTt3hWcmZkppzOkW+zlP34Mx9/OxwVdD/W98zre+/td+70u/76XL9by363Gr/UFD1a0qw2Wz6pRJccggX9bLp7WKUY16SGuYtNRNG2un1dZRkXqAL23hVlSyy6VULh1HxWFIOCKdwizlcAUysazWYB5ociz0D56emLi2MHJveejB4tDD+aFHc8OPZ0a+mxy+PzH87dTI/emRB1ND90fdt/s6rjXVX6k0H7VUT1ntHVU9ekt/qX6AqR1Ac+oKIOUlIB6DrlOo27KxkmSMqIirB1Er0nKhgJ3BseGpybH5SYn5cUlZ0Ymp4XHxIVEx+xJSoRAcl1Ghl1c2V3d4eofGh6Z8Hl+np6nWI1N78RXuIs5AKnVgL20ogjUTxVmKYS5FUecjSdPhpCkgZRLImA5nz0by5qM48zGchTjuQjx9KoY4HIF2h1JG9lGGY9H9EfBuILQTCO2IALdGFNmBObVBaeagJC0gXhmWoApL1oZlmCLSjaEp+sAkza4kza5k7e4U7Z5MQ0iuJTLXEpVjjMwzRuAaE/gdYFUvt8wux5h0mRX6knIjusxK4NUiKRosWchlMxcHdN+t2+8f7Hm40f/k2OCL067XZ72vznqfHOt7fKz38XHns9Oul2e9ry/4X5zzvrk8/OHG+Psb46+vDD+76H5x3fXqlvfN3eH3305+vD//8dvltzcX3l1f+nxz7fvrq99fWf58fv7j6ck3h/2Pl3ruz3ffm+u5N+/8btn1aMX7cNV/a3no1KR3vKfLoDSgcbyEPFJkFhmYxQjP5Ubk8yMKysIKSyMhujhsRwp1MoO7nl1+Jkt6Mlt1Mk93ush4AWy+CrfcwlbfghvO5FTM5PB8BSwnlNmF47ezZO1yc09Ny0hDx6SuzgOhGKKyudE5gjy0Hs+z8RTtpfIWallNNkIWVyhIAImQ3IYKs1vX4EcRK+AgLKUEUgEr1qPy6zFZdlRqCzK5DZncikhugSU5oAmt0Oge5F4fMcaPixxChw0hQ0ZQwFF05CgqchgV7keF+jAAPzZ4BBc4hg0YQ+8ZRf1s6IBRTOAwOmAYtWcYtceP3OWH7/TBvvbDvhlG7BxF7fGiggeRYU5UhBcbOYQJG0IGjqACRtBBw7gwL3nfICuzrwzhMYnG2psWRsdWltYXV0/6Zw73TR3pmDzSOXGwzTNZaWsh0FhwihBZaiGJG8r1zXWNHbMjrqWJwekx58GDs0c2Tx24dq/zzJOao4/qDt/1n7t94PqNs3evrp870T8xVKZWWu3Ntu6Bqg4PRWnLY+iyyPJUnDgRU5GAEaWQlNkcE0TaBFc4YIrmEklDvsCawdYmksVZbCVYbIUoGqDKZpiyFaNuK6vzWvtXrH0rxq4Vbft+XdcB6+CxxtFzTSMnW0aPdk8c9s4fGVk+NLK0NL1/c3TmQkfvmt7aI9VUm2sb2WV6OEaCJctJ3AoMG7+vMCg8MzAiMyYuNzsLgoIRuTSBmsBRQMnlVKGZJa3dfpL9f6XAnTt3duzYZkE70AAAIABJREFU8fXXX/8jCfzmN7+Znp7+MsI2Pn6pybbn16WATqeLjY39pXJCsoxkQS1b0kwurcHQTVCCpgSrLMGpIEQtgm5CMa1ophXJMCPoJhjVACKoCjDSXKQoA8JPKmRFZ5GAKZiQBAQgAf43fIzPpyYXM5KLWUlFzOTiLXwkC2oqDD1othnLtbJkDm39sMQ8QBbUo5hmOFmNJIgJFDGDqy2T2Sp03WxZG5xuKSFoMUyLUNUOwUnBOIlQ3VbZNtXkOlDbv6prnhQY+7Cl1cVEVTayIgdZASErUQxtCb6iBCeAEQUYWgWGXIbAs2FoGgxBgUNJEBAhNwcZl1i4G5Dwx2/C/7QzND0lQ1HKXfF0X5/3Ptnvfz7f/3yy8/lo+8vRjhcj3c+8XY96Hd866m/VWq+YdCeVsoNS0YpavmzULVWal2qqFqxVswbrlMI4JlAOMcpdBG4vnt1B4XUJZO0yTbNKZ9MaGk3mlqqqQZttqrXlYHf3eZf77ujIi9npZ4sjTxa9D+cGH84MPpp2PZ3yPhv3Ph/1vRzxvfR7XrgGnvR032+236yuuqDVrKsNo9rqFkOL2tjNNvRT9QMIbl0+RFRSzGdQ9XJlWxZWmoQVFXN1cLoIVIxKB0Yhs0AUGIGBpVDQeBwcASsuKsrMgmYXsFBkOauiUmpssTZ6evtHhjw9A62Nbq1liKEaB5WPpLD9UYyRUOYUkLMUyV2JZi5HUeYjiVPhxAkgaRxImwCypiO4s1HMqWj6ZAxtYh/BH4kaDIV0B6EHIlHOvcUtgCI7oLAppKgJmFsXklUVnGEJTNEHJypD42XhiYqIZFV4siosQREUJ9sdK/smTvFNgmpnvOKbJNWeVF1whiEs2wTMt4ajmsLprUllrRBKDRGkYsZy2AlEWjaBj6SbEEQNniQpZfGWnPqHB5oerXc+2uh5fKTv2Yn+15ueN5vep8edT4/1PT3ufHFy8OUZ96uznpfnPG8vD324Mf7h5viba8MvLnteXR98c9P15rb//b3xj/fnPj5Yfnlj/tWNpY93D/54d+PPdzb+fGv9xyv7P5yZfHZg8MGS8+5c353Z/vvzAw8XBx8uuu4teC9OefYP9DosNVymOLOAHJ1JAmbSgNkcYF4psKAstIgfBtJEQO17kZ692Jm9pP2R1IUIxlwkey6asxjLXUngHUjlryZxJqNI3cmUzjx6B5zdgeI0YTlVOJZOrG811LtU1YNgsn5vFjcqW5CPNRD5TaWKDo6kicAxZ0ArYvN58cUCFK9OZHHpbX44tgxShKSAwBWwYgMyvx6dZUemOhBJrfCkFliyA5rkgCS0QKK64JFuXJQbHeZBBHtggX5EyDAyzA8P9SFCfEiADx3kwwT6sYEjWMAQOtiHCvShgv2YED821IUMdqMAXkyoGwVwIQIHYXs8iEAvcsv6UWE9qL2d6H19qL0uVJgfETgM3zkK/3oM8fUIJsCLB/YRY/u5RV41Y8ZuPODtXZsc93nHujzTLb75ztGlrqGppi4nXyynCDREUR1d3iQxOhqa2ueGB5bG+2fG+w8cnFvfPL189duWU4+rjjxsOHJ3+PzttWvXT928uHj8UIu7nywU6hoa67oHLR1erKQmnSRPI4hTCeI0ojSDosxlG4qFNUhVC1rTjlK3gqW2XL45haaIwZZlMBVQWQ1S40DrOjH6HrKxT9w8Xuc9VD1w0NyzputYNfYeqvGebJm61DJxpm38aOfYwb6J1cHJRffk5OTiiYnZs70Dq5aaHqW+trKhuVRoQOMkBKqCVirBcyjxRRHhGaHAtH37srIyQHAwlkngSJG08mIsj1Fh5asaf6nZezvOf0EBEon0DxYg//mf/3lhYeHLS2/j45eabHt+XQoYjcaIiIhfKqdtfNzGx2183MbHbXzcxsdf6pnyK4/zjxcg/+mf/mn//v1f3uY2Pn6pybbn16WAxWL5BXtepyOkqZCKFJAgo6Q8ByYuRMmhRC2WZaUK6nFsK5yqBxM1IIIaRFCXbB2oCnHyXKQoHVKWVMSOzaGEp2IACfCgOCggARaWjPh58TUpIZ+WmE9PKmCkFLGyYWV4rpmvbqGV14oMXfXds2MrV2YO3fTNbWrq3FxpPbPUUCo08oRmlrBKauwTanqw7BoY2Uji1irNg2CsPAcqJPLrKixuZdO0xDZdUT3C1vQh2NUFeHU2QpyHEhWgK0pwIhRNgWcpiWwFni5Gk8vgODYERYcgaFAYFQym5OYT4tLg34Sm/X5X9L/tjkhMzRLyOdOejjtHpz9d2v/jhbkfT4/9eNz/4zHvnw+5Pq30v5jvuTvWdt7VdLi99oC9ZrW2etVUua6rOqKuPqaoXC1VThFLvUhqNwJvR2MbqeQuYemwTrVQV3W4zX6uv+uax3nb33/P73w0MvBstP/lqPPVaM+bsa63Y50fJp3vx/tf+7pf9Lc/72p92dryprn1db3jqbn+tspyQaY9JlMerTRtOGoWWq2jjVV91bUNxiaJvo2s78LpesCc6lxwObiQxyFrtfIWMEEOpqn5mqbGhp7h5u7VxuZD3e0nXD1n/c7zvr7zru5zve2XerqudPdd6u7f7HEe6evZP9gxPtTcM1JpGiyXutECf3rpZAR/LpS/FFK6EsxdBXDWQjkHIjgHYjir8Yz5ONJ4FNYXiveFkIeA9NFIdH8orAsA7QoBtQbmN+7Oqv4mrz4ouzogTv2HJN036eagvJqIFF1gnHxnvHx3nHRPvCQgURqcrgZm6SJSVYBUVXCaNjjDEJJlCs00haZog5I0gcna4FR9aIYxLMsclmX4uti0C10Zga5Og1iLs3XIJFZRNoWI41ix5BoKqVJA164PNL070ffjZc/H867Xp/ufHnO+2fS8O+t9drTv+VHni+ODr096Xp30vDzpeXnG++bCyLsrE++uT725NvH62tinmyPf3xz9fHP8852ZT/cWPny7/PTa7LMbi+/ur394sPHx/sbHbw99f//Q93cPfLi2+Pz09HeHRu8ueb9dcN2f7bs33nFzpPOCt+uws3Oo0W6WGUAgSkIWMTKLGpHLCS/ghxcKgIUCYIE6LL8htLAvpHgIAJ4MhA7vgXl3wVy7Ye49ME8Q1AuA9gPALYFFln2I6ixCPYTeBKZsbWuQh+TTyyslxk6xubeQoA3P5ERklxUSrXRxu1DTzSyvRVDkqSXcmFx6bCEbwbGKLH36BjcEyQTlQSggkAhWZETm1SMzm+ApzdDEli1LboGmtMCSWiAxHbAIJyrMhQJ4kIFeeIAXGuCDBQ3BQ3zwYA8i0IMM8G5VH4P8qBAfKsyLAnqQ4W5UxCAqsh8Z2Y/c24/aO4CMHECED8CBA7CQQWjwIDSoHwF0oqJ6MTE9iPA+eIgbEeyB7/bBvhmCfT2K3DmC3OmF79yKjA0dIkeP87MnNaQxR+XQoNM/PjW6uDK6sOwem6hpapVZmnm61jJdq66qva21a/+Ya21qcHZycP+hpeXNc5OXH9Qf+8668cBx/N74hVtrly5tnDsxtLRQ3d1LlaorLPXiqmamriGDJAaCGFFgRhyCl4gVJhPE6TRlPt+C1bUTTN0EUzfe2InRtSHVdpi8DqWyEQwtBGMXfqvhdR9B2y2o81v7VizdK4b2ZbVjSdOxanZuNAydaho+ZvcdsA3MWltd6hpHudZsrOupbPRqLb0CaU25vLLe0as02LnlVTxRVanMzBBLi0jwRFDu3qyshLyifBgGQ2Ezy6QoMi8XTGQJDeWqul/XE+W/Xzb/YAFyx44da2trX8q2jY9farLt+XUpUFlZuWvXrl8qpxSYJL64bF8uOyF/q111Fri8ECWDU/QEbhWSpoeQ1MV4ZTFeVYxXgQjqYoKyECv7GR/5W/iYSw1Pxf6Mj5DgeGhoEjwiDROTRYzPoyXlM5ILmKlF7ExIKYKmZYjq6BW1ElO3rWd2dPnC/JFbk2uXLI6hCm0zX1IlUdZJNU0SXZu62l2u68Oyq2FkA4lbozT1g7HyXFg5WWATWX0q+5zYNltRM8bR9iO5tUUkbR5GWoCRFG7hYwWWoSRy1GSOksCQYMgCOI4LRjFK4LQSGLUITMksJOzLQP57aNpvd8b8r52RMXFpVBy+q8pwftL1emPy86GRH1bcf94/+JdV918Ojfz50NiHtaGHM87LHseRtqq1esOySbWkkK9IFGsVqgNC9TxHMkoRuMmlfTRuN5vTW17qV0vmK/WH7bXnOuw3+9q+c3W98Pe9Gx146+9+52l/5255725+7256525662l/7ep82dv+tKX5UX3DfUvNt8aaO/rqa9rKsxrzMY3hgF6/Um1ZtFnH6nSDVl2b3lClrpJoGunaVpKqFck2gWFlOAhXxtI1GTsl0galrqXZ4Z0ZnNwcnvpuZPT+pP+7Wd+Tef+zGd/zCc+LYdebId8rr//hgPtSV9d6m22sxdTXq25wixRumsBbwh1J4k4BS+dD+ftD+WsAzkoQYzmQvgxgr0Tx1hIYc3GksSisF4h1h+LdYQQ3ENoBADmCt1ZP2wKza3almb7OqgxINwfEKf+UpNmVbgzOrYxM1QESFQFJisBEeWCSLCBZEZCuAWTqQtLUgWnqwHRdUJYxNMcSnmMNT9EGJWuCU3UhaYawVF1oiiY4RbUzV7sbbglDVMdDarMKqooLFEVwMZ0lrSezbFRyLZ9q3HC3fzzt/vGS+/3Z/penep8e63276Xl/zvf0cO/Tjd7Hh3ofrHZdmWw85as8NVx9dqrp8lLH9XXn7aPu+6f8ry+Of7w+8/2thR/uLn//7cqHeyvPr889v7n4/sHBD9+tv39w8O29tXffrr27t/r2zv7nlxYenZy+f2Dk3qL79mT3VZ/9gst+yulY62zx1tlMEn0JiJqUTdybRY3IY4cXlIYXloXnl4XnqYB5DWEFfWFFw6Gg6WDIaCDUHwD1BEA9QRAvAOwNBTtDix3BBaYYiDUdXV1EqivEGwqx8kKMgF5eVaFvF+i78vGa8CxOeBa/mGRlyToqtN0MYRWMJE6HcGPzaXFFLCTXLLb0GhpcECQTnA+mloDE8C18rENmNsKS/x/4mNwCTWqFxnTCw/vRYW40wIsK9CH2eGF7fNCAYUSID7GFj25EgAcV4EUFeuHBPkSoDxXuQUYMIiL64ZH9yCgnYm8fPNIJj+yHR2zhIyRkEAJww4I98GA3AuBGAlyIYBc80AUPcMP3uOF7PPA9HkTAX82NCHQjgzyoYB8pyl+aN2QReFpqXP197qHhAf9wh3PAWFUv0jdwNQ6hvtVY097V1rV/dODA9ODirHfl8Ori2Yujl76rPfJd5caDthP3py/cXrtw8cDJI/0TE5b2Hp6xVmhp5OnrsSJzElYABDFioKx4VGkyrjyNLMtm6UDlNVh9B8HUgzd2IdUtYGlDsagGLKlFqRoJ+lb8z/hIMDhpJmeFbcTcs2zsXNK1LqqaFzTtK8be9Wr3MZvvSJN3raF/xtw8KLPaWXKD2NisquxRmLpEmiaZwV7r6NdY2wWyeq6oii7U4jjCPAwyoagoOrsgpRBcjCKQmKUCmZYv1XNFemNdV43D9ffP3pubm7/ITtd//xX/O4z8awEyNTX1v3CzP/zww44dO9bX1788dxsfv9Rk2/PrUqCmpuaPf/zjL5XTNj5u4+M2Pv6D+BiVRY3MY0UU8LYKkHn88FxVeG4DMN8ZVjgSWjwDAI8FQYYCId4gsDe4xBtS4gWCnGFFDkCeMQZkToFbcrGVuWhNPlpajK2glVcJtK08dXsuXh2ezQ3PKgVRrBxFh1jXxRBYYARhNpyXWMxIKmGhS82Syh6jbRCGYkAKIHRwiQTxMz4iMhqhyc2QRMeWJW3Zz0tnuhARLlyYBwvwoQN8yN2+rTJhwBAC4EcAvIjgLchDBLgQgS5okAce5kXt9aCiBpDRTmTMIDa+Hx3bi4juQUT1wvc6YeG94JB+MMANA3ihe/yQb4agXw0jdvnhu93QXS5YwCA8qB8BcMIBTkTIADJ0AAEYgAcPwINcmDAXNXGgAtljELbXW9taHM1b3WKa5BojX1HFVjZVGFottR097V3LQ70HpwdXFkdWjx2aP3fFf+Fh9eGHVRvfdZ18MHfh9trZ88uHDrS5vHp7p7iuTWhtZqhqoDxtAloQCWEnoHjJWEEaSZzDVIOEVQiFHWfoJJh6sPpOkLg+k2NIoalyeEaIpBandeD0HQRjL8UyUFrnV7ROWXqXjR2LutYFtWNB17Fm6t2oGjxq8x6xew82DsxZWtzyqha2qkqgb5KYO5SVPerqHn1db2VTv7ays0LVyCq34FnSEjwzFQSPzQXtyy5OLYKXYEgUtkCsNhvrWhu7vM6RJc/Uwb9z9v5re2udTvd3jt8e9vcrMP7z5+8f/7eRHz582LFjx8bGxt88fzvYxse/SbF98CtVoL6+/ne/+90vlVwyRBJXUBaVyYzJZOzLoO9Lp8Vl0tOLSwsx0kKM5OdvWRFOASKoIWQdmKQpxivyUOIMaFlyMSehgBGVQQhLRgESYIAEWEgiPDwVHZ1BiMumJuUzUgpZ6cWcLEhpCV6KYxvIfAtX3iC3dlW3j3QNrXhnjzb3zxganCJNA19aJVTaZJYeRbWLr+nCsCqhRC2GYSqTOSBYKRgnL9N065pnTV1rUvuCuH6Sb3ITyptgDHPRVjVUXIgSlmCEOIaSzNZQ2GoCXYqliFAEYQmKUwSj54NJOSW4tCJsTDbyj2Fp//Ob6N9/FQkI3Jcdk8opAE0a9de7Wx91NT9rqXvjqPu+0/7TmPenufFPI+7H3a1X66xHNLJZPttPJ/s49CFh6YhUNKZSDCkVHrncLVP4pPJxmXxRrTpcabrgaPjO0/NitP/VmPPD5MAPS/6/rE/8eaL3B4/jh4HGPzsbfuyp/76z/lVb46Pmprs225Wa2k1L5WGDadVoXLZYVupqV231Kw11S9VVM2r1CL9skEjpJFKaaKzqMrFZZtRrbQZdk0lZXSnRtSp1I7W2Daf7+Mjc2em1awvrDxfX3i4t/bQ49f3i8McF7/tZ16sx5xN3593O5sv1dceN5iWFeoDPrWPhZKxiuREh68CWDSI4/nzGSDJ9dC9jAsicCWUvAujzAeSZneTpPYx5IGc5jj4dSxqJxrkjUU4gvDsE2g4oagotqA/LrwvLrgxOM+5JVH+Tot2Tqg1M0QRuvZXWh2YZwzP14Zm68Cx9RKYOmK4JSVUFJiv2JMl3J0h3xkt3Jsh2JasCM3ShWXpggmxPojwgVR2SpglNVgLipYHJSmCmGligAeQZQnIs4Vm1+xD1mYx6kri2iiGqJNONTLJy3dP+9qT72dHuR0faHx1pf3K8+82m6+0Zz6ODnQ9WOm/Nth7vtwyqaSZirhafa6CVVJZiG2SMNmN5f712ose2Mdl/7fDUowsrr28ceHdn7dWN+be35j4/WP54f/Ht3bnnN6ee3Jp+fGvm8e25pzcWn24VIGduLA5s+uyHO60HWqyLTVVjtbWtWquMqwIV05OzydFZlMhcZkQ+J7yAt7WAJlcF3MLH/rCC0dDi2eCSiSDwSBDYH1ziB5T4Q0HecNAAsKglJNcUVWxKgpqykeZsuCoPKQUTpLTy6lJ1C0vRkoNTh+fwgFm8EqqlVNUhNXQwhSY4SVCILcuAcTIQPIKwUl7da2ocgCHpkAIwA1IiQxSbkHl1f8NHcGIzOHGLI6HxbbDoHlSEhxDuxQX7MHt8yF1+5G4/ItAPD/YjAD4kwIMMdiGC+uHBPTBgLyKqDxPfT0gZpGS5Gfk+TombVeyk5nUTMtvRSQ5odEM+oDE/uLUY0Ava7S75agjy78Pwb7bwEbZnEBbohAN64aHdWxbWhwzvQwD74GFORGg/GujEx3RT09vKcc06cXNtZZOtobbeptFbKzS1fG2z1Nxe3dDZ39m17O9en3Yd2D+xduLI7Nlr7nOPqg49rNl41H/m0cKF2ysnT08vzte2dctrHDJbL9/cTJJWFjGUiejyKBgvAcVNwvLTSeJ8jg4mrsNqW/GGTqKpB6fvKhbVZ7ANSRRlNscAEdfhNC04fQfR1Euvcokd4/ru+Srnsrlr0dC+pG9fsfYerh48Ues+1Tx00uHfaBpYMDd7FNUdZUa70OgQmVpl1k5VdZemuktT2a42t8n1zWXSKjJHDsay0gqRiTmQhBxIWiGiEEFE03hcqU5b29bcPz44ve5fPP53zt46ne4fXOTxd15oe9jfr8CrV6927Nhx9OjRL0/ZxscvNdn2/LoUaGxs/Jd/+ZdfKqcUqCSugL83nR6VRtubSt6bTIxKISbmMnPg5XnIinyUuAAtLcIpIWQdimlB0I1gkjofLdlqPAPiJhWxYrLJEanY0ER4yM/4CExBRaXjY7MoCTn0lAJmBoibCxfAyAoi10gpM7MlNeW6ZoOtv2VwxjNz2Dm2WtPm4yuqkRQRlCTC8YxcZQtL5kAxLSV4JYyoovEqwRgJkqKVWV2VnctVzg2FY0nWOC20ekniZjjLXERQFKDL8xF8ELoMR1OQmGoSU4WjSLFkKZooBqNKC6H0/BJCLgiVUYiMy4b/CZj6u10xv/96b8CeqCRgHDY5w6/RXO3peOLsetbR/LLF9q618Udv7w/D/a+7W76tr76g1x+RKqZ4AjeL5xJWeJUKv1E3YtH7dPJBadlAGdPFY/pLubMy6fG66juuvjdL458OzXw+PP3D0amfTs3+5dziDwf8n2b7Pk10fR7p+Oxr/+xue9fX+aS9/Ya9abOxfsNWu7+pdr6pds5et9RsW6qvXTCbp+WKcZ5giER3IbB9GEInjdEuFLUpDB36hoGa1pHGtnmH41CX46yr68ao5+7MzHfzy08X979dWvh+aeovi8Pfz/neTrmejfTdHWy70NZwqMo0IZX2sXlNJJoOjRSgiuiELL4KXOFA8Xqh9P5c4kASbnAv0RdBHQPSpgC06UDazB7abBBzHsheiGHNxFNGYjGDkfDuMGh7CKQ1tMgGzK8Jz60CZpoBafrAJPWeFE1gqiYoVR2UpgX8FQoztGEZmrBMXXiGBpimCk1SBCdIA+PEe6LLd8aUfxMr2pUgDUhRAtJUIfHi3QmSPcnywBRFcIoiOFkBSNdGZ6ojM6WBqYrdKbqgtKpwcM0+Um2JoFZKrpDg6OUUEm/FbXt+rP/+wa4HhzoeHu18fqrn9ebAq1MDD9Y6vl3uuD7Vcrjb3C0my6EZ/MIUTmEauySbCy/kY6FCCk7O5zRaDePurpOrY3c3F1/eWHl1fe7drZkfvp37cGfy1Y3Rx5f9T66PP7459d2N6ac3Fp5dWXx8ZvbSfO+RwbqVVuN8o2msxjxgttbJjAKGvKiQkZRFic6k7M2hR+Qxw/M5obm80FxlWJ4tLH8gtGAMUDQbBJoMBI8GgoeDwMPBJUMhIH94iSu8qC0kzxxVZEoEmzLhpkyoMg8pg5GVtIoarqqZJrVnY5XhOVxgFhdMs5RpOuSmDla5EUEqKyEK8zD8PJyQKqlR1vQaG/ogCAokv4QFBcuRxea/4SM40fFXgyS0wOLa4VG96HAvEejFBfrQu3zIb4ZQe4aQQT5YkA8e4kOGepGhg8jQHkREMyqxEZPWhM9pY4B7BXiPnDWkLfNrylxyTreA1ESFmGFp4vQQUXKAMiO4OjegpXC3s2RXP3TPACxoAA5wwgC9MEA3LKQHFtoDD+tFALfw8WdzIoF9qIhudFQHB9ym4nfUWtrtjS3NLTW1drXFITK2qSo7G5q63T09K0Pdh2ZcB9emVk8cm968NrD50Lr+sO7wY8+5pwtnb8yvH/YND+lqGoWGemmDk61rQgtNuRRpIro8GlYaDWXEITgpeGEuSw0R1WDUjq3qo7Ebp++Cyu0FwprcUguoogapaMLr2n7Gxx5mzaC8fcLUu1DtXLZ2LZo791u6D9a5Ttn85xqHzrWNnW0dOmrrm9fW94vNreWWNqHJITQ0CXWN5VpbhaZBrG5QGpo0RrtMU8cr1+EogvwSQmY+Mi0PnpoPzyjB5qPpKJaYKbNKqzrqnJPNvsW/c/b+a4fr7ZfXf6dc/2eGPX36dMeOHSdOnPjyctv4+KUm255flwJ2u/1//I//8UvllAaTxueXRqRSI1PIEUmE8AQsMAEbm0nNKOFnw4R5SFEhRgYmapAMM5Ffh2FboRRtAUaaCRWkgrgpxezYXEpkOi4sCfHXAmRYEjIyFReTTorLpCTlMTJA3AKkEEFRkngmurCSJ6+TGB1Gm9PRP+meOuiaOljT5qGWaZPzcVEZyGQQA8O1EAW1UIouD1GRDxfC8TIQqgLHNGrqhmr71moHj6halxX22YpqP0XqgLPMhXhZLrIsF8YtQvKwFBmRoSLSlViyDEuWY0hyMFJQBKEXgLAFxbDsQkhiNvib8OTf74n+/c7Ib/ZERoVEFcclDup1VzwDLyb8r3wDrwa7X/W1fe/v+ezrfNJWd6vWet5oOq41z0m0/gq1V2X0Ga1DVZUjVUavqmKglNxHhPbioP1k3Fi58Hhjw8OpkU/HV3+6cOinK+s/XVn96drqTzfWPm1Ovz8y8u7g0PtV3/sl34d576cJ/0uv60Z3+8mO5rWOxvnuptmuxtl221Kzbd5inpLIhxkcP5Hmx5K8GIKXTPFxOX6JeFRtmDHbNhzdFwcHvx13P593vVoYfD0/+Hp26M3M2LuZiU9zIz/Mef883/9uYuCRt+dqj+NoU/WMSdMnKq8iU6VQFKcQTMzPRxZlwZDp5IoidjWU3liItafB7PvALRGovkiSfy9pNIQ6FcycC2bNhzLnwpkzUZzZRNpoPLo/EtoRCm4NBbcAC+sicivDM01h6YaQNB0gVRucrgWkawGp6uB0bUimLixbD0xXh6Qqg9NUgBR5SKI0JFYcElMRHCUIDOftjCjdFV22O64iMFESnCQDxIv2xIt+JkhZQKoyKEMTmm2IzVDtTS6objNjAAAgAElEQVTfFSf6Ok65K9EcnGcBoKzJzEoySkCCUfBYAnp+wPTwcPft1e576z2PjvW83Ox7tel8fqL3/lrHvaXOa5OtG13WLhFdBslhZ6cSUhPhifElCXGFCQm5iSmZmfl4ItVkMgy7u04dHHt0eenl1ZkPN6d+uDP54br/5UXXo7P9z64MP7sx+fDa5PObiy+uLz85P3d2pnOlxzrbpB2t0bnM+la1QS/QMomS/Hxm4n/iIzUyjx6RzwzJ5QDylKF5ttD8AUDBWFDRbABoKgA8HgAZDQCPBJWMAEDD4SUeYHEHIM8SVWTewkeYKQOizEPKkXQtXVTHVtjJIlsmWhGewwFmciB0i1DXqbB0/N/svQdwm9e1qIvMPXNySnIzyUlyHMW2ZIkFJAj2DhC99w6QAFFZAJAEC4hONIK9gb0XAOy9ixIlUpRkdarZsi25S7Jl9d4sF72hda+fx4rvcXI17/nMiPMPZ+/1r73+xTWcvb/ZZe3MfDtXksUQ55JFuVSpNs1QZarssld10tliJoGqZDFMPFoJn1jDRTWwkpoYkGY6pJmZ2MxKaGHHtXMjepPBQ2LQkNB/WPDGCH/LuMB/nA8cYQeNcEDDXPAwL9THC2sXxJWnkh1ipkPGq8iSNxkLekqLB+pqRhobhhsbestLarSawhQ2LyGcEe4viAFmw4Js2OBacnADLaSNFdrNi+hmh3azQN3MIA872MsBffc7xMsFe3mhHi64jw3qYwX1phN7zOreKldPY31HS1tDfbujvLXQ2Wot72xs6h31eFbHut/cPrBv7/zKsSMzJ871rV8qXbtUd/DqxJkb24++O720q7O7W2cvVZnLdbVehbmWpbahUwugyfmxnOxwqjSalQ5JzsGkmai5pVxTfbK9XejoTLF3cs0tTEMDU+/mW5qFtlaRvT3F3iZ2dWVUeU0dM67epYq+nWVdO8u6Vip636wfPd00+W7z5DudM2dax45Udy0aSrtyiurzXK25xY0ae22WuUKtL80qLMnVlxuLqq2OGoutMl9rV6QXMBgyEjkFR+Il4dnxeG4CRYQWqIiSAqbSqi5p19b+jeuSn+/Pn+3PCwsLe/7VS8n/jxH47LPPAADA+vr68z68xMfnY/JS8suKQFNTEwDwwv5R0VxjIiknAiaLSJKEJQpD4gSgWF5EkiiRkI5ibCxhcxXO1KwqWZ5bludOVpYyJEV4nhbByIZSlBBSesx3qR+DEliBsYyAWHpQPBOcyItIEsYipYlYxXcTkEo8J4ctMWgs9a76/ibPXMfwjo7h7U3eaUddd4a2mMBNi0AwQpOYcUQJXV7ElNuQTE00ShwDFyKJciJTLUx3mMsHS9t3lHavGhq3F9bNaMoGJLoGdmYxWaTDcbMx9Aw8I4MvKRSnW2QZNomiSKwoEsrMdF4uha6gUvh0Mp1IpCahyW+Exv3HttDfbQn+z22gwJAwBDSxs6r4rR2TN4/ufnB015dHlp8c3vnN+uqXx1Zu7l24vGv6wvbxj2dHTva276utXHbYtuv089mamXTleKpkiMv3MVhenqBfkTZpMO53uz8cHryxNHtvZeH+6uy9PdMP9s9+eXTh4dGF++uLd0/uuPf27gfv7n107sCjt/ffPbz78o7pc4N9RxvrdjvsSybTdr1xp8myUKifyM0bUCn7c5TDhdkzDv28Xb9QpF0yFe5zFJ+sbnq/pfNCX+fVkbY7sy2PltqeLHc9nO25P9F7d6z37njnnYmWm+PuT3sbjtVUzBj1bWplsSQ1l8/L4AhSmXwulUsmUjEEDIwEQfBiMfJIXE44Ij8IavCDOf2ZbZGKcUj6bEzmQoRyOzhjEaSYA8mmwOmzcbLxuGRvFLsrjNkWRm8Kw5WB4bZgiCUQVhSEtIfgSiIIpZGE0ki8KxzvCscVh+McYXATMKHgjZjc1yKzt4Sr/UNVQaGqILASCEr3B2f6h6sDYzRBCVoQRAeCFAYm6QMRpiCU5dkTjCgKR5hCEbpAiM4/zuQXbffHuPxYJZHiYjJFicElIygc2HSv/uKBjo/3+C7s91064rl+svfGid5rR3sv7++5uLv77Ezr3o7SXr3KnszUMmiZRJIIhePAMLQkLB5GgGKZJL40I7egrr5q+4zng+Pz196du3du6tHZkQfvDNx923frtO/WO6O335+98/GOh5/tfXBh7/WzO08sdix1Fo9VGb3FxlaLqaLAXJCmS+FqUDhFAmpj9jEKJ4/Cy8MJiiB8JpBgCiK6g0g+IHk6gLLdjza/jTHjx5ryY0wF0CeBtAkwfQRM7QQSyiOpZRBGKYZdiqSb8FwjP92p0NZmGBpEeTUInh6MzQSjM1npJfnOTlNpqyLHROXL8Lx0NDcDJ8gW5jhybG6tw01hCplEqpLNMPK/m33koBpY8GZmUisD2sKEtLATWjix7dzwLl5wL2/bgGDrcPLWseStY3y/MW7gGBc0wgkZYocMsEP6uBFNKQhzurRAmaVR52ap8rKydLkFNltJQ0P7oG9ke//wQkNTn1ZbBE2Eg4Eh0aBQdCiIEw3KgIINhNgyZmITH9LGjepmgz2swCFO4CgnYIS1dZTtt1HgAIfYgYPsgCF2oFeB6cyT1Ok1Tm2+LrdAk1UoyzSmKu1ai7uhoWuy37druH3fgu/A/u0rx45OrZ/rOvJZ6drnDYeuTb97a2rvce/weFVVlUZvU5kqjPVDUmMtNd0MF2jgKdqklIJ4rjJRkAVPLcCmmymaEqauhmNqYBsbado6lLIYKrckyS3Ugmq2vp5rqGcb6gXWZnlZt7Ft0tm9UNK1WNy2WNy2s6RzrXpgvW7kdN3wqZbxU42DB8taZ3M30keUKXQVWUVV2uK6osrm4pqOkqoOu6vJYCzJztbJJJlctoiMZyOTqHg0g0TiQrHsKAw3HC9M4mejUrVYuYldUCUwuH/OiNLX1wcAANzun6X8cwy+1HkhEXiG9X/z4uwXNiq/EEdfGnkZgecj0NzcDAAAnjx58vyrf0CCFRiSqFkxKAkEL0NR0oksNSM5LyXNlJFXkmeps5S1lzf213WM1XdP1nVOljcOWat6tY4WeV45U6xPIsljMMLQJC4wjuYfTfKLIgbEkoEJ1JAkZiRSEI8TJ5EUCGomiq4i8fMU+eU6V5vT7Stp6LdXd+sdjRkaJ19SQGSlIShiGFWKYqtYaUU0iRlCzgDFs4BR5PB4OpIkS1ZY9CV9zua54o6duoaFgtqp7JJ+ia6Ro3SRU/U4bg6GkUlgZvLE2lSFSZJuESvMYrlZKDXSuNlkmpRC4tCIFDyeCEET/KOgfw2J/Utw7BZwfGhsEgaLb6guO7A08dmxldvHV75cX/7m8PZvjyw/ObTj9p6ZGyuTV5fHLy+NnvW2Hql2rZl1O3KyZuWKCZF4RCQeTBV7xJK+tDRfTs6k1fpmS9NHk6PXds7d3jV7e2ni1sLQ3cXBRzuHH+4evbc2cevN6Zvri7fP7Lr//r7H67sfrc7fmR7+tKPphMu+nJ21kKmaV2VvL9Av6E0zBvO4QT+szx815S+UGBdsBfOG7EVd9uEK14c93Rd9fZcHu2+MtN2banmy2PbtctfjidYHA833PM03+urOd5e91WrdVVrUX6irlmea+GI1g59KYfMpLAaJQcRT0ThiEhYdj4NGEiLCKMBI7rZI2eYYzWtJzq2sjvC0SUjmXJxyISpzPixtFiybBEvGwuXjcamDsbzuCEYrmNYYQnGHYF2hMAsowRCQaPSHFQV+d2dMGKEsHFsMxjpDsY5QrD0MYQyCFGyL02yOyd4anRUYqQaFZgSBFEBwGgisCAYrgsLSgVHqoLjc4IR8IFQXCDcBUdZgrB2Ec4ZiHOGoIjDCEAjR+8UZt8UU+SHtfhRHKM+BwmXEoQSRZE7kZK/2woHOC3u8l/Z7rhzqvbHeff1I59UDnV+sdX66o+3MmHu1xe4xZJaKORY+K49BzyCRxVg8F4UnI0mJeD6Kq0hR5RdXVU5MeN5ZX7x0ZuHOe9MP3x158Hb//dPeu6e9D86OP/x4/sH5HV9e2vPws9UbZxfXF9vm2pyeEn2LWV+RpzdlFKYJcujkdBhKEo8UR6Ok0dgNggzHK4KwSiDeFEh0B1K8AdRJf9qiH23Wnz7lz5j0Z0z506cC6ZMg5kgIrTOYUBpNLYUyS9HcUgTDhOebhKrSNG1dmq4+ObsKwdGHYlRglJKTUaYt7jaWtopVhXhmMp4rxXEUBJ6Kn25KKyjJLHQR6QIWiZLFolm4pFIutoYDd7OTGjeyhUObWJAmdkIzJ6aDE9rDAXo4Wwf424aT/UeSN5J+j3CBEzzQKCd4iB3sY4O6eDG1qcR8ZU5WjlmZZ1dorNJsqzS3WGNvKGsf653e65vd19AzmWeuiIHitwaEBwSGhQHBUFAIOSJUnBSTT0gsYULq2XGdnAgvFzTMCRxn+02wt06wt42z/UfZASPsgGF2wAjHv18M7cxgVaqlhcp0eZoyWaJmCzV8sUFrqG5q7J4eHtw+3L624D10cHHX8WOj6x+0HPq8bPV8y6FL8+9eH9l9qKW3v8hRrCwwq00V9pYxmbGGLNND2WpEcgFCpEtMzoUI8+FSPVZpp+ZXsgz1bHMTw9BAyq9OSrPFpurjU/WUvCq23s3Ru1mGOr61WV7ea+ycdfYuOTq321oXba07nR17qvqP1g2dqBs81jy2Xt+/t7hpQqmvTc4o4irMGdoyvauptL6vqnmgvN5rdDbm6FxylY4rzCDRhEg0Cwqh4tAcGkWIIgjisYJIXEoCIw3KUcMEuYS0IorK+XM66mfJZf4mpvyc5r8EnW+//fatt976JXjyAn04d+4cAAA4ffr08zZf4uPzMXkp+WVFoLW1FQAA3Lt374W4RRTp0ewsBFXGEGYpsk16W2VVfWeXd3Rsemlx1949B44cPnny+Jm3Trxz5viZdw+dPLNy8MT0zgMN3eM5xkokRRqPFYTDmMBYon8Udlsk2i8G45eICoRjQjHUWIIARpWjGSo0XY1h5jDEel66JUVlTc4w8WU6bko+i5XD5uTwU/KT5Tq+wsCWG5PVxQyZKZGkAMZQtoAQW4NhiWg+V6ovLO5yNE05O5b0jfMFNVPZJQNSfQtPXU6VmPG8PBw7i8RR88RaoUwvkuuF0kKRTJciKaRxlCSqiExiUYhkDJ4YjyOGIYlgODkcRo9FMBE4Lp0pqiyvXJwYem/v4uV9cw9WJ79a6P92YeCrWe+d0fZbI+03htuvD3WerS87ZC1czc9ZVGaMK2QDckm/OtOn1fQa87sNBR6jbrLYfrin/bPl+Zv7d97Zu3h7eeLWXP/dqd6HE90PJrvvTHVfm+u5sst37c3R28dmnswPfu3rethWf7HUfkKbs10mnJZLJlWqWYNp0eFaKqtaKquYtlgmCnIXCjXTOWljStFkrvxQY+mFhZFL86NXZwZuTvbdn+75crHvm2Xv45GWB33197vqv2ipPFVtnbNp6rMzTWJ5NkeaQZdKyWIhScjG0skoLAaOQKKQMAwqAYcCI2P8EEA/3GZQyqux+a9hq7fxPaFpU7GZczEZs1FpU+Gy8XDpSKRkOFYymJjcG8toDiXXAYk1AcQqIK44EmkJh+iA8YVvxOs3Qy1b0C4gxhUMtwYgioDIIhDGGo42haL0IIQWiNCC4AWhkNywyPRgsAQYqYgIk4YFi0BAYWCINDAyExiTExhfEAAx+COsQfiSUEplNLk8GucMhRn9E/VvxBveSDD7wSyBOGs4ww5HKyPRQjCdHzbp0V18s/uLle5re7tuHui8eaTj2putX+xpvrjc/OGs+9RA+UqD0WdUVMtZxSKGiU/LZ5NVNIKEiGNhiVBCMpKbyVfprJU1w+MDJ4/tPP/W0o135h++O/ng9EYmoHunPE8+nvrqs8UHFxcffb7j/vnt196dOrbQMtVS3Go1VOTrzOladUouj5KORaZCYMI4hCgaJY7CSCOx8nBsOgilDsKaA0luf6rHnz7hz5gLpE0CqeNA2nggfSqAPu3PmApmDYfQ28H44liqK4ldghKUwdlmYopZoqnKKKxPK6jnZ1Yg2IZwTHYoSs3LrNKV9BlL2lLS89BUDokvJnPlVE4mV1wgzDALlQYsjccmUXIZZAcbX8FB1nCgVbzEWi6kkZVUz4I2sBIb2TGd7BAvJ3CY6zfMDxwSBA8IQvp5oCFe8CQfOMb9bkaQE9ImSCwXM7OVusxcV2ZhVYauKk1XlWaoVlsbXK0j3VN7PDN76rrHcs1l8XCSX1CkX0AY0D80LCA0PigUHx4mTIzS4uPKGfFtvFivIHyADRxh+U1xAybY/mOsgBFW4AgbOMwJHOJsHRBEdYtwlQp+XqYiJTObJtVsHH0T6U3G2raWvunx0bnhztVF39HDCztPHB9Y/9h98FLFygedBz5eeufSwI59NR19eWa7IteYZako65xIM1aTJNoEWjqCn4sU6RJTChOF+iSpBasupevqudY2jq2daWkh6+rgSmeizASVmRmFNTxjA9/UwDHVp9hb06q8lt4lh3fF2rnT3LJkadlpb99T5TvsHjrqHjzUMnrQ7dvlbBxO01YwxYUEdo48u8RY3FHVPFrVMmav8Wboq6TaUqHGwUrXEwRqBEUCQfLxhFQmPY1ElaKIokRccjwhOZ4oglBl2ORcQmrhz+m6n218/Dmav1idhoYGAADQ1dX1i/XwH3DszJkzAADgzJkzz7d9iY/Px+Sl5JcVgba2NgAAcP369Rfi1kt8fImPL/HxJT56X+LjLwwfAQDAf/eNjy6XCwAAsNnsFzJU/UKMnDhxAgAAvPvuu8/78xIfn4/JS8kvKwIdHR0AAODzzz9/IW5JC2sNlX0t/YsTSwdXD719/J1Pzn3yxflL1y9du3Xl5t3rt+/euHvn+t3bV2/f+vz6zXOfXtp39IxvfKetvF2UYUoipUIIwni8IBrDCUfSQ+HkEDgBjEJF4tBJVDqelUrnqVi8fCpTg6eq8cxsLFOFpKdBSeIkfCocK8ZgZBSKkivIS5YWslLz8Bw1R2GmSwxJVAUwhrTJP/6Pr4VGQWlcaWFRta+6d2fNwF5rx05j43x+5ZjS1ivKdzMVDjw/H8tS45mZDEEOLzVfKNWmygvFCp1IpqVzMogUIYHIotDYLJFUlKfT17aXdY7Xds85q3w5BZWClGx7ceWQz3ti9/yVfYtP1mafbh/5dvvIk7nB+2N994Z77w713Rr0nGt2Hyxzrbiciw77lLVoxGQe0VtGtJahHOOAUjOYkT5XoH6rqeLe0tij1anH+2ceH5h5fGjm8ZG5x0fnHx/b/vDo9vtHtt8/tuPh+vKXx3c9WfY9mGy6Nlx/rqf6UFPZQoVjrsI1W+6acdmmrYZJXe5YjnIwTe4TSwckaUMyxVhGxpKh8FRX6+Xd22/tXr63suvh6vKD/cv31nfdeWfl1vHFuwfnH+6ZvzQ5dKjJ3V2YnycUCigsFpbHQadw0UIuJpmJJtNQaDIGicWgYGh0NALhlxC5KS7gr4jXweItSIc/3xMiG4/ImInKmImUjoUm9wezu4DMtmBWa3hyVwKrOQpfAUSXbsNXBtLc4aSyOLQ1KqEQGJu/JabgtXj963BrANIGgpvBcFMk0hCH0UMwWghOC6EY4GQ9jFAAQWbFxkjDwfyQYE5YICvUnwnyYwX687YBRW+EZrwRmbM1VrtxRU2SNRDlBBHLIwklYUhbYJJ5a5J5G6woAGkPxTvjaE4EJisSJw5hp4SO9eg+Weu8ttJ+Z3/nvcPdd451X9nXfHGX+8LOhvNLjR9Mu4/1OiedymYVq1pOq5DRy2TMMgXHKecaJIJUnpDDTubxBKpMWXlx4YSv5uzBsRvvzN97Z/rm8YFrR3ovH+l++PHMk8s7732x487FxWvvT59fHzow0zrQ4LJrclXCTB5FjkeJExMFkXG8SGhKJEIcgZaHY9LCMJmhaFUIPCcYU7Qx+0j3+DHGAhgzwdTxEMpYCHUiiDYVwJjyY04CWQMgWnMYzh5LdUBYxTCeC8o0EFMsGbp6pb5RllvLlLqSaLpwVHYoUs1XVhvKfMbSdoFCA8FRYCQ6DMuAIVgIbAqaKsNyFEgyW0Cjm7iMCh6xjous5SZUCBIqeYl1TGgdK6meDWnixfVxQ0d4wEl+4AgvaIAX4uGF+vhhgzzQKOuNMc62YR7Qyw9rSk5ySrjZOValtkplasi1t+nLeyx1/fbGQbdn1ju9OrZ9v3dsoaK2hUhmRoRFg4HgkABQmD8oOgCECApmRASnQ0IsuLAaWlgnO9TDBA5upCUHjrIDh1nAIVbwMAc0xA0a4L6xsc+Sl+RWcPS5SlG+FpOaTU3JUyiKih1N3d0DUzOTU2O9qzsHT5xY2nHyhOfYR9X7P6tbPes9/MGudy/2zO2yuVuleXphllZlKavqnZIZKjFCTRRJnMRVI1Ly43l58YJ8aKoep3SydbUie6vY2S4pbpc4mpONNZyCUk5usUhXITNWK0w1Yn2F1FyjKml1dk452qa0lf35pd6CUq++fMBaM+JqmKhqnarrnHR3jta09dsqG3P0Vp5Ynl1YZC9rrGzod1Z78qyt3EyHsKBKYnbzClwkRT6SK0PSBWRmCpsrZrBFVHYqlSdli1UUgQJBTU6iCCBkwX/ZdT/L+CiRSP5LzV+ygsPhAAAAOBzul+zk3+vbkSNHAADAe++993zDl/j4fExeSn5ZEejs7AQAAJ988skLcUtla6/uXVzcf/boe1fPXrx3/urji9cef3b14cXL9z69dPvDi9fPfvLF2x9cPP7OxwdPvL+wst7hW9DZm/kyI5qWEY8TJRJTIeTURIowniyIIbKjcLRYPAFGJpLYPBZfwRdk87n5DHoOkawiM7MJbDWamQGjSJNIYhhBgsTJccQ0Ej2dyFQgyOIYlICckk8VaeG0tKBY8ib/+N9vAoUnkLlSraNuoL5/pWHkoKNrt7l5sbBmMqvYJy1s5KQX43n5GIYSS0+n8tRcUa5QVihJ00vS9N/hYyaBIsIROTRWskiVm19R3zy5PLT7xMSut1s9O/WWJhZXZbKWeXp7Du+Y+Xxt4dHe+W+WJ7/aPfl418T97aP3F8fuL4zfnR//pL/3eGvjvvqa5aqKeVfJtMUxlW+ZzNRPiPNHkzNHhOIFteKdauejSd+Xc4Nf7Rz9eu/k10fmn5xaevzu7i/f3/vluf1fvrPv67f3f/vW/qen9z0+Mnp7f8+l1Z73FnsOj3Uu97bubG9ectfMOSzj+epBhbAvhdWbzO0VifpkGUMZWbOa/L0223tdndcW5+8t7Xy8vPur1ZXHB1bvntxz/dyeG++t3nt79fGx1UsLkwdamtrz87L5fA6eSkMyGQguE8FjozgsNImBxVIJGCwWA0EiQxOhm6NDX4nZ9jpmc2T6NmJFsHg4Mn0mOnM2Km06PHU4mNPrT2neSqjbRqwBslti6fWRmNJAdIk/qTqE0xxHrkxA2aIS9cC4wm3xuq1Qkx/cAkIWRSDNcUgDBKmFIXMR8Cw4OhtJ0RJIeRiMGpYgjQnnhQXSQFvwwC1E4FZqkD8LGMD3A4q2gNO3ROa8EVu4NU6/Nd64DWL2x5eEEUvDsc5glD0QaQ9EOoAYVwTBFU9xwNFZEThxCEcUNtKl/Wi1/dpK+903ux8c7bt7ou/Km60XVxo+W2m+tNJ+canl7eGKhYrsDg2nPoPuzmA1qvlteZIOXXqLXuVQp+fLRCohK0/OKdHLfI2G9/b5bp6Zu/P21JWj/Z8d7LlwsOvuB9OPLu28e3n51vntl9+b+ejQ0Npka09tcUG6UsAQY5H8uARuWBwXFMcDJ4lCkbIwdHoYRhmGUYeiskPgmmD0D/Fx+jt8HAf/v/g4EcjsB1GbwnC2WIo9kelI4jghdB0xxaI2NqkMjVJNDS3VDqUUhCHVYISK9x0+mks7BHJNAoYUhybEQPHRccQ4CAOCFcCpIgSZlcJgWgSsKgHZzUfVcRMrkzfwsZYBqWNC6zmQZn6Clx82yg+a2kgYDuzngvq4/wsfh5mbRzfwMcgriGhMhjklPE2uQ62rybI0Fbg6i+oGytonavpm20Z29M/umdrx5sjUUkNTJ4PGio2IiggKjgwMjg0MTgoOIYaG8KKC0xMCjaigSmJwGx3UxwwaZAeOcjZyAw2zg4bYoCFOyMYVNdyt3+EjtCmdV6TNkul0yJRMakpuZqajtKyt2zM8OTc9Oe5Z3TVy8tSuHadOeo5+ULP/fMPauYGjH+5690LH9JKpukGYlS9QFygt5RW9kxJDBSolO4KYCuWqECm5CbwciCAXIdaRlDaerkruaFZXdGVVdKhczXJLtbjQJdRYUzVWWb49TeuU5FplBXZ1UWVxk9dR79U6WzWWhmyjO9tQm2us0xU1WEtaneUtZdUtVfVtle4ma0lxWo5ca9bbSsqLK5qNjialtoYls6UW1KTbmlMKS8mKXCRPhGaxqVwOR8BjcPkMQSpHnCHP1gsz86kpaQiaAEL6r2fjnp2b+e+eMNxqtQIAgD/96U9NTU2FhYUpKSlsNpvP58/Nzb2QweuFGNmyZUtubu7PN7V//34AAHDu3Lnnm7zEx+dj8lLyy4pAV1cXAAA4e/bsC3HrJT6+xMeX+PgSH1/i4y8KHz/55BM4HP6i5gheyEjxM40cO3bM7Xbn5ubS6fQ///nPgL/1I5PJfqa1/w/UAADA33V74erqKgAAeP/995/37SU+Ph+Tl5JfVgR6enp+6uTXP+CoWNckLWxMMzRpXb222uGy5qmq1pmqlpmKhgln1aDB2a3WN4hUpXSRCUXXxKDlwfH8LaG0zaGUbVF0MJwfgRXEkAUJTAGUK4DxeQgBhyDkMERcrlDIYgspxBQMjI+BC3EYGZWhJrPVOFZGElUCoYihFBmMpEjEpEZCGIHhqNeBiZsCEuNxIjQrE06VgxOorwYk/M8/BSy6WBwAACAASURBVASGIfBMhaaowdk8UdG7y965bGpaKKyZzC0dlOtbOOnFGI4Gx84ic7NoPDU7JUcgzk+V61IVuhRpAYObSaRJsOQUMleeojFnVbSoKzrT7C3C3EqSQJuISQXHEFPSNHZXSXdz3WK7+1hXw6fdjZdGGq/ONt9Y6ri74nm0b/jrNyce7hi4MtBy2mVa0ygXJKlTQuGYWDyskA+qM3152f2GwulS1+nennvzCw/Hxr8cHnoy5PtyuPfBaNediY77c90PZjrvj7V8Odj09WDL09HOuzsHbu4bu7t//MZC30WP+0y55YhRuyc7Z06uGpeqhmVZQ5m5o5r8cV3BlClvXq9eLsw4VJTzYVflzaWBu7P9jyc83wz3fDPQ8c1Ay9cDjV/3ub/qrHvYXP1esXlCJTNRMUIsgorEUFFUBprFxrA5GCYdhSMh4VhEEgSaFB6fuC0q9pWIoFcS3wjmBiD0IE5LeNpUlHIhSjkfKZ8MSRkIZHX5kRrewFS+gXBtw5SBsKVgTGkIsSqc0RDLa4Piy6OQjnCkMwLtjMQ4o9G2WKQpEWVA4Qw0ZA49UU6N4hMiOPhYHgklZcdxcEHYmFeitv4+9LXfhvz1N+BN/xG/+TWcf7AAHKeKgutjEguDE/WBUDMwyRoMs4cgnaGkimhqdQytJoZSHUmsDMeVhyKdYJg5BFoATsoIJqWFybOTJjyG93e3Xtnddmt/150jvbdOeK4f671+pOfWUc+1N3su7Gx+e6R0pSFv3CYZNokmbYqlCs2BVtvbg7Xn5zqvLnuu7PZ8trv3412dH650frS3++rJkRunx66uD35x2Pv5wb7PDvdeOT107ezEtY+nr38w98XpmXNrw3M9teWGAj6Di0BSIxIpoEQWCCYIRogCEalBCFkIMiMcnRWJzo1A5YNhucFoWyCp0Z/m9aOP+dGmg6gTIMo4iDIOpE0G0Cf9mBMBDB+I1hhJtMfTHVCWE8ZxJNIKycKiAntXlrE5VV1O4OoTiJowpCoMoRQoq4xlXnNpu0CeA8GSoHgyHEdHYThYogjHkGHZMhSZmUylGtm0Sh7BzUO5eZBKQWIlN7GWDqlhQOpYiU3cWB8/dIwHHGNvHeYGDPCCPTxw70ZSxsARzrZhjn8/N7iLF9UgxLjSxVpdhcbSpLG1F5b22NxDlZ3TLUM7+yZXhmd2D08sdHb0FluKmBg0KiIEGx5MiQ7lJEaJEQlKLCQXE6NFBDuwQTWk72YfWaB+9sbFhkPckCEeeJAX6uOE+LhBwwK/QTbIy03sUPLLLfk5NgtGlE4TazJzHEWljbXtPZ3D/d6h7qXlsfXTa0snT/oOv9ew9/3O/e+NHDm7cOLd+qGJ/NIqgTpflG9WOmqsbSMCbWlScnYoURTHzoCn5KLFhcQ0I11t5eW70m115kZP99xqQ/+0rbZdYy5Jy9anyrJSRBmpogyZRJWmyFKp8/K1RrujvKKysbau3ems1RU6lBlaiVglEqalihSpIqlUKs3ITC8oyDWZjUV2h8XmMJjtBTqrMtssUhhpyXqxpl5p7hPmNhNEZihVAaPwyGwWN4XDEYpZQhVLpBXITdn6Wmt5b0ZemVhp+wc66v/LJufPn5+enp6YmPibR4b/L41/3/zkyZP//M///Dwx/uEPfyCTyVardXJy8qOPPvr222+/b/J3FW7cuLF79+6hoaH9+/d/9dVXP2r76NGj2dlZuVweGRn57//+79u2bTty5L++4AcAAGzZsuVHpv4P1R07dgAAgA8//PB5nZf4+HxMXkp+WRHo7e39qaz3/4CjMlO7QFNLkzuZimJOeqkgsyJFWZmSWSFIL+PKSxipDqLAjGQVQsiaGJwqFCYLiBO8Hkr/K5j8ejjZP4EWimFFUzixTGYCnwlLZWPT+ZQMPk3GxbCpMDwJAiNBIQwkQoAnyClMFYmtxLLSk6gSKFWSRJXDyGmJ2NToJGZQBHozMPEVv/hoFB9OlUNJEnACZUsQ5I9/BQWAk5DkVKW+xtYwVt67q7h7d1HLdn3tdH75sMLYyslwYdgaLEtNZKsIjHQaV8kVasQKnSRNL5QWMHlKAk2KIgnRDClZns/Tl7G0FbQsF1FihlHVkUmCoEgCXZSptVibG2rnu1tPDvRcHu2/Pem7P9l3d7jz/mDnw4HuJwOeR309Vxoa1w2mJaV6RCr3yRX92dlDOt2g2eyzGvuLDbONzvfmPN++tffpiZWnx5a/PbL964NzX+6ferB3/NHq2KPFoUcjvU+6O75ubX3a1PbA03N7uO/uSPf1vvoLTcVvuwoOF+WtGPLmCgtnDEUzZte8tXzWUDSl0UykSabkKQtKyT6b7qOJ3gdn9j04vfZofeXJoR1P1mYf7xp7uOB7NN5z39txtbXpqMPuyUjPoxDEZCKHSGZgaVQElZxEJkJwJBiCiIITsGgYEhUJgfvFxP0lOugV6JYg3htwQyCnFZw+HalaiMyci5BPhggHgezuAHKTH67aH7WxZh2CKg6B24PQLhChMpxaF4NwhkCKgiCWIKgFnGSOgBlj4YVwVCGZqBfic6UYpQwmlkBTUmEpqRiJNI5BD4RD/zMU+AeQ3+9AW38L3vzH+Dc2EwJCRWGw/Di8LRGiD4YYA2HWIIQjBOEAwx2hhLJIclUUuSoSXxaCcgZCrX4IBwhZFAorBGM0YZy8hDwLaWbQcm53y6Xllmt7O24e6r5x3HN9ve/Get/t476bRzxf7Ol4b6pyX6t2rlSxVKHa26A93mU/O1R9Yab5+o6uB6u9D/f23d3fd/NA79VDfZePeq+dHLx+auja8YErR72Xj/R9cbjn8nrfldO+y+8MXH179OKRkbeXvCP1Los6nYojJSbhwxKJITBmMJIXhE4OQotAKGkYKj0SpY5GaqIQeeAkTTDKBtzAR58ffdyPNhNMnQyhjIPIo4HUcX/axDbGeADDC6I1RpEdiQwnjFMM5zkh9EJKqlXv6s02NYuUpVhWYTwhJwKlDkeqkp/hY0mbQJYNxRBhRDKayCCQBFSmnC5QUlOUWBonhU43c+iVPOIGPnIhlfzEKm5iHQNay4DWMRMbObFeXugoL3Cc/cbIM3zkgnvYQX2sgBGu3xAnwMcFdfCi3SKcK1OuN9fm29rynJ26sl6be6iiY6rJt+id3D29fe/2HauTI2OtVRUSMpaVEC6ER8lQcRmYhCxsYi4uvhAbaUIFOzGBVfiAJlJANx3oYwdvgCM3pH8DHMH9vNB+PmiAv3WAFezjJXaq+JVF+QVOKz0zh6nIEyuNSp1DW1LhaKxr7m2ZXRo7cmr/0omTA4feadn7Xt+b74wePjNz6EStdzjPVZmcrRUX2jKddboGHzvfBRFkhRBFkXR5PFcFTc5DiApwcj0r25Zuq3O0DvQv7R9Y2NM9Ot/UNVjl7nC5ai3GYqux2GEucRaVuOylpa7yqoo6d21zU0NHa3NPc0NXXXWLy1FhMTkMOrPJaLJYTFabxVnsKC2trqzoqXd7Gxs8de5Oh8udo3VxxDqpxq009qVktxGSnVByNowkIbFSuClCvkjNEemZKTY63yzNrMo3dsqUlSK56x/oqH+qyVdffWW327ds2fLb3/7W39+/r6/vR5oPHz5EIBA/RDoQCLRv374fqd24cUOr1b766qv/9m//FhMT09/f/yOFn1PdtWvXsw/96le/8vf3f/XVVwEAwNatW//PvHj27Nm0tLRNmzb9+te/3rx5M51OHx4e/vrrr3/0RYPB8MO/4o9//OP3Z7rX1tYkEslvf/vbHyoAAIC2trYfGXm+GhYW9nflUZ6fnwcAAB999NHzpl7i4/MxeSn5ZUXgGT7u37//hbj1Eh9f4uN/X3y8vNp2/VD3zZPeGyc8N9Y9t9a9t455rx3oOb+z8dSg40B74fHeojMDrg/Hqi7M1H+x0HJjZ8e9lc77a1133+y5c9hz6/jArdPDt86M3Hp75NapoRvr3muHe64c6LhyqP3KkY4r652Xj3o+3uM5MtbWbi/IEfJoOAKeQMfQktEceRJLnsBUQNmZUIYKQlZDcOoEZFYMLDsUqglG24Dk5gB6vz9jwp8+G0z7Dh8pY0DaRAB9wo85FsDwgGgN0RQHhOmEcZwwriORWkBNLTKVeXJMzSkZLhQ9Lw6XFYFURaBUyaoqU5nXXNIqkGVBMQQ4kYQjM2l0IYubzhKq6SIlns4VMRhFPEY1n9TAR9VzIVX8xGoupJ4Jq2Mk1TETGtnRXm7IGC9gkrt1lOs/yA3ycEB97OCN5N7sbQOcQA8vtF0QX5tKdGQoCgzVGmtrrrNTV95XVDvgaBi01fQ2do+NT+9Y3rF7+8R4f0O1hkOUI6PU2BgNPi4fH1+Aj9fhYkzYcBsGVIINrN7Ax8BuRrCPCx7ih/VzwT5OiJcT4uOBfbxgL3dLPyvIx0vsUvFrbVpzRYnUZE8zluRYqjXO6oLKWktzQ/NA79TO6b3H9i4cXR8++Fb3vncGDrw9duDk+NrBqh5fXnGFKM8gN5dkFruzKjvpGkdicnYYVRrDzkgU5ECEhUipkZhp5eSWZDqbXJ1jE2snZvedGN+x3zMy39zRX13dWuZy2y3lpkKHPt+iKzDpC00mo81idtqspeVl7tqalnp3e3V1k8tVZTLbdXpjfqE2T5ufpy3U6mwGQ73d2lLiaquoaCutaLa66nKMpbm2+mxbszC3gigshFIUSXghkZ7KFaSnSHQCiY0ldODphewUW3qWOzOnLjOn7oV03U+fPr1w4UJ8fPyPmKm2tvaH9ul0+o8UAADAr371q6Kiom+++eaZ5sLCwu9///sfqZWWlv7QztOnTz/99NPMzEwwGLx58+aoqCiBQHD//v0f6QwPD/f29l68ePHp06dTU1MAACA0NPRHOt9XHz16ZLVa/+aEZXh4+A9zXrrd7h+596xKoVBGR0d/9atfPav+j//xP2g0WlVVVX9///z8/OPHj7//1k8V4HD434WPk5OTP3X24CU+/lSQX8p/KRF4tqt6dXX1hTiUUdTLy3Zjkm0IrgXOtsCZFjjDAqNbYFQzjGKGko3xpMJoQn4kXhOBzQ6Bp/nHC1+PZP41lLApDPVqFCwET4jj0ZKkNKSShstjUE1cikWA1XKjU3DBBFhAIiQ4FhmRQEpEcjFUKY6pwLLkcKoYRpbASTIEKQ2Ok0CQvIh4oh8Y9uc3YjaHILaFY/3CsVtAsNf84/6yOXRLYFwsgpmqthurfBW9O6v69zk6l431s9rK0UxLR7K6nJSsJXBzCGwVjq6gsDM4KTmpcp1QquUKc2jsdDxNhiJLEfQ0hCAHIdNFcbNCyWlglASUyA+Mpm0Nx8USuXRJWlZ+fnNl+arPc2338v2Dux4d2fngwMK9vbN3VmfurMzc3bNwdcf0aU/HWl3lvMM6qdeP5eSPpueMy7OnFertavXBosLzPfVfrU59fWj+0dG5O4enru0fvbw29MXK0I3V8durU3dXZ+7vmX+0d/Gr/Uvf7pt9unfq27XpRytTN3ZMnJ8dPtHXuuouXyg2z5gLpgpzpnOzprOzJjKVXqF4UCSeTlfsNWnfaqs9PzP4xczw9dmR24ujd3ZP3Dowc+Pk/I31+cv7Zz5ZGFltqW8syJNRqSwcjoTEEuEEEpxIhhPICCwZhSCgYWgUIg4KD45NfD0yclM8cAtxa5w6gFwBEnnDM+cilfMRaTNg8UiQwAfk9AQx2kDk+lB8RRjCEQItCoZYgpKKgDBbIMwemFjkl2jx35CYwmH6OFgBHJJFSFJykEoFUq6Ci7KhvCwoR4WX5CsslRy1Pokl3BKd+Gdw2B/AwN9Hbv0LYps/KzBGGYq1xtKq4pEOINzmj3AA4XZQUhEo0QSC20KQzhBUcTC6JBhbDsJVhCBdwQhbCMocTjXGSSwoo4s13J1/ZLLs4/m6L1ZabxzquXnSd/OEd2MO8pjn1jHvraPeq/u7PtnuPjtZfn7B/fn2pstLLVd3tF7f2X5zuePOSsedta7bB3rvrPffe2vk/tnJe+cm7703du/t4TvHvTcPdV3b33p1X+OV/Q1X3mz8bK39nfnWXd1V5TlyOYPEIVME/FRRWnZqtp6r1DLSC7gqEzvNSBPqCPQ8BDYrPkkVlpQDQtuDyC2BjMEA5pQ/Yy6YNhVCHQdRx4H0iQDGBj76M/pAtPqYDXx0wNgOGNuWSMmnplqKKnwaU1NymhNOyY7FqCKRqkiUKmUDHz3mktZkWVYShoAgkog0Nosl5goy2UIVTZhBYHDFTIaVx6j5Dh8buJBqPqSGC21gwt2MJDczoZEV5eWGjPMDpnlbx7j+gxzgxnWCHJCXHTTA3NbPAfbywluTIdWpFGt6Wk5hRZalWePo1JV7TNVeQ0W3Ul9uL2/2+EaXZuZ2jA6NNVVaUsi5+Bg9MdpIjDERNh4LPtKGC3PhQOU4YC0hsJkM7GWDB/jhg4Lwfh7YywnxcEK83BAvD9jH3eJlBnm5iV1Kntte6Kyryqt0G+s6HE1eU2O3vqXd0t3ZPj0+sXtpx4G1mQNHRt486dv31uiB0+P7jg7v3FPe0ZtXXCHRWjJslZmuBrmzkay2JibnRDIU8TwlVJgHFZvQ6TZylotTUJFR3FLSPTl/+L3dx99fOnB6dH610zPhbuipqWl32GoK8qxZqkJlZp4yU6POKsjKLszO0RtMxcUltTV1bXUNnRXVTWZbSZ7OqNTkKZQquVKtUBYo1Q6NplSnq7I76surWqsa2soamuz17sLKMplBR1ekIVkCGJFLpEm4fI1Ybhenl/JlxXhGPpWrT00ryTe0GKwvJg/ilStX/P39n2ETg8GwWq1gMBgAAPzhD3/4ngvX19efKWRkZFy4cOHp06dXrlxpaWl55ZVXAADAM0BcXl7+9a9//SxP0NTU1OrqKo1GAwAAv/nNb354OcW+fft+97vffU9pr7/++u9+9zsmk3nt2rWfGokOHDgAAABef/31n1KIjo5+ZhAAABAIhPX19VOnTtXV1b3++usAAOB3v/vds9Xnx48f//GPfwQAAHFxcW+99da333778OHDqampyMhIAACwefPm740cOHDgp771U/K/Fx9HRkYAAMCnn376vMGX+Ph8TF5KflkReIaPO3bseCFuSXTtbGUtNqUYyXcguHY42w5jOmAMB4xmh1FtUEpRPNkYTdJGEvIi8ZoQeFpAQsrmKMamcNwr4bC/RMWByViImIpUUjF5FLyBSrYx8A42zMgKk2H9qdDN0LgtkQnAaGQklIogpmDoUixThqCK4SQxnCBFEhRInBSGFsRAKIFh8P98I/rPW2P/7Bf/in/CJr+4v26L3rQl7DW/qIhEkkBh0JX2VPTsqBs+WNKzYm6c11WPq6zdIk0VVaQn8TQEthJHk5NZ6SxBllCqTRbnsQVqCisNT5NjqHIkIwPOz4Gm5oPIcj9E8rZ4rl8UY2sYaXMoGggjJ1DZdGGqRW8Yb2m9sLzr7qFdX55YfnRix7317beOLV4/tnjn9MqN47vOzg0c6WlarSpZMhunM9UjAukYWzwnkK3KM08Y9Bea3fdnhx+uTt1Zm7y6MvzZds+Fue7Ppruuzntu7By+tWfy9pGFe6d3PT639s2ZpaenFp+e2Pnk+Oq9o2tX962cGR3c31C7w6afzcsYzxCOygWTSvlElqo3LXMgPXMuW3XAlP9WleODjrqLbfVXOppu9rXenuy5vTp08+TMtVNznx2ePrdzeEd7XY1WI6KQKGg0DoYiwPBkBJGCIlLRODIagUclIeCwqHhoQFTcpvDwTZBAf+Y2hD6Y3RgmG4n87qaZcMU0WDQUyPMEsrqCGK1gakM4oSoyyQpKNAUlmoKglkCoxR9StA1q3ciwAysCwU1RcB0EnoeGKqlQRTJclgETZkF5mgSmBsrJoaZbtNXdClM5QZTpF494JSziD6HA/4jd+hrOD5QChOSHEkuiGe4YbBkQ5fJHOgPhtiCIOTjBEJxkAcGsQTBbAKokCF8JJtWFI0qC4LYgjDWCXhQvtaINxYzeFuXagPWDmZovVlpvHuq9fdJ366TvxnHPlSM9N45575wYuHd84Oah3mv7u+4d8d0/7Lv3Zt+dtZ7bq923Vrpu7em+ua/nxkHP7ZND99+bePTx3KNPZh99MPnwneH7Jzx3DnbcXGu6tlJ3ZaX6ymr1J0vuo0PV49VF+lRWMh4p5XKz1Rp9kdNcVpPvrMixlRWWuPOKajJzS5NTzWRKLhSuDE/ShGAcwZQWIHMokDUdyJwDbeDjRAh1PIg+EcCc8GON+TN6N/CR6oAwHDCWPYlZlEDOpYkstqoBjalJoLAnEVUxaGUkShWFVgtVVabSPrOrJVmmhmEJCBKJzOBwuVJ+ciYrRUkRKIgMroTFsPEZtXxiIw/VwIXW8CF1vKQmFsLN3MDHJlZUPy9kUhA4y982vrFaHejlBPt4If1cUD9jm5cT1MOPakmBVaTSTIq0jZzhhoYce4eu3KOv6Mu1N7EluapcS727ZcLnW/B2Tta7SlPJZnK0nRRuJ0bYCRF2QqQDH+7Ch5bjQVX4IDcxqJUG8vIjBlOiBvjf4SM3xLMBrMEebmAfb6uXFezhJnSkc9zWgtKGWlt7T/XAdMvkcsXIrH1o1DEy3Leya2Lvnqk9q+NrB0b3HhvZd2pi//Hx1YMDCzvLWrvyiivkBoe62J1R3CgwVuMyTInJOTHsdIggC5aqTZJbMaoSSm4lW1utcLYWd0/vOPHx/nc/Wzv14dSuQ92Dc3XNvroGj81Rn51jlSnyRRK1UJwplmd992Qrs/U6k6u4orGmqaeyvsNSXJVdaJGqNHxpGk+SxpdkCGU5YnlButKs1ZWVVjY3d/X2jnvrB2ptbXp1qVSQzyKJSSgalUSX8Xh6RUZ5ek6VNKuUJiig8vKS5WZbeU910+gL6boxGAwAAPj1r3+9sLDwzOAXX3zxL//yLwAA4PtJQaVS+QywHjx48MOP3r9/f21t7ezZszdu3HgGhWQy+XudZ4eLAQDApUuXnrVaXFz813/9VwAAkJWV9e677z5bWYZCoQAAAI1G/9DyD8unT58GAAC//e1vfyj8YXnTpk3PyC8zM/OHq9WPHz9OS0sDAABBQUHffvvtM2L7p3/6px9t3Pzmm2+OHj06Pj7+jIYBAIC/v//s7OwPP/Fflv9efPT5fAAA4BmL/8j4S3z8UUBeVn9xEfB4PAAAYH5+/oV4hkm2YFPsOJELJShG8ooR3GIEpwTBLkGyXAiGK4lmjyeboojaCEJuBD4nBJEWkJiyJZr+agR2UyTs1bj4WB4Zo2Ijs8hJ2WhoHgJuQMUbMBH52JA0tB8D+mpS9J9BoRs3BMbhYTgehpqKZ0rRNDGSnIogiJE4GQIjhqH4sRAyMAzxytaYV7bFv+KX8Ipf/Ca/2Ff9ol/bFvnXNyJAURh6iibP3lbevdQyeazCu9fast3ons5xeqT5dQyJicTT4BgZSJIER5VR2Rk8oYYv0rAFWTR2BpGhwNEVaFYmKlkDF2tDyDI/uMAvnu0XRX8jlPDXYMR/hkE3x8HCUdhkobjKaH2zy3Olv/eb4a6vRzsejrXfnmi/Pt35YHXswerkBW/T29XOg+aC3RrlpFTo5bF8Qt6YOmOH3XK0vfmj2fGbB1fure+5f3jn3ZWp29Pe2/1tdzvq7rdW32urvt1Td2u4+dZc1+1V35UV35WVwZt7Ju6tzNxfmrk9Mf5xQ9O6sWhNqV6USCaFyaMS4VSeetpqGLAapqyFa/aCd8v0n7eV3hxouNNR86C58suWyic9tU9Gmx5v77i70HFxtPFka9l4Ub5LnpxCQjPxOBqWTMcxqGgqCYHDQmBoaDwyKQ4Gg0UmQP2j4zZFhr0KDwxK9sM7QYLOsLSJZ/gYkTYdljocxOkJoDT7EeoCCTWh+IooqAUUbwDGGwOhFiDcDkQVB+FKQzDFYJgZlKSLgOVDELl4lJqHzlBg5BpUqhaZokclGykKW6q+2tzkS7OUYYSKzbGJfwoD/0dkwJ8gb/gxA2LUYJwjmlYbzWyOoLiD8FWB6NJAuD0IagZBjCFw68ad2tAi/yS7H6J4Y/9lovUNqMUf54ikFcUJTbBsE665WrLcZ/xkof7qWsftI323j3tvn+i/edx3+VD3jXXvvdNDj86MPTg1fP/E0JN3pr46M/XV6fEnJ0a/XB95fGzk/rHRO+tjt06O33ln8t4HM4/Ozz8+P/f4w8kHZwYeHO+7d6jzzt6WK8u1ny9Vfr6j6vR4+fZWa5MpW8kmp5Bw+SqVzWIrq6yrbGyrau2q6/K0ekebukYq6zx6g1skKsLgciLheSGY4mBKG5A5HMCcDmDMfzf7+L/xkTGxjTm6gY/0+liac+PcDNsOYxUlkDT0VIuzZijP3CRQWJMImbHozCiUKgablaKqNLi6Dc5GgVQJw+KRJCKVyRXwZYLkTKYgncSTEhkcCYth5dFreMQGLrKBA6nmJ9ZyoY1MeD0zqYGV0MKNGU4Jn04JmuFuGd84KxOwAY488AAPNMje2PjYzY9uSoaXptL1ivR0jSvD0JBt7yws9+rKe7Mt9RS+ki/M0OYWNpWWDNSUjJTqK5LRDmJYKRFUSgCXEMJKCOGl+NAyfEglPriGENRADu5ggvtTooZE0T5eqI8X4uOCvJwgDzvQww3wiYDejZ2X8Q2p1JJCdVFVmaPb655c6tzxZvX8Luf0nGN21nf40NjBQ0O7VoeW9w7venN05fDE7jcnlveMLCxVtnZpXVUZpuKcsqZ0ZyM1x4mU6eL56iimIpqhiOWoE1LNUJkVkWbDZtoE+mpj8+DM4fcOvP/FsY+u7Dnx/uTyod7RpQ7fXFPXRHXToKu6y1raaHLWmJw1Rke1wV5dVFLvqmmravY09Yy0eSdavePVLX3OmhZTSY2+uKKw2KlzGfVOh7m4ylneUt3Q09rr8Ux3d8y46sbVdg8n102QYhdd+gAAIABJREFUmDEsOYUlkCcLzJlZlXkmd6GzLttYmpZrScuz1HcN9o2+gK77/Pnzz1Zse3p6fjgQzM3N+Xy+7yUQCAQAAJSUlHwv+VHh+w2FUCjUYDD09vba7fZnC9nBwcHPlD/99NNn2wp/aOfRo0e/+c1vnsHf8vLyj8w+qz7LsP2b3/zmb759+vTps5t14uLint8c+c0332zbtg0AAKytrVksFgAAgMFgfsrOpUuXGAzG93OQaDT61KlTP6X8I/nfi4/PNo89W53/kamX+PijgLys/uIi8Awfp6amXohn4Zh0KKMQL3JhUlwogQvBK0FwSpHsUiS7BMEsSaI5EiiWGJIu6rvZRzAiHQgRbothvh6F/2sUbFNsXCQbn5RGjUtDRabHhyujo3JjwTnxwSpIWAY6mAvbioh7JSjELzQhNpGEwvMJ1FQiU4qjidFkMZIgRmClcEwqDMWPg1KCIhB/2Rrzlw183Hg2+cW+5hezxS/qL5tDA8AwHDNdZXSXtM+3TR+v9P0vfNQUe6UFbobERORpMPR0BCEVQxaTmQpOchY3JYeTnEXnZFJY6URmOoGjwgnzUFJtKFkaAOf5xzH9I6lbwLj/DIT+z8CYP4Bj/BJgJCbfmFM4XdPycVfH4/7OJwPtD/pbbvuabwy0PFoYfrw0/tn/w957QEd1ZI26/Y8n598JbIJAoVsdlUO3OudW5xwUWqmVc84555xTS92tVs4SKICQEDkjokk2YMCAQCCiMbwl9116XGN7PPf3nTczb1hnsarqVO3adQTnfNq1967mytMFGQuJUTsignoCPNu8XVr83PXxoTtKs4/qWy7PDN49PLNyYteTI9PP9o4+39H9sq/9a3Xds/qyxzXFy3XFy+rK5d7Gh5Odt8c6vxzpvDeseTSgedKlXm1p+Dw7+0R41B6fgEkP1aCnT6+f/2BM5FB6gj4tejQ1cjEj6rPi5K86yh6Ptq72Nj7X1X2tqXnVVft6sOH1ZMvzkeZbHZXHijO7IoNTXaRSGplPc+ZSuTyqgEVi03EUEsqJiHbAYxwxWKwl0snU1v5TGwsjirmFJ5BdCHNtt/AZsPIdsfYdtvIesFBozHkNpvSy7aR8E2IOmJhlgU6CIeMhyHgQKhGISQHi04GkTDAhBYyOBWOirAmRWGoEhxrkSlX5U70iyW6xZNdEmnuyJCwvIKs6tbHTJzWb4OK2yc72AyvzD+yMNxC2gl2AmFgLTrG9qM5G3ITg1YKZ5SBqvjkxA4pNhmMSLLApcEwKGJVk4pSyHZ22DZNhjErdjk42IybD6LGWoih7VSSuLE+xozX22kTlvT1NKwfaHx5RPzqmWTnaeXtf091DbQ9PaFeXelZP9zxd6v3m0tg3n42+Ojf09VL/16f7X54eXD059PDU0PLS4MMLQ4+vjDy7Pvby+ujzS72PT6gfH25d3d/yeG/TnamqqyPF5/pyZ5tS23Oj0kN9VBK+p1SSEpeUl1NYXFZdUt1Q3tBS267p6B1u7xqpbexNz6jz8kqn0ENt8BH/Cx95XUD+0P+Gj5w+IK/XhK835bbAuOUO3AyMMGPN3i9IQjJCOK6JmcXaNXz0SkbTfO1JvnakAAdaiCKgICajMTq1VOruiyVT8c40jkCkUHjJXfz4Uh+60JXBE3oIeKlr+EivEBPKhagiCapY7PS/8FGIqpXY612shhTgQZFRn8hELwZpJLDOb62PaxvZYniT1K5Cjs9y48f4+PmEZvvGVYakN8fkd8bktgbEl5C5SjpT7CZxSQ7yr4wNao31KZRg8pyhxQxQEQNSwIDnMyzy6fCCNdMjpIQBrmRBGwWIToWt1sVWLYGrxdAOMbhDCFILzNpFZu2u4HYxokmALFEwU8NUcTmZaS0dZUNTDTMHCnfMpYxOJoyM1uzZ275nX+fMQtfUQs/UQt/O+b4ds30TUz0j40U1jbFZhQGJOREF9T7plWTveIxLuKMk0F7gY8fzthcGoFwTkK5xKNcYnDJWGJ4dXdrWO39i/tz1w1fu7F26NrnvdO/O/drR+Y7Buba+3a09U81d443aodqO/qrWnopmfV3HQFPXaGvPRGvPhHpgqmt0rq13skE3XKcZqNf11+o6yzVl5e11VW0d9eqBdv2obni4d1qj21XQMhtaPibN1LCjypl+CVIP3wClMjkorDA+szKroj63qjGloDw2M7+qXdvS8zO8urVaLQAA+O1vf/sueL39XTDsbhcVFb3duF6+devW73//ewOZrbOXofDnP//5wIEDhp7x8fEAAIDH4709l+H0CkNna2vrt2+tyz969CgAAPj1r3+93vLmzZvJycn1rTMDPn5vesvnz59v2LABAAB0d3erVCoAAMBkMt+W8255ZGSESCQaVPqv//oviUTyvWfDfGfg34uPP3Jsx3/w8TvP9j/Vf7onYMDH7u6fZwfE1EFq7xzMcMukuWST5dkESRZOmIXjZ2F5WVhuJpqdhvp2/9qeEW1HC7ck+EPRSqCjeJud86fWuI+sbLeTkECuo4nQ0lgGNXEDg3xgZl4IsKetox/JQUG2omHNLKztHEkMqpTDcuNyPdh8TwbXg8JWEhlKHNUTR3HHkeVIHBdqTfjE2Gajid0GE/uNJg6bTO23mtptN7PZsBm6DeSApimUYTmpFb01/Yfy2nYnVo7EFvcFpba4hRaxXGJpomAyR0VguFFYSibf51t8DBbKAnliP47IjyMK4MhCWO6RNM8oK6bSHCsE2nPMLJ23QkkfmaH+CLT90BIJITK4Cq/46BRtecPx0YGvFnesLEw+2Dm8PNS33K1/Pjb2dGLisqbzQG3NRHFBb26WLju9IyO1JSG+NyNxrjzzvKbkxmj93V0dKwd6nx4bfnly/PWJHW+O7Xx9aOfq9MD90Z47wz33JkdWdk09X1x4sXP6xcDwc23n8/bGp00Vj2vyr+YkHkmInI2OmohJGIlLGU5MH45PHIwM1/u6j/h7zkWFnC7IvtbTdufA5P1jMyvHZ1ePTT87Pv31ydnXS7vfHN71cHL4bGNrX2JWqnuAgMJjEdkMAouBY9NxznQclYZfc3ykkDBoLBbhgDK2tf3UDmHKhNgHgAWVMDcN3Ksf4dVv4dVvoeyBi1pNWTXbqcXbcNnGqBQTxwQzXKoFLtXCKQniGG9qH2tkF7PJNuITu7DNjqEm+ChbeiyVGy+nBbqTPf0o7pEklxiyawLDM9k1tjC8uC69vcM7Mx3nJttob/HfNibvo7Z+wtgE9zElpiOEtbbydmt5J1zYDOJUAxnFYGoOnJhmhU20RiVAkAlmyCRjVMo2p/RtmExjUj4EnwF2iNjmFGDsHAD1CnMqy1PsbIu7NlF5d65xZV/byqH2J8e0q8e0d/Y139rffPtg292jHfeOax8udX99eezlxZGnZ/pXT/U+OdX39PTgg5MDd08O3F3qX744+PjayIubY9/cHH3+Wffy4eaHB1oeHVA/Oai9s7v93GDVbEOaOi8qPz4oKsg32Nc3IjgiK6MgP7+yoKgmp7AyPa80q6iirl1X19pdWqWJS6pwcUvEUwKtcOEwUhaEWW/O038HH805vWbcbmOezpTbDOOVOX4bN4MXpWH5iY70YLYiPr2wMyy+QuqRjKaqHEi+9pRAlHOYS0B+VFptRGKh2NUHQyLjaGSOQOTq6qNw8+dJvah8OYMr8BRw1/BRTK8QfYuPYmSxCFXBw5bzMBUCVK3YXie3GJCBBoRb+8Sm3RKwVrpGdWoRZC2MRoJokDqUKYhZ7qIYVaAqLNc/sSY8qy2+SBuT1+YbU4ihitEYGptC9xdxU935pV7sYqF9GRtSxTSrcDYvdYYWOVsUMRBFdFgRHVzqDKliQxsEiHapdafcei1cRgTuEJp1CEzUAuNWkUm9zLRJhGgUOpW4clLC/KKzM5Ia2wr6Jyun9uXsmIsZmQjq7Y/rHigZndHuOTIwf2R41/6hHbv7x3b0jYz3DI4UVdbFZRYGJefFFjWrUqtQ0lBHSTBSEoiVBeFlQXiXMLxHgpMiGiULx7tGiEMzYkua9bsO7jx6du7kZ7uOnd9x4PTowomR+RO9M0e6Jg8OzR3bse/07OGzk4snhmYP9u7Yu2Px5O7D53YdPjcwvb97Yr5van/X2J7uiYXhXYdmjyzNHDs6sDjSu3tycPeenYsnFo6f33f69K6TU5Mn2vqOZLfMBZUPeeS0KzOrwqKTYgMCU8Kj81PzakubNM364XpNf0ljZ151c05l4//8ozI8PAwAAH75y1/+eG4aw65uVtb3x3obTqBwcnJ68+bN3NycUCg0MjJCIBAhISFvJ6YxMNng4OC62idPnvzrX//6tt9hV1fX+t31wo0bNwwwt74t/uzZs9/+9rdGRkaGPg4ODgAAICkpaX3IeiE7OxsAAPz1r3+9ffu2TCb78V3y9VFv3rw5c+aMSCQymGZ/8Ytf+Pr6/ngAzd+LjzU1NW9v67899T8IH9PS0kAg0PcmLn9bm3/pMoFAoNFoz549+5dexT+h8mq1GgAAaDSan0W3LRYcK7KKqkijyDOI0gy8KAMnzMDyMzC8dAwnDc1ORTGTkYwER3qsPSXSCh8IR3uZO8q227I3WeE/tLDdhLHdQrP+xBmykWu2UWSyWWG6TQY0l0Jt5Q5oEY7AplKoTBHH1UsW6CkPcpEGCEUqZ64HydkNQ3V1IrtjyG5YshyF58JtiJtM7Taa2K/ho7H9JpNv8dHU5uNN4M3G1tYYrsgnMSa/o7J7f07zTGzJQFCGWhlVIfTJoEkiqMIgCs+X6KyksDyYfG++JIAv8eeKfAUSf5EsSCQP4ctDGPJgnNTfku4CxgpAdmxTS/pWCOEjM+Qfgbb/bYE0wVLJAtcA/6iqzOJFfefNuZGVfZOP9oyvzIw8mBh4tmvy+dzUvYnhi12dB+qqduTlDKWm9MbEagJDB2Oj5grSzqhLPu+t/Wq4+dG4+vlO3TczPa939b/ePfhy18DtAfUlbcNSW81nXa23xvqe7d31YvfUi51jT8f7n451r45qV4Y7PtfUnKgt2F2QNp6WOBgf2xcZ2Rcc0uOj0irkI0q3haCAsxnJ15oq74xqV2cHn+8aej7T/2y659lc37N9Q8/mh28Pdh2tqtZEJiZIPLk4JhPHYuA5TALPGc9m4Gk0HJ5KQBPxKEe0E9TOcbuNzacOCBAPhgqD8KtALh1gj16oRx/Cs89C2Y2QqcG8BhCj3IyQa4pKMbGPMyNmWJMybXCpcHQyEJ1sgkkxRsVuRUVtx0ZBnJOw4gyhR26AKCaIHRDu7B1HWbM+xjG8klTp5TFVDVE15eK4MDsJ62NH6PsO2zcQjcwVZqgYGLPEWtpqq9BYyLVgUZspt86MWQam5cJJaVa4RGtsMgKbBsVngXFZQFy2CTZrOyEXhM80R8cDKdEwSYxDWDKtsVI1p0u9Nll1b3fjo31tq4fUz4/rnhzX3l5surnYeGNf85cH224d6bh3suvF5bHnn40+OjOwfKLnwYmeh6f6H54dWT43cu/c4INLg6vXhl7cHP76+uDTC7r7h5qXD7TeX1R/tUdzqr9msjazISUkM1wV7u+lUqkCA8OiY1Kzcirzi+rziurTsksjEzLC4lKzS6qzSxqSsqpUwRnO/GBrJyUcHQolZf4QPppyu7dztSacRiiv1FGQiRNnEsTpOEGSIz2IzA/zDct38UlhisNRFG97ksqBEohhRbgE5EekVIfF54tcvDEkMpZK5AqE7m4qFzd/rsSTzJUyeAIvIS9Nyi2R0CvFhAohqliMLBE5VfBwBnysEdlqpPB+qdmgaGufyPhb6yP02w1lqEYMbpMg6qT2pQpiplIcrQryNuBjdnt8kS4uvz04qYwj83NmioTOLD8+M1HmXORCKRXYVLHB9SzTGiaonAkpZiKKGfBiOqyIBi5zhlSzYY0Ci3aJVafcSiNHdIrBnUIzzVqIt0m72KRGYtIotGgUYUvceKnhAfEFeXn6gcLh6dzh2diByYCeQS9dT3BnT+7wjGbvyfFDZ2YOnNg1v39i58zI2OTA0Ghdkzq3vD65sDa1UuObVu0gCnIUBaEkQXh5MFEeRHIJJSljsfIwrDSYpgz3iMvJquscWTw6deT01KGTOw6c2HHg5I6DS1OHL4zvPzuyd2n22Gf7zn5++OKNxaUru46emzpw+sDZz49evHno3Bfj80eHZg9OLpwYmzu6Y+/J+aMXj1+6ffTyzZ0nT00ePTl97Nz+s5+fvPrlyatX5pf2Thzr7zvQ2LmnqG0qr2W0oG2wJr8sLzwqMTgiPSKhKDG7PqtUnVbYGpNRExhb6BuV+1Ne3VevXn3w4MEP9Xzy5IkB4H7zm9/U1ta+HePy9pAPPvjA4LD4duN6OSwsDAAA+Pv7r7d8b0EoFAIAABqNdu/evRs3bhQWFhqmplKpjx8/ZrFYhjibycnJ7wx/9erVL37xCwAAsLS0ZLhlSJpoa2trqBYXFxucIycmJgzhPq9fv15YWBAIBAAA4Be/+EVvb++bN28MCkCh0O/If7v6+PHjt6vHjh2j0+kGeGUwGN9rHDX0NzIy+stf/vL22B8vV1RUAACAW7duvdvtH4SPQCAQAAD80O8E76r1L9fy5ZdfGn5yP1d+mX+5J/B/T2EDPr6b3+v/bMaNYCoc506UJBAlKQRxKl6UhhOmYwXpWH4ahpuKZqc4MZNRjARHWpwDOcoaH4xA+4AdXYxteZusSB8i7DY42mzEW3xEBn1AN/6AtfUj3patHCNzlqk1C07goPlCtrfCI9wrLM43PsIn1lcZLpf6O3OUOJrcgSC2x8sdCXIngsQRw4HZkDabOazho/EaPn5qYrfFxHbbGj6ab9yGgNhRmYrw0IzGiq7FrMapiHy9R0yN0DeboYglCYLJgoA1fGQqyWwlg+fFEfmyhSqWwEcoC5S4hEhcQnjSIKrQF8n1sKTKoVghyJ5tYknbAsF/CHT8I9DmrzAHI0cimiF2dwvKic6caqy7Ot61sjC6ujD2eM/Iw5n+p/OjL/dOPtsz/tVw14WW2r05GTuiowf9ArvdvEZCQuZyUk+3V3ze3XCvr2W1r/1lf+frQd2bYf03I13PhrVX1NWHq3NnC1P2VeVd1DY82TX6dNfI093Dq7uGVudHVxfHH+2buDndc6ancU9N7lh2fG9MsC7IR+vjqXV3V8sUQx4ee0OCLmQkflFd8JW2/sVg5zeDnV/3tDzTNzzpb3o81rYy2nG1o35PXk5DQEgkT8Zey/Lo7IznsIh8JoHtjKfTcHgKHo3DohxQThA7+2021psc4RARHBMN5VebKTpA7t0QZQ/Co8dCqbdQdMJFzVBWFYSUD0KnAZGJ5pQcO2qOHSEdgUsDEzLMyVnm+GRTXDyQGGfBSyO75boEFEe5JUWLQmLZqkSaWyzVNZblkxhSUJPY0OSbn04PUsJ4+I+cQB9it23lGNuHIKg5NsJ6O3mntaILJu8CidWmvAYgqwJMz4dTMi2JqdbETCtKnjWj2JpeBCfnm+NzjPE5poQsEDENyk6188ggJuSJOhrDFnuzP/8WH1f3tT873PnyRNfT47rbextvLNRf39t4fX/LjYPtt4/rnl0ef3ppbOXM4N1j+q+O6O4e6350YezRpfHli0MPLg8+vjb4/PrQ08u9yyc7bszXfTFbf2miYWmgfrQquyYxPMHb3c9V4ebiKlf6qAKjIuOyMnKr84qbcosaEtOLfUPjlX7hUSl50alFgdE5IvcoFEUJtBaDHYMgxG/xkdsF4g0CuSMQTj/028hrEKfXlNO9naM1YTfCuKVIYSZOkkmUpuNFyUjnEAwzgKeIdhaFEln+jmSvNXykBuI4kS4BeWGJlSExuUK5N4ZIwVAIHIHQXemrcA9gSzxIHDGLL1CJeekyTonUgI9rYdelQmwVD1/Bw1bykTUim04JtE9iOiQ26hVt/zZPOLhTDNWIoVqReasYXiu1L3EhZXhIo/2CvUNz/BJrwnPUccW6uKKOqKxa3/BUD6Wvh1AYInBOEVGKxbhKnlUtB9zIMq1lAStYkBImvMQZXsKAFtPMy50hNWxY0xo+WnbKLXUKC40E3Cky0wpNtBJTtcS0RmzSKLRqFBOK3UQpkaFJJWVV47uKx+aSu8cDtf3u2m65tkul1mcOzWgXl6aOXlg8dubAwaO75+Z3TE0Nj42pu7pr2rTFjZq8xt7gzDq0JMRJEoSWBuEVwXhFIEERRHKPxEgCcRJ/tldEUFpRWUfvzkMnpw+fnNx3ZGLx8I4Dx6ePnN196srsySszJ64cuPjlyS/unv1y+cTV24cufLH/zNWlL+6du7F88srtnftOTMwfmT9ybs+Rc/tPXDp58dblW6vnbz1duHh3/vyt/Rdvn7p+/8Kd5bM3b+w5dWB0/0T3Lr1mukM3remZ0Q/PDlU1VkfFxfsGxfsEpfuGFgZGlfmEFbn4ZvFcE1iy2J/yrgYAAD9+5vWePXvWs+387ne/w+PxycnJExMT9+/fX5f/5z//GQAAEInE9Za3C6mpqQAA4OOPP37x4sXb7d8pHzp0aD0zjuGzDgAA5HK5gVlXV1cNRsRf/vKXBQUF3zH1GfjV39//ypUrGo3GECvT2tpqmGJlZcXg4AgAAP7whz8AgcA//OEPhik+/PDDdQctQyT4b37zmx+i5OHh4d/97ndxcXHfySU+OTlpcND8kTSWu7/9850l/0i1pKQEAADcvn373T7/CHx8/vz5e++9BwAA4uLi3tXg36NlZmbG8I/g3d9I/j0W+P/hKgz42Nj4M+yAvHnz5mMgHoySYnjhOGHcWuIeYSpOmI5bc8nKwPDT0JwUJ1YSihHvSIuxJ0fa4IMt0L4QpNLUVrjFkvYRHLnBznYj2mIDAfwR2fgD6ub3qRu2kj8FE4yscWZ0BspLJkwLjsgLT8oNT00NSQ5XRbu7BDizXZ2IAksky9KRa43k2aK41o4MsCVhM9Bxo4nDBmP7DdvtPjG23WxqY2Rm/dFm84+NYKYWeKrIPyipuko3n1U7EZyuFvnl0eSxOH4QjutH5PuS+T44lhuB7UrhKp2F3t9ePgKXYLFriFAWyBSoCBwPB6abJVUBxYlBDpztVtRNUOyHIPs/mln+1dxmixXGAceT8lXJfilD+UXnOpuWd/au7h5Y3d37YEqzOqt7uafn9cLAkxH1zeayo2lx0wG+A3KXHqFsxM9/Liv9dEf99YGOleGu54Pdr/p73/T2ventfdXTtapvPVtbOJUV2xnhM5gYcqgi89Fox+PJjsfT2ke7e1b3jT05MvPs5MK9fZOfjXburc8dzYzQhXu2qmQtPooWH/dmb6+B0KC9yTGflaTfrC+4317xdXfja13dq9ay5/UFTxsLn7SVLbdVnC3PG4mPKnJ3D2ByWGgiE8dgEtgsIodJYDrjqTQsgYzF4jBoByQGYuewzdZyExICk8Hw8TBBDUjRYe7eDVV2I5R6CzcdwqXTQtyM4FTD6EUQUg6UmAl3LnCg59qRMhDEDCglG+ZcYEHJAJOSIOQ4K14KzTXLPbAg1iMhXhqcwPNOZLjFMtxieH6JsRWNqS0t8uRIJyXfxNnhI6zZp3RjczcgKd2WX2UvV9u5dFkouqEyvbmkw5zfaM6qADsXQum5CFqOFa3Ahl3uKK7DCKsd2KUIcq4JMWc7KRdIz7UQ5aF9C1mpZUpte9z+/oIvJquWdzc92ad+cUT36kT382O6rxYavpyvv7nQeGNfy/X9bbeOaJ9emnj62fjKmcG1Q2X2t98+2PHk0viTq5MPL408vDz06Orw6rXh+2e6Pt/bdGq49KC2cLYhd6AkvSQiONLVzZ0tFLFFXL6cL/d2U4UHRaUlZ1ZkFzZkFdbHpha5+0YJXQN8I9J8IzNcAxIpQj+Yk3AThGli52+Oz4Q414O5OnNeH5A7aM7phaxdfSB2vxm7z4StN2U1wTmlKFEGTpZOlKcRpClobrgTMwDH8sM6q5zo3g4Ub1uyyoEWiOdFuQTkhcRXBEXmCqUqHIGGIePYQoGLp7/UI4gp9SRxRUIRL1DGzlI4l8qoa5HXIlyJGF8mJNTwiFU8bBUfWSu07hRDeiWmg5JtPWJjnchMIwLrxNAuMbRLAGoTwWql9sVu1HQfRVRQuE9otn9idXhue0yxNr60M6m0LaukPiUhJcbTLVnKyhMSKwWoWq5lPQdczzarZoPK2ZASNqyUCS1lmJdSzaoY5vUcaIsQoZZaaOQWWgW8UwruFJtpRKZaiVmHxKxBbNIktKkXU/PdXJOi4pMrm1t3HyufWIztHFS2aYWdGp5Op9R0ZwzP6heWdh0+f/Do2WNHTxw8fGhucW5sZrxnfLBzcKC5d6hKMxxX2MRwjyK5huJcgjCu/iiFyknhi3cJRQlUGKEPXxUdk1fV2Ds2e+T07OGTO9bx8ejZPUtX58/f2Hfp9qmbDy7efXTl/uPzt+4vff7Vqat3Lt95fPnOozPX7szsPz69ePTQ0mfHzl1dunTz8o3lm/dfXLv3+vDnr458/uzkjdXP7q5eubdy9vr12UP7+nZOqAcH2vr6NcOjvZM7R2d2VTc2hsfEKX0iZe6xIpckgSLJWRSLZ4ahqMGOlKCf8vn4y1/+8jdPQ7lw4YJQKDRY+NbBzhCAbMj+aDAN+vr6fu+M58+fN+RclMlk67l+vrdnS0vLeqDMRx99VFZW9rY978GDB+speHp6et6WEBAQ8LZiAACASqW+HWR98+bN6OhoBAJhWMX7779PJpMrKiretrwajJQgEOhtyW+XDZ6gAAAABAKVlZVNTk7Ozs5OTU0VFBQYnDuDgn7SM39b5g+V8/PzAQDAnTt33u3wj8DHs2fPGh5ocHDwuxr8e7TU1tYa1tjX1/fvsaJ/nlUY8LGmpuZnUWkTFG/uyLOnezuxQzG8WJwgBSfMwIuy8OJsrDATzU914iQgWTEO9EgbcqgVIRiB9YfQSKeBAAAgAElEQVSivMzsZUZWrI1w3CdWDpsdrU2IlqZUiDHVeAt+Iwi7xRZrRiQg5BxilJusOCy8ODQqNyAiLSgqQhWqdFExWFI7JwYQhgVBCeYwojmCCETgtkHQn5g6bDR23LDd4eNtdhuNbT41td4CsvpoG3ijMcLMEkcX+4UlVzV2LWRXDfvH17FcE3C8QCTTC8P1wvI9sXx3R5YExZZgeXKy2IMhV7FdA/nKELbcn8JzxzFkeLY7Uehv7+wJJcpNULwtNpQNCKcPzK3+YgL5yBRhBkfjMCJXXkiKX35HWuneuobrg33Lo70rwx33dJWP9OXP+iteDFUtawqvVKfsSwkZCfTsdHNRuyoHw8IXCvMu6VvvT/e82D/69aHZV4cWvzlw8PXi/tdzu5/vGF5S1w9mJxf5etQHqaYzE1f0TatdNU91VU+6ql/0t3w9pns1NbAy0Hm1tXIxP2kkMUQT4d0U5lkf7VufGFyXFtlTkrqnufhiX8PtCfXKbNfTxd4nu7WPxptWu6ufq6tfNteu1tUs5ebqQsNSFC5KFpdJprPIDGcijYYl0jAEGpbAwJFoeCoRR0NhqDBH1HYHxCa0CdwFREiGSZos3HVWnr1Wa+yoQcjbYaJGMLcazCwDOxdDWcWWnFI7TokDI9eamAbFp5gT0sDkTCg22dQpxgwZBiWGYVjhfGmEn0AVxHELZckinKVhbNdIaWBiYnVTWkuLMCbcTsExYthtoABNZUD7CCizxFLUbCHTwuR6qLwbLtNbSNRW/AYEqwLCLgXzyqGCSgtGqQWv2tG9leLehJdW2jLzTFlFJs5FZtQ8CDvb0TXHObJA2dwQv9BdcGOy6uFc07P9nS+P6L850fP1sa6He5vuzTfemW/6cqHl+kLrzf2aJ+fGn50fWz3Vf/+A+vZ8w+2FhtULQ48vj9+/MHT/s5EHlyceXt5x7aD+0GD1cEVKc1JYYYAqwcUtkC9TOktkdKmI6SLgKQUSb5mrv7dfZHR8ZmpWSXpuRXRKgZtvjMAtVBWR7RORLfdLJPK9IY7sjeYUIxs/M2wGlF4LZXeCOXoQpxvI0QO5PUDOAIg9snaxBsydWxDsEqQ4FSNPximS8YpkgjyBLIujy+NJwkgMJ8iOobKh+Tgw/UmSSNfA3OCY8sCQPJEgAI9lYQkYhkggUgXxVeEMVxVVKHGVsaNcaLmupFIFsUJGKheTS4W0CgG1lk+q5eHq+MhGobVGCuuRgXqlxl0SU60YqBNDesWwARGkn2vaKYTWyR0KvZzTQryiouICInKDk2vC89VRZdq4Km1mg65F19dUWlwe7F2pYNTxnVrY1s1seD0HWsmFlPKgJd9epWzzMmezCur2OmfTFi6oQwTVyuEaBaxdZt4mBbVJgO0iM/XaZaoWG7cI7apE7Az3gOjYgvjqvtbppcrR/QmaQfdOLVvfSe3TSHS69KGdg7uOTc8cnpvdt7Bn77GlY/uW9o8fmOjfM9Q9Pdg1Odw5OFpc16GKyBD6RZM9Ax2V3lbu7lauHo7yQCuOhz3Pk+8Xl1ja3Do4PbZwdOrAyZmDp6YOntp58NTOw2dmTlyaP3/z0Of3z999dO3h6o2Vx5fvPLhwc/n8jQfX7j29fOfRqStfTu87PLV3/6HTZ5Y+u3L5i1s376zcWX5+/f7LU18+P3v72Wf3nn3x4Nm1rx6cvnhpfHpao++ubWwtq6wvqWgsrWytrNUkp5f6+McrlFFi1yihSwxPEUsTRDjRA+0ogTbkwJ/y6jb45L1NUT806sqVKw0NDV5eXlAodB0lFQrFmzdv7t+/n5KScvPmzR8aazBAAgAAFAo1PT398OHD169fP3jwYHZ2Ni4uztra+oMPPhgZGXnz5s2TJ09Onz598eLF7wXNV69ejYyMvJt28fbt2+tZdezt7Zubm99mx7e1ev369Xdsh+t3X79+XVpaunfv3vWW7xS++eabyMjI700/DgAA3nvvvR+KDf+OnJ9SNThlfm+2y38EPup0OgNayeXyn6Luv2IfX19fwxobGhr+FfX/Z9bZgI/l5eU/i5L/wcf/4ON/8PE/+PgffPxnw8e0tDQAALB79+6/6z2/srKyZ8+eubm5t62DPy6huLjYsB1q+GSvA6ihumnTpnXPxR+X80N37969OzAwcPXq1R/q8HO1X79+PTw8HIlEbtiw4de//vXHH38MhUK9vLy+ky3yfzhdeno6AAC4d+/eu3L+Efi4nmnJy8vrXQ3+PVoMzhAAAODtHFQ/y9JWVlZsbGzMzc0vXrz4swj8lxNiiLz+oVwMf+9y4GgWHMND4KQOdF80OxLHT8YLMwniHKIkDyfOxgjTMYJEJ16MIyvClh5mTQm1JATC0D5Ae8U2K+4mKGkzAgVEopw4ZJYHSx4q8IoTx2UH5uTHZCSF5MaGlMVGNCUnlkdGpXr7+gllUraQxRCQqHxLO/JWE/ttpqjtZk7bgU5bQchNZo6fGDts3O6wYZv9x0Y2G7ZbbjSx2ASCg2wcrTBkNI0v9YqIy6hp1Mxmlg34RNWQpdG2zh5QqgjOEtiIhQ5uIgd3noOSg/RgY7x4RF8xzV9B8pbglCwnF6KDwslBjneUMu0FAguGwAzD2mxN2gB1+ghk+9/GiA+NLTYB7RH2TCrTx9snLTEsvSWv/NTg+PL8wqtD+75enHp5YOzF4eGnh4eW53uuj6mX1LXzRYVDCWma0MThiNgDSVE3iyJXGqKfdCU+GClZnmp7ODewOj/6ZPfgw8nOAy2lDfHhgRxOusJ9NCvv9d6F1dN77p/fdfvM1N3TM8unZldO7P5qz8Tnwz1Lrc3HKqsP5pfuSy+cjUqfCEiY8E04GJp+LaHwWXbVN/k1r0pqnjbXP9Q13R1oXR7teDLR+3pq/Ov5udO9vfWZOQHuKi5NQELRSU5EMhpPwxHouDXrIwVNwDgQkA5ERzQVhkRtR8I2YbdaeJiR0qG8WqhMDXPrgiu7LNw1FrJWGKvchJS3FZuxGZ+xjZoLZhdZMwusKVkIXJK5U5wpOt4UkwBExhsjo83Q4QhiCJbmz2Z6u5KEriiyzNKBD7VlwVEcR2epMi7FJzPDUSE2ZaG3MOEgFxgpBSlvwLtq7Nx6EG79EJc+sKwbJtFYStR2/AZrVgWUVQ7iVpjzK8GkfCAhG0zNRjhnw1nZYGaWCT17CzV3Gy0Pykh3FKXQVMmy6oqYOW3BrR2VD+caVve3rR7WvDzZ/epU99PDHcv7Wm/sbjg1UrqrI2OiNf3kVPPlRd2NA/ov92luL7bd3d+2eq7v4bneWye0d8/0Pr4y8erWnpULO64t9hzua5hsKNLlp9clxpdExmQGRST4BEd5BYd7BoV6BoZ7BUT5BMT5B6dFJ2QkZcbFZ7qrovnuET4xhd4ReTKfBIKzEmxJ27gNu8nCyxSTBqPXwllqMFtnxuoy5ehMuN2m3AEgZ8ScNQx27oMwGmDMHCteuL0wBi1OIUjyqfICtlux2LucJklDOochCB5WVA8nvi/HO9ojPD0wOtsnIEHAUxKc6Dh7LJuzlodR6hfLcfFn8qR+UmGyglOsoJfLyRUyYpmUWComlokIVUJsNR9VL3BoFdv2uFr3u0J14u1aCVAnBXdJ4N0CcB8POMg37RCAqyS2mUpKXJB7VEJicl5jcnFnUrkutaYrt0FX2dyhaW7ozI5r8eO3SVGdPLieA+rimnfwIY0CaJ0QXi2EVwlh1VzzGqZpLX1bK2dtZ1wvh+tk0E6peYvQpE0MUkvAnRKIRgTSioz1kk8bJJB8F0J8gEd0RmZyU0fj+GzV0GR6V7e/TiPTd3J7NAqtJmtwtH9yd0uDrjK/rjSnemJk9siR00vnPzt8/PTC4uGZ6cWdY3v1HZPF+e2hEUVSzySaPIriFkP1jmcFpyKl/kiRSh6eUdIxNLbv1Mzhsz07Flp7J3om56cOntl39vquk1eH9i3p547uPHlpz/kbc2evq3ccquqdK++eaxg52DJxpHniQGXvdM3gtGZmsWfP4dH9S7tOXFs8d3vm2BX15PzQwtHZo2cXT13YffDYyORMY5M6K6sgIjzezzdC6R4iEvmRKa7ObF+BNIIvDWMJAygcHyzd04HkYY33tCT6WpL+RqiK4R0+ODgIAAC+N6nN3/uS/5v9z5w5o1Kp1s+Mfu+998zNzYODg4eHh78TkvI3Rf3bd0hOTgYAAG87mK4v+R+Bj0ql0sD1CQkJ6xP/mxXWzxHauXPnz7s0QyJ7Qz76n2LY/3ln/2eQZsDH3NyfFL73NxW2xHFhTlwISmBL8XZiRRjwcS1zuCgHI8xEC1Kd+AkobrQDM8KWFm5DCbMkBMHRKpC9y3ZL3hYoeSscjcASBV6KsPSwnNqU8vasJl1Zc3tZUW5idmxoZoh/bmBAvJu7is0XEGgMPI1MZBEofCsH6lYzx21mTtuA6G1Apy1A1CZTx0+MHTdsc/jYyO6jrdYfb7PYaALbBIJC7JFONCZH7hkYnZ5b1t7eM5dfMxqQ0ESRx1qzlGAGHybkWriyrbycLbzJFt54C2+stQ/WwZeI8qM4ehLtPFDWSisLD5iFu5WlwslKTIUx6SY48iZbzMcwhw/B1n8Fwv4ChLwPhm1HYRw4AoFfkG+Qf2FK7Fxn07XJ/sfz48/mh57u639yqO/Jkf6Vvd1fTXZc6aw5VJQzEROrDQodio7Zl5P5RVPpcnf545GKe5Mt96d7Hu4aW50ZfzTee6e7cbY0syTIx51CDeOJWmLibw4N3N83+vDk+P3jIw+Oja4cHX9ydHJlYeTuZM/nXW3n6qqO5eUtxqdMB0SMuwdMuATsD4q9lJb7qLzqRVnFy8KiJ+UFK7WFD5qKH7ZVPOmsf6lXP5scPt7ZVpWU4C934VNYzmgaHUel4sgULJGMwROdsHgUFu2IRyHJKDwDjnYydoJtwm+19gHRciyEjQh5J9y9C67UwV074fI2mKgByqk0pxeZUfKA9AIYaw0fbahZFvhkCDoOiIwxcYw2to8ycogwcQqDE4MxVH+ms6ecJFSgKFJLRx7cgWOB5jowJExvf2d/FZhF3u5sYyKEWvvDWfkodzXOXWfl1gtx6we59pvLu6ESjYWwxZpba8EsgzBLQKxvL1yWKSYNREiFUlKh1BQgJXkbIWUjMX0rLQfOTEOKE+mqeGl1WfScJv/WjsoHe+of7V87fvD5Kf3XS91PjnXeP9B+dVf9Yndee0FQfrS8OjOgvSS6vz51lzb/xHj1F4vtD5e6Hyx13TnRcf+M/snlkde3Zl5c27l8evjaQtfJ0eYFbfVEfXFvaa46N70+LbkqOak8Mak8Ibk6MbkuMaUhKaUuPbMsPTslPs3DN4LvEeYVW+AVlSdXJdHY3jZ2HFNzmhkyEELORjDr4ewOCLvLjNVtytGbcHu+xcehb3eu9WBGDYSZBuf42/BDUcI4gjiTKstiu+VKfYrp0kQUM8CC5GLHdCPIVYLASM+YRP+4JM+gMJ5IRsSRCfZYPkfiHRjpH53iFx7v5xcc5a7MUIhLZJwKGa1CTiiTY0pk6FIJulzoVCVA1gvtW8U2PS6W/S6QLrGxTgLUSsBaMUwnAHfzgH180zaBeYXEOlNJig9xi05MiM+pTiluzazoyK9qL6torC0ta8lObo3yaPUkqyXWWr55N9e4m2faxQN28MGtAmijAFbHg9ZxzOtZZo0sE7XAXCeF6hVwjRSsFoPaRGZqsblGDFlztRRBuoRAndCoUgZP9SJGRCmjC9LS2lvqxycqh8czuwbCNANemiEXzYhX51DWwJR2Yq68ri01Izc6JrGiqnFwZOfhY2eOnjh38Mjp+b1HdkzN9/RN1rd0x6dXugdksOSxDHkc3S2eoYp3EPoghV6uURmVurHpIxcWT18dnTusGZ7pmVzYsf/U4tkvDl66s+fcjelTVw5eunXos5tzxy/W6SYyKjRx+a2x+S0xBc0xhY3xJQ2lnX3Di4enjy7tXbp85NKtU58vH/7szsThc3NLV/af/+LAmSvTi0f0gxPlVY3JKbnBwbGenqESqZ8zS4nCiHBkNxrHj8LywdHckESpDUZihVFY4jy+xceAv/lafvPmzdWrVwEAAJfL/Smdf64+KysrN27c+KH95Z9rln9pOQbz3/Ly8rur+EfgoyEoHQAAVFdXv6vBv0fL+++/b0Dkv9fufffu3fUDl37oUTQ1NW3evBkAAERGRv5Qn3/jdsOhhRkZGT/LGq3xfCiKbWbHsiZ6oJhhOH4SXpCBF2ZhhVlofroTLxnFi0dy1vEx3JIQDEf7mtu7mVgJjKCUbTCMHYHmHRZUUJPfOdg0sLN9YKJTq28qLUxPjQ6J8nIPlUrcqQyWAxpv5Yi1x+IwdAKZb+1INwKhjEAYIyBmKxC92Qy1yRS5ho9G9h9ttf1oq+XHRvCNxtBNQDACiaLwBJ7BEan5FbXtA90jixUt0+EZHTT3BFu+B4TLR7hw4V4MqC8epHIAqqzNfBAgHzjEGwHzsoQrLaBKKNjTFORlDPIAgd0soVIncw7OmITdjEJ+Yme/wcb6QxvY+7bg/7YHbabYIGRkSqhcEiyKS/Doq8880Vt7e7Lj0VTnyu7OlQXN6r6ux7s1D0ZbbraXH89NmYwI0gZ4DyXELlZWfN7fuzw18Gh3z/254eW5yce7Z59O73w01PNle81YZnyWh4sIh3enOud4++2rqboxpn68V/9oQfd4Xvdkj/7FfO/z2e7Vce1dffOl2uKjmcmzYSFjXt4DCrchhftcRPhScc5XHXWrLVXPKwufVuSsVmQ9qsp6VJO7Wlf0pKlyuadjX115cUSIr1AoItH5WDqLyKQTGSQsCe+EwyIxGEcMGklAY6gYMssShzHFIjYTt9r5Q1hFtpI2Kxedhbse7q6FKTog8naYe6etvMWaX41gFsOYRRasIhvnfBtqliUhBYaOM0dGm9pHbrcL32ofZuwUCicEO1H96AxPMVkkQ9NlNmiBDVZgRxIhWRKkQGTNc95CsDViwiCuYEwsQliJ9NSh3fVwtz6Q24CZ2wDIpQcq1SD4jQhWJYxRDGYUgBj5QFoe0CnVBJUExCVBCUlQYiKQEG+ESdiIT95Ky7RgpaBlCc7+8Yq6sth5bcGtnZXL83UrB1oeHu14drrrxRn942Md9w6qL+1qmOnMKoxRePGd3PkYPzk1zk9UmRY40pJ1aqrpzjHN8intvZMdD87onl4a+Ob6xKsvJp9dGls+NXjjgP7irPrEcONebcV0c9FYbf5QVf5ARcFAWdF4eclUeel0eelQaUlbXn52YoqXfyjPK8QjIc8jJlfun8zi++EwUhsboRUlyopdYMltRHA0EHY3kNVnyukx5faacvuBnEEQq9ecqQE5l5s7J0LYXlY8P0dhGF6SQJElsd1SZb45zopoLFdly5CjhG4UDx9BaIhbbKRXXIRriC9HJiRRSBQnnJgv9AsNjslIScnJSE9LSfUNyHFxLZMKK2WMCjm+TIEsUTiUyBzLRKhKoWOd0K5VbKVXIPoU4G6JiU4C1EggnWKYRgDW8YF6gUmLEFQmtcxUEuODXaLio6PSC1Lyq/NL6ytKauryChpT4hvDPJpVzu2uDp1SqE5o0s036uFt6+GZdPNAWh6knQdt5kKb2ObNHFArD6SRQLvkcL0C3iEGtQvNOkQgjRisFUP1YpheBO8SQTsEoAJX26ggWmCqZ2Rlapq2vnp8oGR4JF0/EtU5GaSe9m3f5d8xnTmwu3nH7pyWhrDsRGWUT0RGQkVL0+SehcXjJw6cPjV/4vDw/JRmx2DTcHdyZZV3XBbPM57pEkdXxFCUEXZcJVLg4R6dWds9OXfi8qHzN2YOLPVP7euf2jexeGL+9JXjXyyfuLly/MbDC7dXTl/5cveBE6V1mti08sDofPfAFKkqVqyK9IlOKWhsmz124sjFK2ev3750+8GVrx5fuP3o8LV7p75cOX3zwaELX4zPHWzRDGTlVUTFZvj6x7i6BfOEPmSaq50T3xErRZPdHPFr/y8QDmyIHReGlFis4aOfJekn+T6+efPGYIX5/6eV5Gf5uv3fEBIVFQUAAL73h/KPwEdnZ2cDWu3fv///bHkXL17My8uj0+lbtmz585///D/cBL9///7MzIxOp1tYWPgh39W/V09DuNOf/vSnH88I8B2x4+Pj7733HgqF+k67obqyssLlcg1nNL169er48ePfe3DQ9479d2o04GNycvLPsigbggDsyNxuRbfAuSEZITheIl6QjhdmYgWZaH4aipeM5MY7ruFjpC09woYabkUMgWP8wQ7uZlai7TD6NgjGHkf3DQstri7S9rf0jbRqe5oaWyqLCzKSokID3RRyOo1m54g0R9iAEPaWSLQTjUASWCMZ28BoIxB2Kwi7ZQ0fkZ+aOH6yHfnxVvuPtlh/uMXiIyPYRmPwJpC5FQbDUSii0jIqmju6hmdGZo406/cmF/VyfVJQUm9LichWJYT7U838HLf5wreogJu9t2323LLZffNWly3GLttN3LYbK422eRpt9zA1doOZyG2NhQ7bWchtDOR2Z6QJG2nKtzcRWhkJYWZu1lZBaGIyixnH8EsV19dEzmnzrwzVL4+1PZhsezDV/nimY3WibaW34XZD8fGMuIlQlSbEYzg94UBT05cTOx/tmXm6OLGyd+ejhdmn83MvZ6efjvZ9pakdSotOdpVw0Dg+hhzGl2njEs5pah5Nd6zubHs81vJkuPnlUMvX/a3P9U0r7TVXSnMOJkWNBnj1eLtpvFw1KuV4StThhqIbg60rfS3PO2pfqqueq8ufqEsftZc9bK+4315zTdu8o6wgM9Dfi8MX4+liDJNN5NCILCKWgnPCY5BYDBKHcSJhcQw8nWtNwgMJllvJ25DBcF65g7zDxk1v6d4Nc9NCFGqwQg1T9aA8OpGSBht2KZxZiHAusKJmWxLTELgkGCYego41d4oBOUQaO4abYdY2r50o/lS6l4AileHYa5mYHMgSR7oEyRZBKSQjvM0GDMiYC7T2A9OyLeRNDt49Dh69EOUA0GPYzGPY3K0PJtMiOHVQRimYkg+i5ADJWabEdBNkojEyAYhNhOMT4YQEMD7eBJ+0lZhiQkuz5CZh3RK5ESmebTXJ+3tKbk1XLS/UrRxsenC0/elp3fOlrpUj6rsHOy7tap7qyEkPkXIJlgR7MMkRxiba+7uwSlODd2iKruxtuX9S8/CM7tHZricXup9f6n95Zej55eHVC4MPTvfdOaL/YqFjabT2SHfZQW3Jorp0oa18obXySGvN6bb6M+2N+xprBsqKi1NTVIHBPJ8A96Rs97gceWCSQBLkTPMgETww/GRHUamNsBnB1UHYvSDWgBmnz5TTZ7aGj/1AVjeIqQY6lwCdY81ZSgu+l73IDysLJ8kjmMoYaUAK2zOCLPd1ErliXd1JPp7OQSp+hL84yk8Y5MF0E1J5NBadKFWwVZFucQURuVUpZeXpuaHBBe7KCpmkSuZcKceVu9iXuNoUy+1LxOgKIapOaN8isuySQntloD6ZWZfUXCOBqsXwThFUIwRp+dubhMAyqUWGOy7WXxQWERAWl5iSllWcnVeXkdESH9kWrGxW0ttckJ1yuFZqphNv6xJs6eYb9XKN+zjAbg5Yx4F0cKDtHLCaD+6UQHUKRJcLXCeHqkXAdoHZGjuKIDoRTC9C6MUWWpFVs9Aq3QcbEM/1LlKFNCcn9VYUjqmzh7qTuoeiO6ci2vaEtu4NUu9KHdpVOTuV3FvlWxshzJa55fjE1Wc0juuGj85MXdy789Jcx1F99d6m0rn6hK4iv9IMaWwC1y+WoYykKEMceG5ooYdXbFZD7475k1cOn78xd+T82NyRodmD4wvHZ49dOHTlzqkvV87dfXr57urJz65Pzu5Lz6sJjc0PjimUeMUyJP4kvqfcPzK7unH22ImT165f+mr58+XHV+4+vnDn8albjy8uvzz31ZP9Zz/vGt1VUNkSFpOhCohz8wgXywJYXG8C1cUGxbdCCqxQIrg9B2zDAFrSgFZMiKPYAu9pRQqwpvzUkFlDXsa383X/LO/8/wj5nzwBww/l4cOH7wr53/Dx66+/rq2tBYFAv/vd70AgUHp6+nry9HdH7tixIycn5/z58+/e+k6LIYf7hg0bvjeC6Tud364uLy+XlJRYWVkZ6HP97w0bNrzd7e3y/fv3o6KiNm/e/Pvf/97Ozu7d7EfrjpgGaR9++GFTU9PbEv7Pygb3W7FY/O7wH1EpISHBoMb3RsUbYsR+CC7fvHlz/PhxEon0pz/96cMPP+TxeN+b2NMQjPbjz+Rdnf+pWgz4+HNlfbIlCMztGVsRZBha4UALwnETCII0vDATJ8jE8NPR/BQnXiKKG+fAirZlRNrQIqxIoXBsANjRA2gjMUWwtoGxFg5EiasyKi4qJz81ryAxIzs+LSMhJzs1KTYy0NOdQyRirWysgTCEKcwG7uiEpOLX8NF5GxizFYTbDMRsNnPaZOr4qbHjJ9sdP95q9+EaPiI+MoJuNAFvNjdHUkgufqqssrK23sGR2cUdCye1gwfzKofkQZkkpb+jm8wpSGIRSDbxtd7qZ/6pz/YNnp9+6PrR+5L33xe8/6nkk63yrUYuxltcTTe7ADfJIVsUFttcbU2VjmAVxjKY4BBDwSRTMakkx0QnZAoKm4WlFdMoeUxZoTyvMXpUX3R+tPXRzt7HO3oeT+hXx7tWBzpXtC23aytPZKdNxIZpEkPGCtKON9c/GOh7OdH79ZTm6az+ya6B57tHXu0a/nqHfqW/fjgrKtFNwsQQGA4kD4qg1Dv4SHvd/d19D6f1D0Y6Hva2rmqbn6obnzTXr9TXXCnMP5gUPxwc0BXsrw4PbI0JGcpJPlhf9qW+fbVH86pH881498up7iez+gez+nvT3V9Odp/o13SVF8cGBrmwxDw0W2DPZmDYJByTgKMRMGQ8hohDEzFOZCyeQVmNtO0AACAASURBVGYLHRgUKM3WmGGCDrMQVDjI1FauOoRbF9RVA1aoIS5quI8e6dpuz69CUPPNydlgciYMlwLGJIDR8RBsAoyQhCClWGDjwdgYCCHamhyOpgZSaF5sslyE5YhtiXwbEt+azLWkMbZjbTc6mX1CNAbLzZyiwdxyC/cOW98BW58hqM+ouc+4ufco1GMArtBZcOsg9BJzUg6QkG6KSzHGJBo7xpsg48zR8XBcggUxCUFJgdEzIYwMGD3ZWphE8k2TpueH9bXlHx+puTNbvbxQ+/BAw4MjLU9PdT4/pV0+2PrVfvXlXa27tEV5UR5SBpqBcyAirYlIax4FG+oprs2NPDpZeft45+MLPavnux+f7VpZ0jw53/3kfM+jcz2PzvY+PN1z76ju8lTd0kDpSX3RUU3RIXXRodbi021lF9urrnbWn2yr2VlbWpOTFhAWzPX1dUlOV8SnS4MTxO6hIlEgnx9CVmQ5KSptxS0WvC4Iux/EGjJjD5hx+oHcPiCnF8TWAZmtZoxCM+cYEMsDLlDaSj3RLr4EN3+Gd4goJJYXEM5Q+RM8PTCerigvOdJbivOTkwMVtEA5XSVienLEHjRZIMU1nh5YKEmq9smvCs2NVhV5u1YoRFVyRqUcW+5iV+piUyJzKBXhKoXoOqFDi8iiSwLpk4IG5KBuKUQjganFiA4JvFNs3iHY1igyK5PC01xQ4UpGgEoWHuafFhNaFhvWGOGr9pdplQydzLFLiuiSgXQyY53USCcx6hJu7+GZ9XHM+ziQHg5Uz4Xp+NAuMVzvYql3tehygWtkkA4RsEMA1IrAOhFUJ4LrRAiN2LJVYlMlQ8aGUZR5IpcmH9+u6MihjITRgpihmrDejjDtULh6Z2jbjK96JHpkMHtvd+RMjsewP18rctV4BOojk0Zyqw43t32mU1/XFJ0tTj6aErU/NnRnvJ8+QVmdKE2PE0TECIKiiXIfisI3IDm/dXB676krB5auzRxYGtl1aHjXofG9x6cOn5k9fmHvuc8PX7lz/OpXu49eUPfPBMQW+kYXx+d1uocVsZUJJGmoIjwjtUbdM394z/lrx27cP31r5fDVrxYv3Nhz5trxL5aPXb27Y//psqbu4JhskUvQ2gFXQhWL50NleqCJcrgdG2LNAtuwQFYMoCXVzIIKtGJBHCWWeC8bSpAtLfQnflB27979N7M//kRR/+n2cz2BoKAgAACwsrLyrsD/Fx8vX74MAoHWEc1QoNPp68zn5+eHwWAePXr05s2b5uZmQ4dPPvnkbZ/K+/fvGzxSf/WrX+FwOMMxM0gk8jup3tVq9ebNmyMiIt5V6MaNG+uZt+3s7Nb1MTIyioiIaGxs7O3t/aEN4rGxsfW0ousDc3Jy1mcpKytbb3+7wGKxvheu1we+XThz5gyFQvnVr371xz/+0c3N7fHjxy9evDBI0+v1b/d88+bNj6u0nr3p3YOYlpeXDY69dXV135FpqFZVVf3mN795exXGxsbvRtf/uALfK/mfrdFwZPvPtXFvS+ADbWmbIHgIUmJH8cdy4giCNIIwEy/IXDt+RpCGESQ78eId2TG2jCgbeqQVOQyO+3/Ye++oOK9zfXRykhMnOU7cVekM03vvvfdhKkPvIIEkhOhNAiF677333oQQCBUkqwtLgIol2yqWbTUj1B3b4i48Z3F1ndixE9/8stbPrG+x3tmz97ufvf/4eHhrKIzmCyGaQVi1A5QNRTMFYpXZzeLv7+Xva/bxcQsM8omL3REVuTXI11vM4VAweAwYCQcisAgylSJk87Q4itwByraFsDeCmBuAtI3Or9JH7Hf0EbbOGWILgXDk0qDtW4tqa7rH9k3MnJ6Y+aBz8Hhu2aBfRLoyYDPHz50dZsCGcIEBaPtA8AY/+3c9175hePN19Z9fV/zlXfWadVrbDTrn9TrQGlfQOzrgei+442YcLJZGSOcyC8XCaoWiQa1qUEgrBZJSjqSELSvlsfJlsgK3qOqIts6c86NNTw6Mvtg/8nx04PlA77OurictrQ+q6y7l5U2nJXfuiRsv3D1fV/q0u/nlQN3L4dLnoxVPR2ufjTX9daz56+H6R93FfclhUW6uIgaPTeBpGMoYnd+Rmqp7h8YeHhxZHO97ONj5uLvtcVvT46aGpcaGG6Wl5/bsGY+J6Yve0R6zozEuajg1+XRezheVlc/q675ta16e6Pv6yODT44NfHh+4e3Tg0wP9x7oaarLTwwODdFKdjCZXEOQCqozDlHJYYi5LyGULOCwBiynk8hVyvRtbq8Cr6GAVmLkNoy0gmhrQllaERzvMowXq3gy3NCE9m3CGSpQsF8JNBbJTXNhJYFoMkBrlQouGsOOQ/CSsMAXPiUdwYpD8GLxwO124mcv3FbGMMrJMhmSLYUwhmMkFsmjrKKA1DBtnlTMhFCxKgxtrUD4d6KABdPAIPHgvLHgcFjSG8BtAe3RgXKsRsgKoIB3MTXFhxTvTY5ypMUBaDJQRg+LE4wRJeGkqQZWBV6UT5EkkS7IsYo9fQUnyRFfp5Ym6e4fKv5wpW3y/fPFk9fPZphezzQ+OVt+Zqf94qv5IW0F+bKivq9QoF8u4bB6VIqRRzQpRfJjnRFf6tVP1Dz/sfXS55+Fc272zDY8utD6ab3843/boUtfji92P57o+PVR1baTgcnf2hbbM2aaMs/UZC3WZ1+pzbjYXX24pm6kvasjfvTUqXBPib4iLMUTHGrZGWYK3ewdEefsnyPwzmZ6lBGP9d/SxHywfBikHVuyO6l6wuhusbAPJ64DSbKA02kXuB3P1wLpZKD4enAAf6aYgXWS4eluIJMyXHWwmB2jQvlKoJw/lJyCFSFjhKvF2rTZa4xEvdUtmGdJInnmMsFJZYrFpd7wlJ9RU4KEpchMVuTELLcR8Cz7fRC105Ze4sip15Ho9qsMI7TOBB8yQLiO81YhqNGCaTKhmI6xJ51BtAOab4Mkm4hYzO9RTHh3qlr7ZUhJqqvdXdnjw+oykQT2i3wBaKfrj5tDq5tji5tRqAHW6QnvViH41sl+N6NMievWoXjdMrze+yxPTbkE0GyEtenCLK7jNFdKug7fpUa16VL0BXWbG7/Gmb4oXG0p1rp1enkNBwWNhIaPhAcPxfv05wZ21m1rbNzV2ejZXBw6XRLyfE3Bym/m4u2ZG7X7Y02cy0H9sc9TJxJRLaak3U7ddDfOf97acMfsc9/c/sMW/P9qrOtYzM8EvPkUbtFUXuG1HekHb2MHjC9ffn/t44tj5gcnjwwdP73v//OTphfET56dmL81cvH504cbgofMFDWOm0DTv7UU7S8eDEupdN+WIfZN9EkuSa/oapk7tnbt+9PqDE7eWpi/dHj93dezE3PuXPz26cKNr/P34PeV6r60csYUrdhfIvIVyX47Yi8w2QTAyF5TYBSUGooQrD0YMwivhVBOG608QhRMl237635Q33njjzTff/Onzf535E29gYGDgzTff/CfywYODgwEAgJX4fW+v/6WPN2/edHBwAAAA7733Xnl5+YkTJ3bs2GG1qK16nGEwGAAAOHHixKlTp14tOBQd/b815W/cuLFa8chKa0gk0vLyMhwOBwAAubm5q3tTKBQAAACBQFZHVgW1Wg0AAE6dOvXw4cPVjHqpVPoPvcz79++30ik0Gt3f3z89PW0t3f76669bS7e/ePHi3XffBQAAZDL5woULL1++fPbsWX9/Pw6HAwAAQqFwFcOPCCMjI6+eHQAAREdH37t3z3reM2fOvLr2H0J6+fIlGo0GAAB/21LFWsUADodbD97V1fWq5zo/P9+645o1a+Lj44OCgn73u98BAIDvVbf5hwBeRfsfK1vpY3h4+C+CEM9WA7GCtSAGmOiK5wUyFVFcbTJPl8rVpa00MNSnsHRJNHUcWRGFE2/HibdjhVtR3M1whj+UbIHgXR2hXBcYnUwViIQytVKpVUrVSplOp/H19fb18TQb9QIOh4wnoqEoBAiJRZAoRD6LrcZT5M4Iri2Evd6FsX6FO5I3OlE2OtHW2pHes8G9Z4teYwdb5wje6AISqlVb42Or21oHJg6MHzoxMH60rnl8T05zcESqPjBM5GNh+auxvmywD9bZF27j4fSuYf3rqrf/LH/nDdmaN8Rr3xJufIfv8Dbf8XW+zR+kazeGQuC7iZQaDqdLyB8Q8YYE/G4uv5klqGYISxjCPDo/k47byaLtlPpmeZVWJxzrqXg4OfTVxPDXI4Pf9PV929P/bU//N919D5qbLlYUjWYnTZakz7VWPBrv/HZ/8zdjZY96Cxdb8r+szV+qzF0sSb+dHdcQYA6RChlkFhrHolFEZol+Mrfw0djIN4cmvzk29c3J6W/OHnx+5sCT05NPTu2/u7//WkfDmYLcI4nJ+8MjR/02Hw7dMhcV+UVq3KO0uBfp8d9WZfy1MftJc+bDhj2LtRn3KjJPZiTUbg3YrJOreEw+nc6nc7lMCYcpZTEETBqXSeewGFwuRyxT6Nz9gtU+bhyLCKVHMragFFkYYy3S0gz3aIO5t8AsTXBTLUxZBJTkOAkznLhpQHYykBEPpMW60GLAjFgYMxbBjEEwomHkCCB1O4i9A8WLIHJCKXRPGlpGAjIJtgT8eix2DQbxLs7lTdL6DcIN5BCUZBdOX4Z1b0F4tEO8u0GBI9CgMVjQGCxwGO4/gPbtwlsa8a7lWHkOSrQbwUuGsxOg9FgwIxbOTsDxk8niVKo8nSpPx6t2kwypnJAM067CiPr63JnB+o8PtHw5U7U4U/blTOmDYxXPzzR8dabx/nT551PV18aqDjXk5O8ICdAqPNUqo1SuEUhUXKFRJtnkra+vjD42VXRzruPexe77FzrunWlcOt/+eL5jab790cXOxwtdj+e7vjzZ/PmByo/7ci91Zs21ZHzQtGe+bveV2vRPmnKvdpae6Szvq82NT47QbfKRhQcqtm7Wb4/wi4kLS0gNi89WbsplepXiDQ0oTRdMOQCWD4NVg2BNH1jbA1Z3gZWtK/RRkussSXCSBgM1bjA3DSFQyY9wU8X76JP9JJE6Wigf4UME+6CdfaH2Ps6gUAg2Es1KosgzOKZ8kU+pyL2crq/EGKtQ3pXE8GL2zl2qrK3qPC9JvplTYKTmmwl5ZmK+nlmkkZRquSv00YjoMkH7jaA+PajLAGs1oBqN2EYTuskEazE6VxuB+QboTgM2yszc4SneHaQsCpTW+vA73elDJtyEDr7PFThicOw1O7RbHJvdgY3ukCYzvM2I6dHj+7WYAQ1qUIsYcsMOeeH7fQmdnqgWM6xRD2rRQVq04CaVS7MrrGmFO2LKDMgMCyoqCGdJpYtq+cJ+qWZcYZ5UmSYVugmz61iIZSDOu2uXd0uqqnmbqt9XN21QnZDJzgml50W6s67mExb3I94e73t7nPJw+8Com1eoL4pU8yLtGbVpxt1r/6agwbjw5vSo/Lyg2JTg6JS04pqBqffPXLl16tLNyRNzg1MnRg+fmTq1cHTuo6MLH528euvs9TvHLt3qO3Auq2rQGLLba1tRYsGof2y9fnOBKiQzPKs5t2uq+/jF6at3Tn32+OwXz459fP/QxU8PXbh26sPPjnzwcVP/gW0JeTJ9MJVn4ki9xKoAoSKAKfDE0XUgtASIWjE6OqMEziv0UQIiqOE0NwwvgCDeQpT+HTvRD73MU1JS2Gz2D3376/g/fQMYDAYAAPwT9NHPz+8f0EcmkwkAAIBA4EcffWTF9/DhQ2s6SHt7u3XEagssLi62tuXh8XhCodC6anl5+ZtvvrEWr/mf//mf2trahYWF/v7+ysrK/fv3W4lOcnLy6snXrFkDAAAiIyNXR1YFq8mtq6treXk5NjbWuva3v/1tSEjI3bt3V6d9T3jw4MEbb7wBAADkcvmqw31mZsa6/LPPPlteXu7s7LT2XH+1KtK33/2cOnXqR0p0ru518+ZNq3XT0dFxamrq/Pnz9fX1e/fujY+Pt240PT29OvmnQFpeXrY2cQ8ODl5duLy8fPXq1T/+8Y+rRbC++OILAADg6upqnTMzM2NtqaRQKFYDWrdt2wYAAHbs2LGq5ycCWJ3/HyvU1dUBAIDvXdE/jRZDlzmhOWtd6C54DYbtR5NuZ6sTudqdHNdd33UvTGZqE7+jj9EE6Q68dAdWFIHmhyFYAVCqB4Sgc4TxnaF0LJ7DZArFAolCLFZIJWqlwmwymkwGjVbN53OpFCoOjUeA0Rg4iUzgspgqElUBQQvsoOz1LvR1K9yRbONEsXGirbMjrbHBrbFBr7GFrbMHb3B2UZvNCbt317V3tvePtvSMllZ3ZmTXxcYXBIcnuQWGKX08eV4avBsbrMc66qAbNU5rlLZvyze8I7d5V273ttj2HYHdWr6jrRTkbIbBwtH4TBK9gc4Z5vCneNxpLnOCRe6mEGuIxDwCKRVPjMHiw9GwIAQuAKMMYSQnuw9XJn822rw01PKku+Fxc/WTpuqnjTXPmmsf1JV9XJp1KHXH0dxdFxtrFifGXhwa/epg59JEx+Jo+2J/+8POpvsNZR8XpVUEuvtIRBQSC4liENEsFUXYFRN3vaH64WDHs/Ger6YHvjky/PXRoa+ODr44MvDlaMv1lrIP8tKOxO8Y3xw67B9wJHLbxYyd92sKntQWvKjJ/bqz9HlP6cPOwvtNOfcqsz7L33M4JrLc1ztUKVdzeDwah03hM6kiBlXIoPKYVA6LzuGyeXKpyuLuuz02IShqiy7MTPeicrbh5OloYxXKvQnp2YbwaEFampDGWoSiECjJcRZlugj3QARpUN5OGCsRyoyHMuNgjBgYPQpCiQRRd4AY0TBeHIYfReCEEaneeLAEtpEKWoODvI0BvYV1eptku463HmK2EyfhdEV4Sz3G0gbx6AB59YAChmEBwzD/IahfP9yvF+PXRfRoJOrKcNIsFH8XnJMIY8fDuIlwbhKSk4jlJOJ5yQTBTrwgGaXcRfLOkkUXBRbWJPe0l58abb1xsG3xaPWXR0ofHC66f7j02cnaFyfr702W3B4vvzJQNl2dkR8RFKRR+mq0Hiqtm1xjlqk8NOoQH0NGfkjPUOq5M3XX5zvuzHc+mG17dL7jyXzX00s9Ty71PFroXprrejzb+eBo442hwqs9eZc6cuZbs+cb0i/V7b7anPVhV/FsT/m+1qL8vKTgmE2KUE9FmJ9hx+aAnbHh6amb07LlYbl0rzKcvgGp7oIqBsDyEbBqAKzuAWs6weqO76yPjS6SUqBkD1AW4+IaAnP3wgSa2RF+srhgbXKoINJIDBGAvXFOPlA7X8cNfhtA25wIyXBOJk6cR1IV0YwVAkM9V9dCM7SQPOpJIaX0xDTRnm3iHG9+vplVYKTlG8l5RmqBjl2slpRqOZV6cr0J0WWC9Btc+rTAbj283YBpMuLrjegGI6zV7FJjcC7QgVJ1qEQTPdlTUOAvqPZlt3pS+s3YvQb4lM5lv6vjqN6h1+TUbgE2uUMaPBBN7ug2M67LgO/TYYZcUSN65Ig7btAL1+2FbrPAm02QZj2o1RXcqoU0q8ENrvBaA7rchMm1YHYFECJiWG55fGGjgNnN4fTTRSNUxTRLNi2RTOjVw/76vjBj1xZlr7981FU+xRUeofOOUjnHGKLDQvlBpfqATjGlkh2USo7yZWe5svMc2Qdc+TGx5oDOMhEQNpGYNFKU39q8s7AsKbs4v6ZlYPLo8bmPzl759PDZy3uPnNt75NzUyYWjFz46ffXTuU/vX/x88eSlG/0Tx7NL2r1Cd/pvzU3I7A7YXuoWmuW2KSOpqKNh9Oj0/Ceznz64fP/Jhw+eXvj0welrt4/Nf7z/xHzHyOHMkpaALTtFmgAiS8cWe4lUQTyZP5ltRhCVLiiRM1IARPGdkHwnlNAZKwWTNAiGO5Yf9HPp4z/9Yv914Y/cgDUq4J/j5V5eXj9GH8fHx63sBwKBBAYG1tTUFBUVWbtUv/baazdv3rTCsmZFWett8ni8Z8+e3bt3z2ogXFxcnJ6eBgAAf/nLX171LH/zzTdW0yMAAMDhcFY9q67ekZGR7x24p6cHAAC89tprq6yotbXVylYBAMAbb7yRk5PzvRaTVg2rEY0MBiMmJqa+vj4lJcVK9WAwmHVOQkICAAAQCATf2/Snf7QGI+Lx+FV4y8vL169f/8Mf/mC9wFcdrD8F0vLy8s2bNwEAgLOz8yqMb7/91srmVzOE7t+/DwAAnJycrHOs/w3AYLBXK1Q9ePAgIyPj1f8tfiKA1X3/YwVrpMTqbfyLOOEkgSOStc6F7oxVoRjeFNFWljKOo0nmaHeytclMbRJDk0BXxVGUMUR5NEEWhZNsRwvC4ZwgKN0LTDQ4wIWOECYCzSJT+FyOSCqUKMRStVyuc9VoXTUKtYIvFjBYTAKBjIBi0HAiGcdmMxQ0mhKJlzjAORtAtBX66Ei2daTYOlLX25HW2uDX2mDW2sDX2YE3OLroPbyS0zPKahuLq5oy8quj4rPCt+4KCU3wD452DwjTevnwTVqCig0SY+wE4A0C53Uix/USp/Vy4HqFyxqp8zqRk43YGaKDUbdQ5IUiWStfOsYRH2ELjjPZxxiUAzR0JwFWioWkYsDbkSB/mLMe6KK0Q8hs6DL7kEB2fUbQlb6SL3rLH7QV3a/LuV+ddb8q63519p2KrBuFqWcTtsymp3xYU3d/79STw9PPju19eGz/w2PTj44eenxg4v5Q15W6wsJNvu5SCYnIRsJoeDBFCqeUBvgdz9l5vankXnf1k4GGr4abvh1t/nak6a+DdYttJdcrMmYzYg/EbB4M8+vb7HcwLfZSY8ni/u5n+3te7G1/caDz8VTbg72Nd3qrP28ou56ft3dbZJ7FO1imVbNlPIqYSRBTCQIqkUcnc5lUNpvO5nN4rmpdcPDm1Izs2PSUgIQQSahIuJ0kS0UZK1DujSjPVpRHC9rShDbVoTSlUHk+RJoDlWQhJBkocTqal4JgJ8KY8VBGDJgW5bJS8TEWxk1Ei1LwwngCZxuO4o8CypzW0e3eITi8RXB4i2K3hmPjrLclhwN1BXj3OpxnG9LSDvLoAnn3QfyH4H4DcJ9emE83wrcb69tJcq8naoqxonQEOxHKjIWy4+DiXWjRLjQnEcWIQzHikMw4JDsOptxJDs5zTSkPr2xIH+yoPre3/dahjsVj1Q+OlNw7VHjvYPHT49XPj9fe2Vd4a7TkUk/RgfLd+VsCQtQKf62rr1bvrdX7aPX+Jn1IoHF7hkdhR+T40YK5802fLnQuznU9Ot/5bL7nrx8OPrvc/3ih9+GFricXepdOtn+6t/zjgeIPuwsudeQvNGUuNO651JJ1sbPgg57Sw12lrTXZu/bEGkMsmlCLIdLfZ9fWwIw437Rdos1ZFI9SjGsjQtUFlQ+C5SMgZR9I1QVWt4FV7d/FPra5SGpB0lKoMhtqSEF4RqMDt9HCowQ7YlUJ8fztIaRQA8yX5+xHsgtAbAwCwmNQtAyyoIAuyKcI8mjyUpm6QeXaqTB0idybuIFlrJhUbto2brY3O9/MLDAyCgz0PD2jwJVTrBaWurIqDcR6M6LLCO7XAfs0zj06eIcB12wi1unRdQZYmxuoRudUqHHeo4GnmWiZHvxKH1azF6XbHTdsRuwzgif1zhM6hxG9U4/Jpc0N0uyOaPTAtHjg2iy4TiOm34AaNqDGTOhRD2y/J7rNAmsxQ1qM4FY9qFULbtVAWlzhdXpkmQmd54ZJ88bFhtHC02RuJQpRvYTSxCS04Mg9SOEhivAImzclEY7qpP0eyl4fxbCHfFwh2U/l7sMz9+JpoyTmMIM3whfvlfLHBNxxNneSLn6fJTvFlr3PkU4KVGNqtzGfbQcSMw5UNIwMlja3F9Q0V7b09E0cPnh6/uTC9ZnZq5Mn5vcdOz95Yv7wuQ/PXP300ueLV+89Ojn/Ue/IdFZ+bdDmlJCtmXE7G/zDcjyCdvuGZWRVdPdNnjx79ebVLx7cXHx088uHl259fubyxwfPzDf3T2QUN2yJyXDz2yFU+uFoGpbQS6QMZot8cDQdGC0GIvjOCK4TguOI4Dii+M5YKZTsimR54ATBBMnWn2V9/Bdf778u/7s3wOFwVq1Rf3fCjwxaLJYfo49W7y2TyfyeW/Y3v/nNq53irMnFVnPjqiPcanG8dOlSRETE33a1LiwstBr8/vSnP/3mN7+xMtGvv/7aSrYOHDjwKugnT57Y2toCAID169e/On7nzp2YmBir3xkAANjY2FRUVLzaSvzzzz+3YhMIBFbNq7//8pe/nDhxwqotMDDQap58VfnPkq1JPN/raq3Vaq3UdtUQu7y8/BMhWXe3MuxVy2VUVJS1iecqO3z58uXvvvuxUmcXFxcAAJCRkfEj4H8WgB/R85/wVU1NDQAA8PT0/EXAuGBY9nDGRggTiFUiaZ4kQRhTEcNRJ3E0KWxtElOTwFDHr/QtVMaSFSsMEiuNRAm3wDjBYLq3C8lojxDbQ1hgBBOH5zDoAhFfqhBJ1TKpRqVQaZQytVwol7D4XDKFhoRh0DA8Cc1gU2VMuhJPkTshuRvBtHXOJBtHku0Kg6SutyWtW6GP2DUb4WtsQGvtgCKVNiBsW0Rsctj2JP/QGJPHFr15k8Ftk8V7i8EjWGHwYEhkaA7DhY6xo0A20l02sIE2AhdbGchWCV6vcF4vdbCROoANLpRtWFkRW93LUx/gKk6yRaeZnONM6kEmupMCKyXC0kjg7Thnb7id0smZbwtlbkSzNpg8qDm7fE/2Fd8arl4arHncXfGwo/ReW/HnrUVftBR/VpN/JS3hw8zdNyor7w30Lu3rfTzVvniof2lm/On7B58dnrw/3L1QU5Ad7G0QifAEFgxGQ4PIPAgx2WLuT4290FR6u69xaaTt+XDrN4Mt3/Q1PG2vuFub/1Hx7nMZCVMJ2wYiQ/uiNk/n75rvqb57tP/Rkb4nkx2PD3YsTbd9OdVyf6zpXnfdzaqygcjIfbkDKAAAIABJREFU3RZPH4lKzpJyyWIWTkwnCOkkPpPCYZCZTAqDQ2dqFZpA/+CklNSY1MSQpM2uEWrxdoooEW4oQVlqUe5NKEsj2q0BY67HGqqw6mKUNAcuyoCL9yDF6Wh2EpQe50KNBtKigPQYEDMOwkpAcJJQgp0YQQKGHYmiBMOgemdbkf17DPv3mPbrBfaOWkdssJNgJ9i9DuvTgfbpgbt3gz17oN59CN9+lE8v0qsL6dWO9G7HercSjFVYRR6SnwplxkOYsTBuPFKZgZOnY9iJcGoMlBwNpcbCuQlITSo9KMc1Ljcovyi+rSL3zHDLZ0e6Fo9V3z9ScvdQ4d1DxU+OVz99v+azvfk3hosudVvpo3+wShbgqvXT6X31Bj+DIcDdEBCi9053jWn0r92XdPBkydW55oeXeh6db38+3/3y2vBXHw4+vtj75fnOx/P9S2e7Pz9Qe2Ok4lpPyeX2ooutufMtWRdaMi905M12F5/sLt/XUlJdlBYa5mUM0qtCdartJkWMlzgqlOqXgjMVIrUNcGX3Cn2UDYMUPSBVO0jVDFa1gpUdYHmXi7gNImtGaxsxbnU4nxpiUDUztEa4pVYVVSeJKGCH7SSFRGBCA+Gb3MHhrsREN16WjzTfR5TjLshykxYEKapC1M2BulYvS53ev0gWmcTbGcbK9mIWmJmFBnahnpOnY+e7sos07FI9tdKEr3eDdxpc+lyd+lVOPVp4x0oLbGK9HtOwUmQHXOfqWKJyzFHBcoy0Yg9Boyez04Pc744bsSD2miH7TMAxo/OgEdRthrWv9CFEt1ow7e6YLguqxwwfNCNGzai9FsywJ7rXA9FiBreYwK1GcJse3KYBtWkgrXpktQlV4IZOdUdF+WBCNlEsSWJVhpSfL6KUsAi1JFIXgX+ILjjC5U6JWEMKZpeG2aLjdmgFPSJhP4XbjWd2EBjtFF4vRzQskuyVCfcK+OMcwQRTMs2WT3NkExzFiFg7pLWM+Gwej0oezSnvai1rbq1o7mjqHR6cnNl/7Ny+o7OTx+emTy0cOLUweWJu8sTc9JmFs9duXfzs/qGzC4094zszK4O27gnalrc1rsY9ONscsMd3S15O9VD3/lOHP7h6/vrnl27fW7j5+cwHC8PTR5t6h3fnV4RF7fIIjNK5hwuVfhiKminwEiqCmQIvNEkNhPOcYGwnGNMRxnCAMR2QvBX6SNGh2F44YQhRuo0k+ztuxl/kZf6rkp9yA9bc03/O9Li8vGw0Gn+QPn744YcAAOBPf/rT0tLStWvXQkJCoFCos7OzxWJZJTTLy8uPHj2ycrL//u//Pnv27Cro8PBwAADQ19dnNYk1NjaufjU0NGQNyGtpabH29EtNTbV+u379egAAEBgYuDr55cuXZrPZusW6detWx1eFFy9eVFRUbNiwwTrHwcHh0KFD1m+t/l86nb68vHzo0CGdTmdvb49CocLDw69du7aqwaqfz+evjvxcwcnJCQAAXL9+fXVhdHQ0AAD485//fPHiRau99siRI6su6X8IyaonPT0dAABgMJgbN25Ye2f//ve/P3369Oouy8vL1oNbk4qsLNbV1fVH4kF/4p28usV/rGw9i9ls/kUQ2kHJdjCaPYIDxCrgFAueF8qQRbPVSRztCn1kaRO/o4/xNGUcRRlHkMdgJJFI4RYoNxjE8HEmm+yQUlsI2xnKQGLYFDKfz5HKBBKVWKyUSRQqmUwjF2vkHLGAQqdjEFgsDE9C0lhkEZuhpDJULhieDYS23pm00WmFPto4UDbYkdbZEFboow3iPRvwGhsglsLkSlRipUmsdJcovSRKP4nKV67111s2qw0BApkJT+UjiHQIgQgkYRypCHsGxJbrYisB2iqd1ynt1ips1sltHHT28GAXahpK2kZX7ecoj7FFx5icwyz6JAffycRWMQn5HEwSDRqKsdc5OQucwUwglOOi8OQmpgZO9BZf39f8Yqr7r5Pdz/d3PNrXeme8+c7e1jv9TTdLCm8VF3xRU7LYU/1oqOzxSOGXY1VLE+3PD4w8nxi+29X0QWF6updZw+WhcEwQnA6DUGkw0mada03ijlNttTfH+x8dHHs2NfxivO/5UPtiZ93njWUfV+bPFWYe2Z20NyFmNCnucHHmhZ7K29OtD8YbH/ZVLg1ULA1VLI1UPRquWeytuVVf2hW1JcFiMEpEIhaPTeFxiEI2Wcii8FkUNoNEoxPIDCJZIZR6mD3CwreFRW0LigtxizZII6iCGKi+AGmuQrnVoUy1KFMtxlSLM1YT1EVocSaMlwbmp8GEaQh6HJAc5UCKtKdGOTHjwNwkOCsRzkpEcJMRnAQ4MwpKCYNgfMBgg4ut1Mle6eJiBGOD4Kx4qKoQ6tOJ8B9A+A3CvfrhXn1Ir16Udy/Gswvt0YZyb0F5NGPdG7DaEoQkE8JNAa8Q0zgEPxGjycIpMtGcZBg1FkKJhdLjEZJUgmEPJ2CPekuKe3JyaEla/Ime+i9melbo40zp3SNFd4+UPD5Z8/h47a29+ddHii72Fh2oTMvd4hukEgfo1H4GV1+jztfo6uuh9QxRa9KlPtW6lO6gzqmUs2fKH1zuWJxtenahffmjob9eG3x8uff+hc6H830PZ3vuHWv5dLzu497Ky60lF9sK59ryzrVknmvLPddZdK6r/P228sGKnLSYEP9gndSLT/ViYHzZMF8l3BQJd82Fqxtgyh6oYmgl9lHZBVK1glSN39HHLrC830XUB5MNEA0jZM8Jmv8BRvBhfuhh6ebD2q2HVFv3ybb0C8PbOFtrGRFllMg8TmKhZHexIqNInp4n3Z0lz8yVF2TJy9LU5bHGwlDvPeYt2/mJgYwsd3qBiVWo5xbo+bk6Tq6OUaAjFxvxFWZ0nRusXefcq3HoVzl1q+HtWmyzjtBowDaZkJ1u4AatY4XSoUgFKzExqj3F7Z7cHg96vwdx0AMz7I4YdocOukH73ODdbuhON2yHG7bTDdNjQfZboIPuLqPukDELYtQd3e+O6LRAm82gFjO4zQju0IM7NOB2DbTVgKpwQ2d5YOK80Zv80JZQgnQHWxDD5SZyWRkcRiWb2c0WTHNFhwSCSTFjUEpslWOrZcRyEa2Cxa4mMMqxjDICq4ou6xYrRxWKCbl0v0iynyfex5aOs6VDbEkXW90rMw4YPId9AwbDIruTc+srShsa6tq7e8b2jx8+MTFzpmv04PCBk9Mn5w+fuzJ95uLE8fMjh0/OXLjywfXPxo6eK20Z3pFWGRRd5L+91G97ldY/2zUg2yeyPLdxqn3/7PCx+aOXbp269tmxhY97Jo6UNHSkZOSF7Uj0Do5w89mit4RJVQF4qitL4C2UBzN4Hki83BHCcoQwHCA0BwjVDkK3h3OdMFIoxYBie+NFoSTZdrL8/w2p+kXe4b8q+Vk3YE1rmZ2d/VmrVidbDWSrFsPV8eXlZYC1U9DfzWJ5dd7c3JyVt23b9v/JolrNirVmd6vV6k8++WRpaSkhIcHq5rZmPBw/fhwAANjb21vzuFfblsfGxh49erS/v9+anf36669bveEXL1607v490M+fP8/NzbUGZf7+978/fPjw8vKytS5RSMg/6Iyk0+kAAAAcDn/1XD9LtpoJU1JSFhcXr1+/bs3y+c1vftPT07O8vJyRkbFqJPuJkKy7P3nyZO3atdbrtf7+2/rqVguxNTPGSjcBAACdTl+NVf3eQX4WgO+t/U/7WFlZCQAAdDrdLwJsvTPWDkoDYgQuWAWMbMayg2jSKLbKGv6YzNYmfmeATKCrEqiqeII8Bi2JRAi3QHkhLkxfJ4rZFiWzgXIdIAwoioUn8jgsiYQrUggEcrFAphDLNDKZTsmTiWhMBgFNIMAJZCSVReBzGUoWRwvB8W2htPXOxI1ORBtHko0DeYU+2hLW2uDW2qDW2sLW2oLsXZBAGB6EoKAJQhpbL1UFS7RBMn2Q1i1Mpg1gC4woLB+JYaMJLAyNiWSSwWy0A9fFVuSwQW7znmrNu6q176nXbzDYOQc4oRLA/HqKbJglm2TyJujMMQZ1gEVu41LrBewqCS2HjYnBOnraA6VgMBcJEeNEftKI1ODu9pxr403fHB5cPjr68tjwV8cG7h7ru3Ns4N50/53mhvv1VQ9by58Mlj4bzns6lLE4VLg0Vv9sou/pSO9nTTUn05OSTa5yBhuOYTgjGGAYjQgnuYulWVs3H2mpuz45unR8+unR/U8Pjj7e1/flQNud7sZPW2s/qqs4k589nbprOi3tRFneQlf5rfHaez2lD2uzHlXveVKX+bQ552lb4WJr8Sc1uY3bA7eZlUoRi8tismkcAVnIowo5VD6LwqITyFQcgYrFSbkCg0bv5enjvykoICrQO8FdsZ3B3wHR5SJN5ShzDdpQjdZXYXSVWF05TpGHFOwGs1NcuDsh/F0wSrQjMdKOFGlHi3FiJ4B5KXBWMoKRBGcmQpjxIEa0Cy0CRN4Mw/ojoG5wpDeauBnPSyQr8rCmerj/IChwDBo4hvAdxnj1Yzx60B6dGEsr2tyEMjeg3Ooxphq0PHel3CM7CcSKg3HiUYIkrDoTrchE8HZCGYlQeiKck4JRZ9HcswV+acrgKNfIbZ4ZO8Jn2qq+ONLz8P2aB++X3X2/5M775Y/O1D06VXdzPP/jsaKF/sKp6rScrV7+Kr6/Xulr0viYNN4mlYeHwhgs4e/hykoE/jWqgr7QA0f2fDbfcPdU9ePZxpfX+r/6qP/xlZ67cx3357u/PN+7eLbnzoHWGwN1H7ZUXGwrPd9WcKo580xrzmx7wVxH2QetFUdqCpvSY3eEm6VmKlTlsl7t8o6WZK/a5KLKhqoaYcpeqGIYrBgGqzrB6haQuhGiboUoeyDyERfRGEI+SXM7xvQ5xwlc4IdclYReVW26qtt8RR92UbdlThsxq4o8LY86Lo4+Io07LE88pEo6qEqcUiftU6eMyFN7JOlNst3FmpREc5R/kL8gxp2WaaIVGNiFOl6+Tpij5+YYqHlGVJEZWe4Gr3WDtmodepT2A0rnbiWsTYVp0hKajPgWM7rTBGrU2FcrHCpU8Bozq9lb3uMl7vPk9HrRer2Ivd64Xm90jye62wPbbSF0mwk9JlyfCT3sBh1zdx73tBv3BI55QIctiC43SKsZ1OwGajWD243gTh2kSwPp0MJaDKhSC2a3N3ZHADYwFKffQuRtp/O3MERbmaIkjqBEwO8SCvfzJAcEkv0i9pCU2CZFVorR2Rx8OomchiQkwYg7UfQskrxVrB5VyCcl0imBZJIrGWdLBtnidia/mq5pk7v1mb1GfH0GgrZ2xhQ0VtS0tXYMDo8dnJk+cW7y2NnW/n19+2amjl84+sHVo+evHjx3cXTm1NG5yx98cnvg0Mnc+v4tuyo2JVX7RVWaNpfKvDI1AXmBcQ2lXSd7Dl0ZmLl4ZOHT45c/nT53pbZ7LCW7ODBsm09QmJd/uJd/hMVrm8o1hMI0cYW+QmkgjeUGx0gcXOj2IKo9iGwHItmCqXYwjiNGBqUa0RwfvGgTWR5JUfxvcu0v8gL/VcnPugFrDq63t/fPWvXqZKVS+YPWR2vMIgAA+HFyevv27bfffvutt956tUzP8vLylStX/uu//gsKhfb19a0SIGtiBwAAiIiIWG1kbmVv1p5+z549MxgMq/OtwoYNG06cOGEtErl6WiwWi0Qiz5079+p5FhcX9Xr9asiglYyuWbPmx0t2WxOxX3vttVcd36+q/Yey1dQKAABWU8Jfe+211WI9T548sbOz++Mf//jw4cOfCGl1x4mJidUm7rGxsavjq4IVfFVV1fLy8ldffeXm5rZ6e05OTl5eXtXV1XNzc6tVln4ugNWN/gOFiooKAACgUql+EWy/0sdf6eOv9PFX+vgrffyVPv4if1D+k5VY+0C+8cYbr2Zr/FzAUqn0B+njixcvrLF0MBjs/v37P6J6dnb24MGDfzshMjJSr9d/9dVXVoJopTVOTk7d3d2vTr59+7a9vf0q2VpeXi4qKrK1tf3d736HRqN3795tPeGNGzf4fL6bm5t1rRXb7373O39//66ursnJyenp6a6uLpFIZN3o3r17ly9ftkZtms3mVf706tZWOTc3FwAAgMHgv/3qJ47cunXLWr3IujWbzX7Vj7+8vDwxMfHWW2/dunXrJ0J6dd/W1lYOh/NDVR6t8X+r0aIvX74sKSmxs7NbJZFW4fXXX+fxeLdv3/4nALwK5j9Ktjr0pVLpL4LqXVu4E4KOpsldcFIXvAZGdSeJwlmqOJ4+haNL4bgmczSJHHUCSxXPUMWR5Dtwkm1o8RaEYBOEE+BM87DHae2QEnsY1wXJRuG4VLqQw+QJWBwBlyuRiBRqhdaglSmlXC6LQSZRcQQKhkgnMHlshVBiQhDF9lDGeifSRieCjRPBxpG40Z6w0Y6w0Q5v64B3cCY4g4kgGBWF59E5ripdiG9Q8vbY4s1RWd6bEzQem0QaT5ZYR+MpqDwJQywRGlQ8k4RqYMAUUBvx+rcFf3lH9pd3Ve+s1dk4+SHJOwXqZrOyQytoEVAq8MgcF/BuB9AuR3whjlZOpZWSsXugoKj1G33/CHJdg3YFkgLwgkiWe4osKdN0qCp6qbPgryNVX41VPR6r+Gyk5NOxis9Gq++0lXzZWf1kpOPFzNg3p/e+nB19fmbsyemJpVPTdw6Nz3U3j2SnbTXpBDQmCkWBwyhIEIHohOICwcEcRkf01tnynDtd1Ut91Y8HK58MVzwdqXoxUvNioPppW9knuTtn4yPOp8RcKc38tKd6aX/nV8Nty621y7WlL6uKv64sflxedL0gd2bXzj3u7t5imZgt5DMlfJpcTFGxSSI6gUsnsGh4KoNAZFGwSinZzczzC9CHbPUNjQ0MSvJ2jaJIo+2N2S5uZXC3GrSxBqutQMsL4ZzdzswUZ0aSCysZyklBcJORzHgYMw7KioOxVoqHQxixEFE6XpSB4+yEMRNdGPFAZhyItgPCjMYIkxjKPTx9gdC9WuDXzvquSDjIfxDsN4Dw6cV7dmLdWlD6WpimAqIqAatLIK6lCG0Rkp/mxEp0ZMY7sxMgvCSEIAUp2OkiTAWJ0pGSLKwsB6/IwWkycJY0RshOdWScx+7Y0Irk6JmmoluTjU9PNy+dabh/tu7zs7VL8y1PLjTfPlTy0XjhbHf2SFF8xiaLv5Lv6yr3NCjMJpnOKJCbmVxvEjoBi9qJoiejvbN4WTUeewfiZsfTP50peXah+fl86+O5lnsfNN4533JvoXvp2ujjD0YfHh74fKD9fEvp0brsw41Zx1tyz7YVzrWWzNWXXKgrnW2tbMmJ3bJFyzJhHFWgd2QEB2UEWFUIVzXDVT1w5QBMOQBVdUPVbRBNC1TdCVH2g2WjzoJ9cPlRhscC23eOGzDLCzwtDZlVbTqv3XRBGzqn3TSv2TSvCltQhF+Ub7kkC//uCbuk2HxZFXpFE3RVFXxBFnKE59/KckthqywqES1IQtippOaq2UUaXqGGn6dn5ZjwWRZQgQVU7gaqM4KbtY7taoduNbBDA2txRTXqcY0mbKMJ2aQHNqgd61TODTpUmzurx1c64CPp9xH0+LC7fGidvqQOP0KnL6HbC9/rge+34Ict2L3uqP1e0AkvhzH3dYPudj0W5zYzpNEAbDQAV0yPBkinDtqlhXXoEA06eIEekuwFiQhDhCQTgguZwbXc0DpGcBHVN4tsyKZISqnsBiqnkyToJUsG6NJxgXRSIZ3QyLplnBIiLsEOsn0dKNoGnuZCqydwB2jcfVTWPhJrnMTdSxGPsoXdLEYVmV/HUbTJTQPGsOnw8tnKK7evXvr4w9lLc8cvnDvywbmpM+eGj5wZPnJu77EL02cunbj48fnrt698fu/Gl08+urM0PH2ioLo9elfBrpzGiPgyg1eSyhTjEbQ7YXfj4OQHH3x45+PPl27cXbpy8/Pjs3PtfUPZhSWRMbHxSSmpaVnZOSV5eZU5WVW7UoojI/b4eO8QCiwotMDekegAJNsDiXZAgo0LxRbGccLJEUwLVhBIkG4hKaJIyphf5NX9q5KfewPWjJl/sYuPtcDO9/zAViQrdR8nJyetpi87O7uGhoYvvvhieXn56dOnZ8+ezcrK4nK569atWy3u+OMHuHDhwr59+y5cuPB3LXw/Eqv3Q2pPnz6NQCC+R5JWP7JYLOvCVW84jUabnJx8+PDhy5cvFxcXDxw4EBMTg8Ph3nnnnaGhofz8/J9SoOeHwCwvL3/99dczMzNTU1NXr179u9NWz/hTIA0PD/9dJX87+O2331qjKl/96uuvv967d29ycrJYLF6tl/6HP/zBWpnolwXw6r7/ZrmsrOynF+b8h9jeWg9xhFExNBkQw3fGiCFkV6IoiKWJ4plSOMadbF0yWxXPkkUxpdsZsgiyZAtBHIYTh6EFm2CcICDVxxFvtEcq7KA8JzgLhmESqVwag8NicbhcvkQs1ag1JoNeo5AJOUw6EUvEIPFoJJlI4fDkIoU7kix3gHHWO5M3OhNsnPG2TngbB5ytA87eAe/oRHQGklxAFDRWwOQY1IZQz4D4oPDdIRGZvpvi9F7BHLmGyOejOQwMn4YRU3BKMsVIJ7lRsCYsWAOykWx4l/fWWtG7a8XvrpWtsTM7omNIglq1tNOV3yQkFWBgyXbg2HXw+I3EbAQxDwNPgzrssNkQ+PZa858gbu8QAx2ZiQRWGk2czrakCnvqIu+MVj053P7kYNujfU0P+qvu9Vfd7au601Zyp730Xk/Vw7GmFwfbXx7reH6o6cnBpqWDrZ+NN55tKerZEx+mU4lIFByMgIKQkGASCkRAu8C0DEZZ+OajOem360uftJUudeQ/6Mi+35Gz2JqzVJf9sGTPzZSYi5HhFxMir+buutlQdH+w8dlo28vRtpdDTcsjrS/3dr0Y6b7Z0XyoqCjVN8hTpJbQRHyyhEeSCcgKNlnKIItoRAEVz6QQ8DQSRCDeqDE6egYy/be4Buzw8I42KSMgoh2v67PWm0uczdVwQy3GtRqrLEXxMsDMXSB6IpgWv5KzQotB0mPRtCgUZTucsh1Gj0JwEjCSdLxkD5a3C85OgjATwMx4MDMeyk1CSdNJqhyqvpjmVkX1b6MHdZN92mFerXDPFpRnM869EWOuQ+gqwOoSoKLAWZHnosqHKXOR/J0u7ARnZrwzJwkk3AWVpiNEaVDhbrgwHS3NwihzUZo8mCLFSR+DCtghjYwwp0cG1iRGHG/O+Xy67sXpjqUzLffONNw+W7d0qe3ZpfZ771d9PF54pmX3QGZkZoBbqFwcqFW5u8rVWr5QQ6VrMVgzDBwOg2yHYbbBJVHkTamywhK/qd7kq9NFj07XPTtb//Rs3eLpmnuzjXcvdT24Pvrkyr4nZ/c+mOo731kxXZe1vz7zUHPu8daic22l5xpKztWVnGupHChJ25MUZPITYJTYdVySsywGqiqFq5vgqg64shuu6IEpumHKTpiqA6rsAit6XKT9TqIRmOoQzWtuhT76XeD7nRMHXpCFzCtCF5ShC8pN88rN84rNc4qwOUX4nDz8gjz8vDzsvGLzBXXIJYPfdb3/vCZgWuhRwdRspYmkUj7BT4xPUFCzlewiFadExS7U0nONhEw3eKEZXGkErVRh1INadS7NrsAmPaTRCG8wIeuMiDojrNEIa9RDmnTQFiO604PS58Ma8Gb2e9P7vSn93sQ+b3yfN6bfCzXghRz0RA55IUe8kWM+yFEf2KAHsNts2+7m1GwBNVpgDSZwkxHUZgB3uEI6tPB2LbJRjy4yIOIMTiEBTh4xQEMuzNiA8epEhTfbB9Y6WKpcNLVocSOF08yk11GYDRRuG000zJUdECtn5KppsbiPwqyGUCqh1AY0s5si2cdVHBQqj/ClhzjiabZ4mqs4KJHvk/C6+dwWnrBJrGl3Dd+3pfpMzUc3P/ro+tWFa3Onr5w9NH9q+OSx2pGpjqmToycuTp69dHB2/sj5C8fnL52/9tkHH95tGTi4K68hPD4vNb8jIqlK454gN8W4BaVFpdY0Dc5Mn/3w7LXbZ67dmp5daB8/kF5SE5mctj06JjE5JSc7t76mfqh3aHp8+sjETEdD9+6kLDe9H4UocHLE2TsR7JyINk6kDUCqLYzrjFOg2B44YTBeupUojyEq4v7ha/mHJnzyySf/iuXsh9T+3zC+uLgIAAD+6YyZ1SuyctAfpI9WBrlaH+dV56yVqL322msdHR2r6v7NwsuXL7u7u+VyOQQC+eMf//jnP//Z3t6ey+UWFRW96q3Ozc1d9f/+7RE2btz4akWhf88R/p2QXr58efHixf37968WWlpeXv53Avj/70pLS0sBAACPx/tFtnhjLcgBSkFTJU5ItiOKDyIqCQI/hjqCY0hgGZLp6niyKALPCsbS/TFMPzTbD80NwAiCUfwQODsIRPV1wpvtkSobMNcBygCj6HgKm0pnM1lsDpe3Qh9VWrPepJWrRBwuk0wiE3BEAp5GYwokarnWC0tVOMHZG4DEDUDcBiB2ozPOxglr64RzcCI4AckuYBoUzmJwdArXIIt/lM/mJN/wZM9NcWrPQI5WixNy4FwyhI+DSbFQJQqiQUB0UJAeBNQ7OmpsN8rXrBG+tfLw3ljH/YuN5G0XbwdUIpaYT8UXEVHZMORuZ3wmiFWM4dXQmBUUVAYCGO3guGk90H8tNtyOEgemZuJIe3C0XXhpHKmiKGC+O/f2VOP9Q+0PD3Q83Nv6cKLt4VTH4njLl+OtX060Lx3oeXGk/+Wxvq8nm17srX08UnOrs/x4SUZj9LZNcoUUR6dCyEQQDedCxwBpEGcsn8xN89+0Lz3zk8ba50NtT8eblibq7++t+XKo+mFX5VJD6ecFmR/tTrmUkXwlP+3jiqzPG/IfNhU+byr4a0Pet+2l3/bVPe5vutxcOZS7J8rLQy+UCGhcPoUvIAlERCGLJKCS+BQin0xkkkl4ChXElaxgfTrpAAAgAElEQVRRmjd6hNB8t6l9dpgtUVp5JEQU86Zrpp2xGGysQuprMLoanLYCK81H8PfAWLugzCQYIwHBiEfR41DUKAQpAkqKgFJ3IFhxaP5OlCANxU9FcFPgK9V24iHsBBg3GSHYhZLsQSly0a4lGPdavFcTzlIPd6tFmGtQpkqsoQLpWgbVFLso8p2lOU6STKBkD0ScjuCnwLhJUE4ShJ8CFaXBpOkIYRpMlI6SZRHl2VhZJkSSZivY8Z5qi4v/NvH2Ld/Rx6Stpzpy7szUPzvbsXSm9d7ppi9O1z9aaHt+qWPxdP2N/SVnWtP79mzfE+AWLBd7KaVaBZ8vo1KkKLQCBHZ1tPN1sA90AgcAyYFwbTg1MlHZ1RA5uzf7ztGKpRPVT07VPDpdu3ihdfFK3+LNfc8+nnq+sP/R8eFLI3Uzbfnj9XumGrJnmgpON5fONpTN1pWdaSifqMqtyYvftsPCN3EceUyQPAGqLoNrmuDqdriqa4U7yrthii6osgOy8nSCld0Q1RDacIDhd5bld47je5bjfVrgPysOuiANnpOFrjzyTXPyTRfkm1ef8/LNH8g3n1eEzqsDrmr8z6h8h0WGbI7Eh8ViqDnoQCEmXk7OUDLyVawiFavIlVFgIOWa0GVGeL0B2q6Htq/0noY0uYKa9JAmI7zJhGgwwBr0sO9aFyLaDKhOE7bPnTTgTe33Iff7kAZ8iYO+hEEf3JAPZsQHNewFH/KADnvCRrxWngF3SK8Z2Gl0ajO5tJggzWZYswnabAQ36UBNOmijHlFrRBebMWnuqK3eEN9tENNuuKYSre3EWvrhm9vX+Tas0VWtE5baM0rApFI0uZLEaKTzeliScb7isFh1XKI6KpTtZwr7idw+EmeAwh1liPaxpVNcxUGeYD+Du4/G3ceQH5YoDyml++TSIYWyT2PoN20e31xwJP/Y7EpWzKVPLs5dX3j/8uzoyWO1w+PtU8fGTi1Mn796ZO7Do3OXj89dOXfp5qm5m9Xt++L2VIfE5KUX92/f2aCwJIgNUXq/lC2JZeVt+wYOnp06szB5dqHv4PGStv5tO7P9t0SHbdseFRO3a2dqfk5eXUV1V1PbUGd/fVldalyau96HRhI4O2HtnHA2jvgNjsQNQKodnAckKNEcD7womCDdSlREk1T/PH188803ORzOL/Lm/79Qyezs7L9OvhkMxg86r1fv9O7du7t27dq4ceOqbW/Dhg3u7u6NjY23b99enfafLCwsLFhbJlqP8Nvf/hYCgYSFhQ0NDa0Wwfk34/8/Dun/OIB//cJLSkoAAMCqpflfVPjGGpAdmIQkiRzgTDs4B4iT4XheNEU4SxdL18YRJduRjCAQ1s0ZqXNG64AEA4jiBmN6wVl+UKYfiOLtjDc7INUbQVx7MAOEoOHILAqdyWQxOByOWCRRK7UmnZtarhVxRGw6m0ljMZkcnkCi1Jh1Zn8yUwFCMja64Da4YDaAsDYgvA0QZwckOLqQQVAGAsPHU+VSrb/Zb7t3WLxXeKxbaKTGL5Sl16GlHJCACBRinCUIoArupAXZuTquV69fr12zQbfGzrjOwbTewbBug+qdDcI/b2T+wZ7xB3vpX+w81jhHOoJ3ucCywLhiBLOOJOvmyXtEgiYOIQ8DTwJBIx2REU6kJDBlDxyXjUCmQbGJMG4UOi3LONWQeGmk/PZk84PpzqWprseH+5++P/z82PCzoyPPZsaez+z7+tjE8rG93+7v/OtI05P++htNZYey0so2bQoSKqUYFg1MJ7kw8UAWBsgCOZHoeN52U0Bn4u6FuvoX+4e+Ojb87OTA4tHuxemOpfG2x/3N95oqblTkXy7PvlKZ9XFV5mdVGffK0h4WpTwuSHpekf68qfBuc+mZ8uymlJjNZp2Kz+fRWHwKR0DiCgkcBoFFJrJJRB6JxCBR8GQGmCuzUVqcPcK43pFarxijMUYhjUYI4jbI0kCqHLimGOVagdZVYXWVeFUxWpKD4KVDObsgnJ1wTgqSHg+jxkApUVDKDig1CkaPgbMSodwUGH+XlT7C6LEr1kdWApSVCOHuhIjSofJcuGsJ0lCBNFRA9WUIXQlKU4BR5sHlOSB5DlCaBRTvcRakufBSwJwkGDcJyU1CcZORvJ0IwS64KA3G3wkRp6GU2WRFFkaU5sSOfYux6XVJiL3vFnHEFnNaZGBF8pbj3Vm3369dPNv65ZmW+6ea7p9qeHy+9fl8+6OzTTenK850ZvVk70gNMnvL+TopVyiikPhIBB8IEts5KDesMa1ba9lgZ7GDuTkxPRGWUEZxQcCB7pRrU0V3ZiqWTtQ8PlP/ZL7rybXhJ7cmX1yfenHl/2HvLYDjurL8f21mwrbF3OpWMzPTa3rNzCS1WmgxM1qWLJMMsgwyymImWzIzYxw7DmecmdCEHc6E/6V4d/6pzdavdifZ3dkqq061bt+677zTX1Xf99F9755z7PNbB18/M3R9dvvR/auP7V1zZs+Gq/u6b+3dfnvPjuu7tp7e0zWxY3XbygJ7upGoBvHGZoJ5xwN8JCzi4wR+0cZ+ZschrHkIZx2mOGc4qcekuVdky6/Js6/JM6+plj+jzb+tL3jOUHTXUHTXWPz/m6Ho5zXIwjv6wjvagjuq3LvqrLOa1EHQ0iCX25V8phsg5IHkeh2r3chfZxZtsACbbOLNdn6Xg7nbSRtwkiecpFEHcdhOGLDhBhz4ASdxwEXqdxD77cRBJ2XYSR110ibczBkfezaVM5nGnAoyptMZs+n0uSDtQJCyEKQcTCXO+XBzPtwBH37Oi59yYSYcmHEHZsyBG1lkU8KQi9Dnwu12YHa4cFs8xPV+yopUSkU6JTuf7K+n2tbTTfvY5km2+wAlZzIh0Bdt2R4pWxfJ6Yijr0Xwd7ElowA4r9CdVhkvqs1X1KaLSsNZufaEVHVEAh4C5PNi+UEheEikOQYABziCWaZgjqU8Kded0elOGCwnbK7jHv+x1Jwjy5sONw4c6jt57eStV26/8Marz7z64qlnbowcPTp15vyRG7fP3n3t8st/ufHq2zdfeevWy29duvXqtv1zVSt35FRt7Nh2oKK1X+epV1jLTSn1WeWdq7eP75k8NrRwanDhVM/YgdYtezLKGz2ZhZl5RQXF5eXl1XXV9S31zR0t7Zs6Olc3d1QV1bqtqQIuiEIxk+D0+GR6XDIzAc2HkRUYjpkmT2Wpc9i6Io6ximv6D57m/09O4xKJJCQkpKWl5T85/uGw312BBzUC/1+rj7885ddff/3GG298/fXXv+z8v9X+9NNP33rrre+///6fJ+z/9ZD+1wP4h/8WW7ZsebDN/B/28MsDl0WjISgWniFPwgmS8ACSrqFJU3i6fJG5kqsvp8jykAxfAtoQC1fFIpXxOA2EYoKzHCieF81LQXFSkEw3nGKGYGRQjBBNFNDZAE8gBMQCqUSsUqpNBqvD5jPqHKDMIJfoQblRo7GaLV6fPysQzJPIDUSaIAlDTcRSIXgGjMhJwrKhGC4CJyLSlByxRWFIc2eUpxc3BEvrvPml5swshddNNSoQKhZUTYHqiUlmHMSGjrdDo2wxSwxPLzU/FeValpweRyxA0EuwqGA83LwMATyGYj0C5YTEyP8lzr8kuTKeuAHH6+OCc6D5uMl8yKgZA/ndLHo7kdqEZTbh+WvJnE4Srh2Jakom1CLENaSyDkP/jqKr4+vuze/64NjQJyfHvzg/982VIz9eP/7T1dM/XT7748XzP10899OFUz8dP/D9ockv50bu7d99tL19XfryoNyoosl4WICJldAwUgpWikbxOVRZuta9o7T26vYdX51c+OHG8e/vHPv8xoHPLs18fnbyi2PjH832vTm64+XhLa8Obf5L/6b39qx/v3vle+vqPlxdfX9j8/2eNX/ese7UmuYtpXmZFqNeKpMLJHKeTM6WyhliPpPPZgnYbCmbI2TzmVwAJzNiTQFGSokhUOPwNzrsDRp1LQOowQB1FNkKimo12bCRZNtKc+5gWrfSDRtJqjVYsB2taMcq2vDCRpSgHi1qwIvqCcJaPK8aK6xFA40YeQtR2ryYTpxXhRFUYwU1WEENWlyPka3Aqjpw2nU440acpQtn3kQ0rF9clQRX4uStSLANpWxHg21YWQtWVIfhVWGBeqqkkSZtokmbKdJmoqwJJ61HqVoIpjVs/SqSvBHCKX6CnfkomAUJFquLi93NlZldTQWnxzteu7jjrRv73r3e++HV/Z9c3f/FzYEvbw1++szAm+f23JjZNLa5piHP5dSJVCoeV0YmiBFwcUKSLCZeHRVmjAi3RsfZ4pPNiRQrAvSSaxttw7tLb86v/fOZrR9e3vP5jf5vXpz+7t7hb944+c3rx7965chndw+8c2Pi+ZP7Tg6uPbZ79akday/3bH525/bndvZc39Z9fs+2+X2buzqr0/LdbJOeZF5B/Fd8HCGYxvGGSdyijeOMIxjTANbSj7cPMFOmRDlHlCUX1CWXNcVXtYXXjKW3LBV3rJV3bVXP26tfsFe9aKt60Vr5orXiRXPZC6bS540ld/XFz6mLngWKrouzD0q83VJ9AQhoDBximhhdDOLq9bRWE7fDIlxrBTZYgS6rcJuV0+tgjrjoU27qmIM0YiMO2QlDDuLPRhq0k4bs5GEHddRBm3AyplzMGQ972s8aC1DH06iTQep0GmUmjTwXIM2nkQ/6CXNu7JwLO+fEzTrwU1bslBU3bSdOW4lTVuJiLkknsdeN73aj13kxLX5sVQCfHySmLyd7yxnWFqZhI1vXKzBNCR3zrLS5ZP9gvG1blLw9lNMUymyLl+xngwdl6jMq3SWN8YrGdFltvKA0XFTrL+m0pzXqIyA4C0imeNIZHjgvFEzSWWNk5jgZOCQAjyvUx9WO886Uy4HgxYzgsfTcydymvQ19hwbO3Lp09/U/vXDvz8+88OKxi2cPXzp37Ob1cy+8euP19+6+/fmLb31x9957F27c3bJ3vHxFd1bVpo7t8xUrB9SuOqmxVO2o8Oa0VrX1tG/pW7Ojb/X23uYN24saOzzZZdaUHG/68mB2QVZOYVZmfkZaTmZaTn5GQWF2SU6w0GbyCfgqDI6TmEyLhVJjkxkJGD6cCuL4FoYila3J4egLuaYKnvkf33l9//79B/Xk/sN9F7+c2B+2/5sUeFBu8D+Lj/9NQTx0+1CBf0yBB8nneTzeP3b4vztqSSQqLpmOIokXc0zgASRNTRV7uJrlInM5HczD8AIQoiUGropKkkXBpBFwIAIpjcIqYgnaBLIJSrMj6HYExQzFKWBYMYogpDABLk8oFvKlYpESVBn0FpvNr9U6ZTIzqLQbjH6XJzsjq6SgsLqwoFKntTJYQgSOBiMw4BQehiGBE0VwPIChKDmAU2fPzyhszSpdkVHakFJUYc3KBn0utklJMIvgFmaCiRhjQkeaYWHWhKetEY9bnvyD6Y9Pu5+IXx5Jb8JpuyWuXr10NZOdn0wzhlIFjxL4/4KWP4JPDaU3wEW72LJJCTAj4Y5ygRGheB+XuYGIX4FA1UERtUmMpmRGU1JyVURSbQx6BUK4iZu+x9Y5UnhqquPlyS3vje/8cGT3ZyP7vxkb/nF6+qfpuZ8mD/40Of/T3MJPRw/9cHrhmwuHPrt0+JVD43PbNrXkF9hURg4TwJIECIoQShMnMcRIModNYVs5gjaH81BtxYf92785sO/7w/u+nN32+dSWzya6Pp/oem943V+GVv1pcvXbC9s/OT78t5MHvjw8cX+278PpvR/M9r07O/TS4L7Da9dtyinN1/mcQouWbZQx9EKamkOV89hCHk/I48nYXAGLT2eLsQoLy5Ku8JbYU+od/lazo00hraFTCzDoLAIhF8soQ0makbq1BOtmmnkTWbcep1yNkLdBpa1QyQqooAEibkYo2olgG1XaTBbW4YBGnKQJCzRihbUYbiWKVYpglSK5FRhxPVHeQla2URbzja8maNfg9Ovx2tVE5UqSpIEoqsMIaxHiBqSsBatoJcqaSfxqHLMEwy0n8ipJ3EoitwrPq8bwqxGiiiRZNVxZj1PUIYGqWG7Rk+yMx+QZiSmFYG6ho7osbVVd1sS+6otHVj17YfNrl3b89fKe+5d671/Z//HV/e9f77t3cd+Vhe6BHfWlBTalhsEDKUQJCiZIiONHRImWRUiXhmrDI4zRMaYEiAGCNsBYFrQrg9/e5j02seL5E13vXNrzyY2Bb14+8MPrx79//dRXrxz+9MXZj+5OvH936t7loYsTm07uXnOiq+P8pvU3u7fc3rbjWnf3mZ4tMz3rOleXBfNcfIuRYm79GR/7CeZRvHESZ5jFGmaxxmmsaRxtHESb9mNtvYzUMUn+IWPdJUfzDW/r7ZS254KrX8pc+0rmutcy1/0pc+29jNX3gqvuBdr+5F/xmqfpZUfdC7bqu6bK2+ryG+KyC5ysYaajlav2yyRiswiTLk8uUaPqjOQVZla7hb/GIu60AF1m0TYzv9fOHnYxJjyUYfsiOw67yINOYr+D0GcnDNhJg3byoI08bKeMOmhjTvqYkzbmogz78MN+3KgfO+bDjHvQk270tBsz48LMOjGzduycHT9nJx2wU+ds1Fkrde5nm7FShp2knR78Wj+mxgfP8cHcPqg5DaHOwchKifxqPKeVyN/CVI6ITPMC+zzGN4lK7UN6t8GtXQj9DrxhVqw5KVdcBMEroOaK0nBFZbqkNVwx6q5ZTRetllMmy2Gdbl6hmZepF6SyAwLhLJszTefMMDjTLPYkW31cbb/g9F1OcR33uIbd/rW++p0te2eHz9+4+errb7759jt3Xrh5/tb54zfOn7rz3OXX3nnu7a9e//C7F//y3rkrNzbtHChp2pRRvnHllrnipv0KW41IWyQxFGpdZa7M2pS8Wn9uhTO9wJKSY/RmmXw5Fl+O1ZflDeanZ5fk5lcWFlaXFNaU5FcV51fnZpe5nBkSqQlPFsZByVFJ5Bg4IxEnQjI0RJGDpQxydbk8QxHXWM41/qa8jw8K7iUnJ//2+7D/7lrw8O1/RoEHSQM//fTTXw9e3Drz8OehAv/MCmzatCkkJITNZv8uQT4djoyGkGEYXhKaB8OLUTQVRejkqjJFxmKqLBPJcsdjdVFQWUSiKDxJGJrEWwblhsIF4UhJFAaMxWuTSEYYUQ/ByqFYMYIgJNEBNlss5IkkIgkoV2m1ZpPVrTE4FBqbzuRzerODWaX5RXVFRXXLs0v1agubJUbjmXAcC0HkY2kyNFlOpOu5Iq/GVOBLbyqq2ri8rD2QX2MN5oAuJ9+opqgEKB0zyUSOt+BibMhIByzMkxCWGhMajFiStjQyNxxWncBeR9b3yj3jRnArj1eLYvgiaconqLI/UjWPstIjRE1IcBdbMSoUjnAouwmifQzJLia/i0xbjyesxWE68YwNOMYaBLI5BrUigbIGq+gRefrNDRM5hxdWvXBkx1+P9b93ZOjjhdEvD079sDD/w8GD385MfzUx+tXU8DdzI98ujH5zZPyzIxMvjeyd6mitTQ1YZWoeQ0gg89AUPoLGT6bxkGQ2hcSUkOmlRsNwVfGbQzu/XBj47kj/F1PbPxve/Flf5xe96+7vbn9vZ8s7e5s/HNn4+YH9fzs6/cXB0Y8n9308te/+bP8Hs8Mv9e+bX7V6TXpBjtpt5ZtULL2MqRPR1TyaXMAWCrgCPkfC4fDYfDoXwKvtElum2VPq8jWYPG1ySzuTW4ZBBuHxHlyiF4EIJJJzYwVVMNVKnGk9xdRJ1K1DKztg8rYkaWuisClRsgKh7CCpO+hgO13aQpEt7sgmAI04YS2WX4XhlKM5FRh+FR5oIMuaKYpWCriSrGjFgytxqlU4xQoC0EDgV+L5lRh+NUpYi5I04eUryLJmqrCGxC4j8Coo3Aoyu5zAKsdyKlCCKoSyHqWpx6hqMdLKJGFxBCf3UXbwMXkGxJuvyCqwFxd5q0o9HW2urVu8e/dmTvQWHO0rv9Bfe3Go8eL4igtzHcdmOkYHm1evz/VlK9lqAkWFwyjgUEl8nDgiSrwsQrIkXB0eqYuJ0SfE65JgOhhODxfZ8MtLVX17yy7Mr/3ThV0f3xr+5pWFH++d+P7VE1+8ePDjuxPvPTf0wfMTb98ce+7QrisDm89tXXd+w7rrXVtubdtxZevW+c1rd6+pq60J2tMNbIue/GD10TywuPRonMEa5jH6BYzhIMYwgzKMIo2DaHM/2T3CTZ+VF53QlJ8zVl221Fyz1d1w1D/jaLjlaLjtbHjO2XDX2fC8s+EFR/0L9rrnbbXP22qet9bcNdfe1tdflxWO8/wrWQYvXylQKtFBO67YRax2UhttrFYLr8MkWm8SbzKJus2CPQ72gJs+4iUPuAgDTvyQh9TvIvQ58fsd+D4nsd9J7LMtcuTQ4i1sypCDNOTAD7sxI270iBs16kKOO5ETDuSkHTXtwMw4cDN2woyNNGOjzjlYM3bWpIU5aWGMW+nDNtpOO2GtE1XjgWa6423uWIUnRpiSyMqAkpfDsUXJ2Fo0dT1NMgBoF6TaIxTHQVLKJDnQT/T1kpyDNNthQHdOprgql11TgNdAzVW18YreeNViuO4wn7dZjplMMyrFmEg2IVQelCoWANkhEXCIL1rgCQ5y+XNc1Uml+aLFcdVlPe0wT9osG+yZG/Kad64empu6dvPmX/587y9/ef72y9fP3r54/NbNU3dfvfLa+y+/++Wtl14/dPzUmq7dhXWdwbIN9evHc6p3AsZyvrpApM0HLYV6d5HOlaMw+SRaB6C1yw0egzPT6ss1e3OcqfkpGSWZyyvzCmoLC+sK8mry86ozM8ts9nQhYMQQBdFJpAgIMRpOh+DFKKaeJPawlBk8XR7fUMwzlvN+Gz7+PbUzjUZ7SJC/y0Xwv+SESqWGhIQ8xMf/kmgPB/+zKLBhw4aQkBA6nf67BPR0GCIiFp+YzEhCcZPxAJqmIvOtHEVApM+jyoJotjMRp42BSSOThBFQfjiUHQplhSazQ+H8MLgoHC6JRSsTsMp4lCQRLYbjRQSahMmUCTgKQKiUy7VqrVFvselsdr3D5UzNCC4vzi+pKylvXp5b5fPkqOVmLktGIPCQWC4CK0DjpSSqTiBKMZnLA8H23IINRWWbswva3MFShcnNAZUUCZ8kZSUrCHFqVLwZHe9ExfuRcRnJsFI0sh4HrYfDW5KxHShGF1myh6fsE/O7afQmBCk7imR7imZ8nG17SpQTI29EKLupsr10/h4ybStSvouq3c1W7WRL9vAEAyL2pIwzLmD208ndaNYmrGQz1dwD2Pepi8b8B0523L3Z99eX5t957fh7L5785Pbp7585/+2V45+dnX73WO/7B3s+ndz6t+Hub/q6P9vd9cKalWN5uZVKrYsLKKg8PpnLJnLoeDYFy0TjOWgCh0JipFltO1rqXzk8+enlw99eOfT5kdFPx/d+1rv9656ub7rXf72h/dNV9Z9sWPHJjvWf7u/+aFfnh1vaPt++5uu9XZ/37Xhtx+a55vqW1FS/UqcWyCVcmZSjkLIVMpZUzOIJmDweXcxlcnk8hlBG0js0zmy3t8zpbVQ6VjJ0rVBKXmyCOz7Kjok0w6JMUQnWpzCpEdwSmGE1zbaRYd1ENqzHaNbAFe1QoCVJ0oJQtBFUHQx1B1u5iqNoXSyELWsmSRpJQD1JXEcW11MXbbE+NQmoJwINRHEDDmjEylpwQD2OX4XjlGL5FVhRDVZUi5E0EuQtFHkLTdJAE9XQgTqmqIbGqySyy7G8SrSkFuPooLlW0QwNeGlZAi93CSM9hBN4VJGe5M4F0/Nt2XmOrBydP0j1BBH+HMzyXHJlHru1EOioVK9ttnauS1m1PlCzyptWqZf4WTgNEqdHoXVwuAaSpIxJUITHykOjVZHRmthobUKsNilBC4VpYXgtzJjBbV+fNj3W9OzZ7R88N/a3Vw/98Kfj37507PO7Mx/dGXn39v4P7gy//8zY2+dHXpzefX1P18XNnde2dF/fvuPstu6+jsaminRfulrqElPMapK5iWjeTlzExwm88QBWfxitO4bWHUHp5pH6GaR+AmkYxZpHCbZxinOK6p6ju+fp7gWG5/ADY3qPsf0n+IEzovTzkuxL8uVXVYU3daW3TRXP22pecje8HGx9yVFzRLF8I9OVRjEJ2WaML4+dn88tDbKqPewmG7fdKFhrFHaahJss/B4Xq9dLHfQT+334Pi9u0Ty4/R78A+t14ffasfudhH43acBN6nfgB+zYMSd63Ikac/wMjg7UlAM9ZcNM2/EzDtK0nTJpo03YGFMu3riDN2Rm91tZe22MbXbqKiu60gpJt0Va7GFyRyjHFU72RKH9MUkpcQlZCUllcHwHTbhfppxXyU5w9MdYjnmmZ5LuGaO5Jhn2Y0L9BQl4XSa7oZDfUCqvaXRXjMYrNvNlh/mERT+jVuwXMreRWHup0mkReEiqOiFXn1ZozoKas6D6tEJ3QWO8YjRdsxgvWk2HnfZ9fteGQOaa/Nat7eNzI7eeufTuOy//6c3nr71889gzV+ev3zxy84Ubr/31zNVnh8anV6zdmlezLq2ss7ytL7VoE09dxAXzxNp8ta3Y6ClSWzP4MpNAbpKobCqjz+zKtvnzrSkF9pRCZ2qRN1gayChPz6rM/NlS0oq1hhQGVw1DsyMhxHAIISqZBsFL0EwzWZzCBLM4mnyeroRvqOQbq3771J2WlhYSEmKxWH67q4ce/ksKkMnkkJCQTz755NdHPVx9/LUmD3v+uRRYv359SEgIhUL5XcJ6cmlyaCQmNpECRXERBABDVRLYBqbEI9LnCPXLBdrlAlW2AMwQKNK4Cj+OrU0iAbE4QTRGGIkUhsFE0QhpHEoeh5RA0ACcICXQQS7XLBc7lTKHWmPTW2xWnzNleVpedWFNW1Nr5/o1m7et7txe37g2J6fabklXKhxCoZ4r0LP5Rg7fCshS9cZCn785r2BjRSVGdfsAACAASURBVHVPfdPenMJVdl+hTGvnSBVUEY8kZqDlJJgak6iHx5mhcS4oJCOZ3EgTdIk43TxuD0+4jy8bAlSjMuWwhLudRl4JxxZEYv1PktxPsP1LgOI4ZTtGv5upHeLJB5i8nXhwB1m7na7dzgL38iVDAH9aIZwChGM8fh9DvJch383R7RXp+xSZI/bh2eqbJza/c3n4w1sHPrm+8MXFI99fOPnt+UOfn5/88Nz+j87s+fTU7i+P7/388L4PZvbe2tHZV1ZcqNQ5uDKQLBTgeRwsh4ll07EsPJ6NxTNIWKJLrVxXmn9tYOd7Rya/PT3/3ZHp7+bGvpsa/mFi4Iep/m8n933Sv/mTwa4vRrd/M7br6/1dX25b/c32NX/r6bzfs/G59atGyosrHTaXUqUUywCBbLFiIUcqZwJSlhBgCoU0QMDkifhMKUgzuw3+XG96rTO9XZaylmTpiGUVRcK8sfEOZIw5OdoQF6sPTbKG4VJjgCqsto1iXk8zd5IN6/CqDhTQAhc3IoEmnKSZLG2hS5oZ4gYi0ECQNpGlTWSggSyqJQlrFo1fReBV4rgVGE4FWlCDBerxksbFVJH8Siy3HCeuIUgbCOI6tLQRJ28mKVqo0gYaUEuT1rEktQxxDVlUjRfXYGR1aHMLzlSPBkuhwtxIduYTjEAIN+VRMAj15CnTC+yZ+Y5AttroRYHOCIU3Qu+JsXshfh8yNUgMLGemlog8ZRJzqUSWy6f5SQgLEmlFIszJyYbEJHVMoiI8ThYaq4iMBmMilXHhYHw4mBCpiE8E47kufLAC3LQt59jC6r/cHvrslQN/e/XwF3fn79+Z/PDZofef7fvozvAnt6c+v3XwreMjL4zuvrpzy8VtXSe6Ooc6mlvLM1LT1FI7k25l4q0g0VxLNHcRTXsJxuHFLI/6BbT2KEp7FKU7jNLPo/RzaP0MxjCDM87ijXN40xzePIc3z/7b6wzBMku0zpHtB2muBYb3ENt/hBs4Lsg4Jc4+K1t+Xp130Zp/SZM1KUhZQ3QE0DaA4CZoSlnuck5aPmt5OrvUy62z8dsswrUWwUYrb4eT0eshL96P9uEGvdh+J6rfhR5wYwY9uH43ts+J6XNi+l24ARd+0Zy4QQd2zI4Zt6MnFm1xf8yEAztux407CGNO8oiTNuhk9jvZ+938vU7+Tjtvi4O71slscVFKbcigNd5qDVPalgrsSxjOpURXONIVmeiOjA3EJhbA0C0Uzi6pdE4jPS1RnREbTgqtR3i2BY7jEMdxWmS+JNXekMtvKKTXlNIratUlvfaMQX9Up5tRqkekiv0C4T6WeIQHHpJrTih1Z9W682rdOVB7Rq4+JVWekoJn5OAFpfqi3nDSaR9Pd/YEUjakFXbmrt21YuJA750XLr/w+p1nX3/+/IvPHr9989izt66+8qcTF68OjEy1rd9R3LAxo6KzoKHHmbWKJc/hKpZL9QV6Z5nZU6w0p7FEGr7UIFPbdZaA1Z1j9xdY/IVWf6E9pcgdKPWnVwQyq9IyKtMyKj0phQqNh8SQx8PpEYmE8ER8VDItiSDHsB1UIJMF5nE1xQJ9hdBUI/oNW2f+Puffv3//wTJYMBj8e+fDxt8V+F02Wf/d2y8bD3Jd/4frvg/x8ZdCPWz/Myqwbt2631ht8pef6oklsCWhiMgYPAzJRREADEWOoSmpAqtQmw7aCw2+KntagzvY6EqrtfhL+SoXnqeC0yQQkjgWI4qACaLg4liEZBEfMVI4UY5naIRCnwbMMeqzbI6gOxAIFgTLV5S0b12xpW9Lz/C+XUODW3b3ta7uLipd4U8pNlszNAafyuBVGlJUxqDRUeBKqU7PaSuq2FzTtKulY39GfovBmSlWmzhSOU3Mp4iZZBUVryfAtLA4XUKsLT4pA8Zu52p6tcp+lWpUpZlSGw7otNMq+TDA2k4ltCWjyiIx2U9TspcJiqKlDTD1JqJxkG+ckWgmhZI+urKHqu2m6roZ6h6uvFcoHJYAY2LZuFA+KpAP8OS9XNlermJQ6hszbx9dfma29fXjPfcvjn1+ZurLozPfHj34txMzn58e+fh87/1LvZ9d6f/iysinF8f+emL06v5tu6sqs0GDlQPKSQAPK2BheHQsh4ZnE0h0AplMoWBtGnFLnv9wd9tr47u/PDT2w8Lkj/OTPy5M/nhk8sczM9+dm7p/dN8nh/Z+udD7w8GBHyb2fNfX/d2+rq92d723Y9P11Sv35ucWGIx2uUolBiUCUMIHpRy5jCWVsyVSJiCmAWIWTypiqzRsl9+SUezPb3XkdwJZXTjX+khBaTjKHw11wRItsDgDJFYTHaMJg5jCKZlQUQVWvYJiWE0zrKGoVxHEjUh+LZJfjRbUEIS1i2kg+dV4YS1e0kCWNCwuN/J/3pTNrVjcms0ux7LK0MxSlKAGDzSQgAaiqBYvqMILKvGSeqK8iSCuQ0obMYpmgrKFIqsnS2ooYD1b1chWNzGVjVRFPV5Rg9BUQcGSeFFOFCd9CTPwKDMlhOt7TJkG8+Zp0gudGQUOX7ZS5YEJbE9xHY8L7E+JbctktiipM17sgfFT0ewggZ5BJqaTUKk4mAcFc8FhtiSYMT5JE52oCIuXLIuXRcTIoyLkMctkMU//bJGKGLQRKg2QSlaY9g2UXb+47d4zA+/cHnvr+sjb1wbeubb/3Rv7P3xm+LM7M9++eOz+lbnXDw3dHOw50dM5srZpVWVWME0jMdMIWhTSSEBaJXhzKdG8mmjeSjDtwxuHsYZplO4ASjeP0s+j9Qcx+gMY3WIhbJzuIE43j9MfwOpn0fppjGEKY5hC6ycwhnGMcRxrmsCZxwnWcaJtguyYpLimaJ5phmeG65mTOhcE9l6atRVtDcCdclSAwq9kKGtZpkq2s4AdSOfkeTi1TkGbjd9p5exw0PvcixUFx7y4ETdm0I4YcqCGnZhhN27QiRlwoAed2IGfrd+J+xkfcUO2xdyNo3b8qIMw4iAMOQgDDkKfg7TPQdntou10M7d7ON0e/iY3f52Tt8LNrfKw8720oAfjcEE0zgiJYxnXsYTuWEJyhKLtYRBbWLw3KjEnCV1HZnUD4gmN+IRCdk6uPC/TngOMZ0SW00LHObH1ktRwVQFeVQCXFKLzoPyMGlyQK8dEYB9f0cuT9/HBcUA1r9Ce0urP6fQXtPrzau0ZhfoEAB4VSo/wgWMC8Wmx/IJae9Zhn892DaV5e7zBje7yruzO3pb5M1OX7l6+9efnr71+98Irt86+cOPyi3eOnr8wODK7tmtfVWt3Ts2GrMqNppQGhiSdD+YojIUmT7nFWwwaU2lcBV+iV2icJlu6zZNr9xeYfYVmf6EtpdiVVubNqEzJrEpJr/SnVzi8BYDCiSUD0Unk8Hh8eCI+OpkGI6lwXC9dmsdWFvG15WJDNWCulZj/8cQ9v5y6/06QDzdi/1KWn376qbe3NyQkpKSk5N/1/y5vsVhsSEjIQ3z8XcR86OR/WoE1a9b8xnJBv4z4iaehTy2BhUagk5FcNAFAk6QIgoTA0vGVfp272JvTvLx8fWHVprzytYG8BtCSypTqCTwFiilLIgHRCH50sjAGDsQjpRCsDE4EcXSdSJJpMlS63ZXBrPL88rKa9sr1u1funekePtw3tDDSOzXatXd/y9ruoqr2QHaVMzXf4s+0BDJt6TmOjALv8orUgoaM0pUFdesrV3Y3rd/lXV4uN7v5Kg0HlDHlArqczTGymVYqUgOLV8fEmKKSghDBar55yGwYNRinjZZ5k/2wRTetFu8X0LtJ+DYYuioSXxrGqYkD21HgRrx6L9MwIzEeVeoPK1STQvUepqabpttEU3cxFVs54h6erJevGhTqRgBlPx/Yy2L3UEXDYtu0oW3QPz1efnd+/Udn+j8/OvTFzNBXM2NfHBj+9HD/x6f2fXKh74uro1/dnPns2sG/nj1waWDvtqr6gNyiZ2kAopyDBehYIQXPJxE5BAaJzMOyJFirnVdVYOpfW3Cjt+P96V1/O9D//cLwD0fHvj89+cO1A989e+D+5cH75we+OD3y/cmpH4+O/3hw6Nup/Z8O73lz747zazq25uRlgQYboFULtXKBTsrXSrhqCVspZ4NyphygiSVsvkLCMxiFqRmOgprUqvX2ym2ioh5s6uYIaUUYPjUS6U6AWaEQAzROnRgpj4xQLEsyRxKDSYJSrLKJqm2jq1dShNUodhmCVYrilGG55QRuBYlbsXg/WlxHEtWSBNUETjmWVYphlWK4FYv4yC7HsMsxojqytIkONFB+HkYU1xJkjUR5M15clyxrRClb8KpmkqyWAFQStI0cy0qhvUNsbefqmojyCiiQHy7IXMJOfYrpf5zp/wMrJYTnfVwVgPvzdRlF7oxCpzcHBH0wrvMJhvuPdNdjNMcTNNsSoi0UY4uA2WMgbkiiDw4JoJOCWGgQDfHCII7EJFMsRBOZKA+NFy+Nl4TFSCLCpZFPS6OekEY9JotaqoyJ1cSgDbHmfFZTp2typuH00TVXT26+ebL77qntr57Z+caFve9dHfz09swPr5768s7Rdy5M35rdM7dz1caWvIygSmqioBVJcYq4WB0i0cLDmLIJ5gaSZQ3RvAVv2o01DqD0Iyj9ONo4+YARsfppnG6OoJsn6g4R9Adx+lmMYQprmMQaJjCGMbRhFG0YRhuGUPoBlL4fbez72fajjfswhn047X6KYpio2IpR1cMNqcluJTKLSa6mcpoZQAtHUcPRF7Cdacx8L7fRwV1nYe+00wadpCkPftKNG3dihq2IERt61IEZc2KHbeghG2bEhR904Prt2D47tt+B73MQem34/XZin5Pc56L0ush7nKSdLtJWJ2mTnbzBSV3nYaz2cdp8vBYPr9bFKfJwM/wcTxrLGaSY0tDK1ATAE8FzLmXan6bZlhGsy+CmpUnOCFh6IraSyNogEg2ohAcVotOg5JJSfg1UX5UZLkvsFyW2C1LTebnynBw4IxOckAFHpJJRLtBDEm0lAjtp8kG+6bDGctZkvGQ2XDHqL+l159XqExLFIb70AEt0kCk4xOaf5APnFaoLNvuJHM/BoH/U7d9lzuiyl3VnbxreMHP+4JXXnn327RduvXnn2p+uX3r+ytGzZ0cmDnXtHG1au6ugYWNa0Sqtq5wJBETKbLW5yOarsPqKFHo/mSnlA3ql1m1xZNo9eXZfoclbYPYX2QIlrvQKb2aVP7Pal17lTauwuPL4UhsSL4yIJ4TF4SIS8bFwOpyiJfADTEUJV10u1FdJjDUyc53M8vvg408//fSAIP+bOOmXl4n/Q+0VK1aEhISEhob+v+tO/8Of6EHlv48//vjXHh6uPv5ak4c9/1wKdHR0hISEoFCo3yWsp5fCn1oCW7oMAYOz0XgxiiCGYvhoqpwlsYGWTGtqWUpOU0p2o81fItN5OTIDTQRShIpFgqRLEzDCGLgwOlkUh5QmYhRQghJJ1gokWVZ7fVZuW03z2rXdG3cOd++f2dZ/YNueie0b925u6lydV9uQUlhuyywwBHK0aUF1hl+b6zOWBOyVy53VBZ660pTGqvTW+qy2xuy2RmWGh2GSUzQCmk7ANAi4FoHIK+D7mVgzHGKMjbNFQjMS2G0M5W65eKcA2CuUDwCqEZlgJ4u4BoVvhxOaEyn1sbzmRN0Wkn9MahwTKmdEssNS2UlQcUKpPAxqR8X63Tz9ZqZ2LV3VQZN30ORdLLCHq9vNl2+l8zbgiKth3H6OYd5QeMC79VTFiesb77009t6N8Q9PjHy8MPL+gf63Zve+Mbvz3bndn8/1fTs39s3E5P39o1fburellPnoeiVJxSeCLIqCRpWSqAIslY6WokkOtKiAYW+SF2+0de7LmJ+qf25h/RtzXe9OdX84ufXjqe1fL+z57sjeLyY3fTyx5f2Z3e8fHvvk1OyX5+Y/PTX7/pHpe9NjZ7Zu31JQlS6xWTkmDcsEsi1ynk0qsEoEZilbC9DlQpoA4PHUoMjuAvNKfTUdac3bLbW7BEU70P71kUDRMpx7KdIeDjVGx2vioxQJEbKYcFlEuGJZgjEC449n5iGBSqKinsouQjDyk1mFKF4ZXlhJFlVTRTUUQfXirWpuBY5TjmWXLbIjpxzHryaKaslAA1XWRAdXsMBWlqyJLm2iShsp0kaSpAErrkMIqyHSeri6BaduIkgrMeISjHWFILBBlbPVkLZBbmmiSApiBdlPc9IeZ/mfZPoeZ/n/yPE/IvA8oQ4gUvMMWUWejEKnJwdU+JPYrsfo3kco3j8QPY/h3E+iXMtgzoh4V1ysLyk2gIzPwCRmYSGZ6IQUaKIrPtESk6iNTJCHxYmWxouXxUrCImWRoWDMUnX8El1iqCE+Uh+doA3j+JNdpazaDn1Hp2Pb1uDg/pKDww1nJjpuzG1+8diuNy4O378z/9Gdhb9cm7p8qGfP1sriMrPMSsQpE+NkUaGKyGXqhEgdEaG3E8x5VHsN2d5CsHZgzZ1o8xa0ZRvasgNj3olZBMq9OH0/QTdM0k0Q9RM4/QRGP47Rj2H0oz/bCFo/jNYPonT9aF0/1jjwwDCGfoyhD6vrJ6hHcGA3BqzB6FNwbjUph0OtoTE7WNyNIlYbj13JFGaQnT56sYOxysLssTOGXLRpD3ncSRi14RZLwtjwIzb8sA3Xb8H2WXEDDlKvnbDHittlxe604bfbCRvtxE0uSpeXvtlL3+ChrnORO9ykFge+zoqtsuEqnKRyL70iwC30szIcVJ+H5Uzj23MlnhLAVco1FeDB9ESRN5xje4plXUI1L8Hqn0JaQ9Gp8eRSPL+DL9ouYezmsKfFwtOg5Kpafl2pvio3nZcYT4i1h4XgglgyLxbOCfmjLMFOvGA9jNeZzN+OBYZZ+uMq0yWT7ppJe9WguaRRnwVVxwDFAa54giY9yJEdE8rOSWUXlaqLFvu5DO+p1NRjnox5Z864N7c3mNdV1DnRPXf1yLV7N557+9nn3rh5/taZI2dPTR48uWdobs3W/sqVm9MKWvTOYgGYLtcv19uL7f4Kq7dQrvUS6QAfMKh0Xpszx+7Ot3kKzL58a0qRI63UlV7uyaj0ZlR5M6pdgXKDPYctMsEw3LBYXFgcLgpCTECyEFQ9URhkKcsE+iqJqUZuqQVti/a7TN0PnfxagWAw+N/Kjj/99BMCgQgJCXmIj78W/2HP/wEF2tvbQ0JC4HD47xLrQ3x8iI8P8fEhPj7Ex4f4+LtcUP63nNy/f99isYSEhFCp1Ndff/2/LwwYDBYSEvLRRx/9+hQPVx9/rcnDnn8uBdra2kJCQqBQ6O8SVmQUfslSxJNPQRMSKckIdjKKC0GwUEQRlaemCbQMkYElNnPEVrbYxBJr6CI5RSAmcvk4Fh9FE8DJongUPzpZEIeUxqPkiVhlMlnnzGxq7x7ZO7kwPD8/sjDRO7Grc1tHTUvV8rKSlNwCR2auMT1HlR6QZjjl+Taw3qrZYDP0umxjPvd0wD7ht0/4XFOpvtlg6lxm2myWo8+r2WzgNwPUMhZuORmdiSdkEwhZGFhqIiQYm5Qbh6qGkVdhaRvwmPYkbFsisR3C6IBRm+LxpaHwrEeRWX/AFz7OWRmt6iXZT4L6Cxr1VZ3yugG8rJef1kgXQGAUkPWKtTslyjVsUTWOkhnHrsPx1zIEGxjMNXjCSiisLgJZtYxeE21dRWzpVs/sz7432fbFwo4fTg5/c3n6b9fnv71x9IfrJ368eeqnW2d+uHXh/oUTL81NzW7Y1BzMMbBEEiqTSyEzaFg2D8tXEyV+Jne1kjVo4cy6pLMe21yg+GDe5JXNrz0//dWd49/fOvvjjQvfX7/w3TMXvrp+5oOTM+8c7H9rcvs7wxs/6lv3+a7Vn25qfbuj8XZj1WRedqPFaORxFQAglsqFgEIkkAAcsZQhEvOUfIGMzWewRVSRmqP3KJs2524cXV6zUxDsSNZXhouylzH8UVhrZKLqsWjZE+HSZZGK2Bg1JEEPhZhgUCs02Z6EcEIwHggpABUUERTVdE0jW1XPkFWRhCVobimGXYpllWLpRShKPpycB+WUY0W1JEkDRbmSpV/NN68XK1uZwIOHI+tJojqCoAYrrEGKaxGyBpS4AsoriOcsT5AUovWVTE+TNL1dnd2h8TcItXlojnspw/tHmu8RmvePDN+jbN8fef4/iN1P61Mx6XmmnEJvZr7TkyWX+xJY7j/Q/CEkXwjW+y9I9yNw9xNQV2icIzopFY7IIaELafA8AiQTHp8SH+eOSbDHQqzxUFMiTJeQDEZA5KGxirAobUyUBRLtQkR7khFZGG4FnZOPpqfG4IyPUk2Ps8xP8SxL9W5UICAsy7ZUF9qri8zFy8HiIkVeqTS1iAumIsnmKIQ+LMkQkWCMjjPHxxkhcTp4ggKL0LAIVgXZbSB7rSS/k5zmIwVTiMFUYiCNmJJB8uYQ7QUkSynZVE00tuONm7GGPTjDPpxhP87YhzMM4AzDOP0oVjeO1U5iNNNYzRxWcxCjPohWH0BrJpGGfWh9B0abh9PoMHoKwhKd4HkcXZnI2sIlrGUlVeIivQloY6JUh0w3kWuczFVeVqeP2WEnt1mIbVbiCjO+0Yit1aMqdcgSDSJPBctSJgXBxIAy0a+GuLRQgxGhMyK0i6/JGgNUqUuQKCKEslCBbJlAESbSxEjNELUXYwhSbDkcT4EqtcSWVu7xV5jsJYA6Fy9OS+B4ltGtj9KMfyBrH8ErHyHoHydYlxA9EfiUSHRqJNQXiqlMom0m88cF0uNy1UWN4ZJOdxRUjYoUu9nAZhJvVTK5Pky0Os6yD2ebYJgP8XWnpdrLSuUNjeyWVn5To7iiBM/IFAf5wAiVswslGaWrDon157X6awbTDZPrutl5zWS/ZnZcs7sv+/2nM9Nm87L25VfurNw1s/Xc9SN/fvP5N//6+nOvvHjq2vVD5y7MHDs5euDwroHp1jU7swpWpGbV+9KrPcEKuy9foXOTWRIAtBpsQU9qkSul2O4vMPmybYE8Z3qRJ6PMk/GvC5BWb7FCHyQx1HFQxpJwVFgUJjaRBENz0Aw9RZLGM5Qq3XW2zNZA0eqM4lWZxe2/y9T90MnfFbh16xaNRnvAjv/hU4l/H/nbGxAIJCQk5MMPP/y1q4f4+GtNHvb8cynwAB8hEMjvElZsHDk0DPXU09D4eDIUxoQh2FAki8RQSNUuud6rMPpBQ6pU4+PLLDS+nCYAKHwhiccjsPlYhgBJEcWjeFEwfgxCEouUx2PAJKLalFZWt6F7w/7erv7dG/d0tW1orW6syS0qDWSWuNJKLIEiXTBXnu4XZZvAapO206zvN2sPmjRHDeqjOv0Jg+mMyXrO4rxgc19w+s67XUftxgkDsFPCWMvGN5JRlThyDYVaS8FWoPH1WGoHWdjDA/bxxPtYnO0EXjdO1IWVb8bJViPFjYnCihhRTQywMkHRg9bOsE0XVdqrGvUVreqiRnVSBc7LpeNi0YBIsFvI7+ax2qiUChQuM55clEyvxrCbCOw2PHMNlrYOxViZxG+FajeSi7fJena5L+4pem1/019H1r893/Pekd77Rwa/OjTy3dGJH0/O/Hj6wKeHJ14d2TPb0diYYlcxsVIBBgAxEgtGmYrXFZLMjQz1dol0WCkYU4iHZNp+ML3PuOdA+c1TXR+cGfrq7My3Zxb+dubw1+eOfnX+8JcnZz87Pn7/6PDHR/s/X9j/9ezer0Z2/nXX5ltr28ZKSxrsThMPAAWLOZJEQpWYDwJchYQj53JBGk9I4uOJAixNShIYeGm12oJOmW9lor4qDMgNZafGU91QnBkCUS6JVSyJBsNitfGJRijUkpxkhiaZIRBTAsQUCzXHIB2xtAy4sAgP1lDVdVRlDVFagRWU4zllBHYZnlmCZRSjGcVIbgVWUI0X1RIUK+jaDq5xrUDWTBHUYEV1eFEdQVi7WK5G2khUtZJNHQx1EwEoRfBzoEAuWlNMd9dKA02qYJPSVc5TZ6C5jtB/xUffv+Gj7w+Ae4kxFZuRZ1le4MvKc3oz5XJvPMv1CN0fQvGHEL0hONe/oJ1PwO3LEi1RMC8MlYHH5JKTs9AJAUiMNzraERljjYqzxCWaEpMMkGRlOESxNEaxLFwVHqqPCbUmRnmhyBwsr4bBKcbQ0mOwtscozieZrqdZriUKL9KWws8ImrKzTRmZKrefbUuhGAI4RSCZ4YpCW5bCraEwayTUGgMxxycaEhLUCYnyOJgKijRgsXYawculBCWcAg2v1MArM7ALdfRsDTFFjbaq4DoNXGWAqRxJaj9EmwHT5yYbCuHGEqSpCmVuQJtWoAxtSF0HQrsOrtkAV29GaLox+h14Uw/e0k2wNBHMmSSrmuKmUAIJxOVhzAaoaAODsoIMzUeEWaMS1NFEZYJMg7Do0X4jOmhEpWrhfjXMp4K6lRC7IsEkjdNKYkAgSiqJAmTRYkWsWB0v1kP4JhjdAqcuWjLVDKUYEkjaaDwYRlAsI4LLSOowqi6KYY7nOmEiP0YeJJsyJJ4sYzB38ZvtLJQqMrCC1DiWZynN8SjV8gey4RGi9hGGdQnfFyVOTxRnJQkykzhpicIKjGwdXdHLV8wA4AlQe9EIHlSI93DE60nSlRiwGa5ug1q3of0TdM8Rnv2sxHQV1D+rVd3RSm5rZLc0yusa7UWV7phUM82X91PVkzzdIanhrEZ/WWe+ofXcVNhuqI039NrrVt1lt/FMimM+NbU/ULAte9XO+sGJXRfOnXj99XuvvvGXW/deufnqizdefP7anbtnrzzbN7pQ17Ilr6QtmFPnC5bbfLkKnYvKkUlUdqMjwxso9QTKPMFSb1axN7vEn1OaklORklOVmlOTkl3rCpRrLdl0riExmbU0HBUWiYqHkJA4Pp5joMlSucYChbs8vWJdy8a++o5ttW1dv8vU/dDJAwV6e3vDwsJCQkLS0tL+BzR5UMj6P4TUh/j4P6D/w1P8JgUePBoc+TrmXQAAIABJREFUFxf3m7z828GJEHpEBPbpp2GxMcRECC0JxoCh2AyeRmcNGpwZRleW3pGlNAYECiuZI6HwRBS+gMzjEzkCHFOIoorjUdxIKDcGDsQiZXFoeQJOAXoyc1c0125cXd/ZXtXWUFBZkplbmJpW5PGX2f1lxpQSVVqOKN3JzlWCrTr9bqPxgElzRic/qwBOCMGzgPaSzHhDabmltd/WO541Oa+bzaf1imkpdx+HspmC68DT1jKYa9nENhK9ky7aLTTO6AyzKs0koBjiKAdY2j6mqZdh2E7SrkfrViH0nSjjTrxpimE6JTbcUGtvatVXNOqzKtUhuWJCLN7P5+7i0baw8aup6DosoigZkZGAzYaQCpOZNVheO0m4iSbqYQBdRNlmAriHGdgDNO/U929xH9qceXZr8dn9DVcGV94ZXP2n/nXvDG38aKz7k8met4e6n+3pGG3Kq0tRaEUQgwlpDRLc5bSUVkZgAzPQw7AP8DUjQvEgR7SbDm5lejYLu/rSz820vrnQ88nhga8Oj31xaOKLI5NfHpv89tjENycmvzoz9fn5ma/Pznx3aurbQ+PvDu+7uXnDcHlVnc1v4YJKrlrC04h4GjFPLeYvQiSdL8Xz2SgBAimAocVwIogHM0mGcri8+AlBzuOswDKaB0ZxoHAWOFQdHq8Ji9VFxVsSIbZkmB2eZIYmGhLitTFx6oh4bWiSIRTniWVlJUtLcKpKkraarK2mqOoY8loGUE0VVpJ4FXhuBZZXieNX4wW1BFkzTdXG1q3mSRqJ/Gq0qB4nqsOJavGiWiLYQjV2MF2dfFMrTVGOEWTBRBkoZQ7FWSHx14ApVXJ7AUeZiuTawhjeP9L9j9AW8fExtu9Rnu9RwLPUGMBl5FuXF/qy8p3eLJncG8d2/QvDH0Lzh1A9IWRnCN7xONq+DGqLQvqTcVl4XC4Jlg6P9cREOcIiLaGRpvBoY3SccbHSTLI6IkkVGqdeFqkLCzdHhTvj44LJmEICp5bJKMGSs+IxnicZwWX8rGWC7CXKLIQlk+fLNKZk6d1BmdZJkTkQPEc8zRmOti+B2p+GuiKgrlioPR5qjofoYhKVERD50xBwKVQTgbDG41OQ9DyquF4sb5XLWmWiehGrmEMMUpMt2AQlOkGKi5USY+TUGCUzXiOA6KUQgwpmNsItDoTVl2xOhRqCSdpMiDo7SZ2brCvCWqoorkaap4XqLiK7XBSPhB4gsXKS2CWxgoZkoJ1MrcbCMpLCjBFRysgkRSwBhDCVEIEyEVDGixVxQlkMXxLNASIZ4nCKMJQgWIYRLEWJlqEk4SgwCquJwxohaAssyZIMsSYnWWFJ5kSIISZRG56oWgpVL0Fol6H0oRhjOM4STbQv/gfC9KOkPrYxReELWoIFFk++HAziBKnxTN9SiuePFOcjVNsjVPMfRSnh6txEcxnCXIEwlaN0hThjA920ga/fK1aNS+SHFMozesmMVNBDB1ZjVa1IcyvSt5kQHKBnHOalnAFcl+Xmm0rdHQ14RyV6FpTeVilvafTXteazSvNhqX6Sb5wDjIcVhpMa3TmN8ZLSdU1svabQXdMpr1nBi071aY9l3u3t92RvTq1and+5sX20f+jWtTsv3/vzK+++ee+Dt9/48N0333//3tvvnTx3Y/O2wbqmjblFzakZ5XZvDqh3MQRKudZldmV7g+XeYIU/qzItvyKQVx7IrQjkVqbl1qQtrwvk1PqClUZHLktgTkJwlkWgwyJQiUlUDFFM5Bqpcj/HkKNwFxev2LJz7NDG3YPrtu/7t9n34e/fqsDMzMyDhx17e3t/q6//3PGxsbEhISEffPDBr4c/xMdfa/Kw559LgZaWlieffDI6Ovp3CQuWzImKIjz9FCwqEhcXT05MosFRXLZAb3RkmdzZJneO3pEFGlP4cjORDZC4IjJPSOYLSVwRniVG04B4FCcSyo6Bi2IRQCxKGoeRcPQOS0FOoLo4rbI4tTDfFcxy+XJd7hKXp9LmqzCkFMsC6ax0IylPKOtU6UcMxpMm9QWt7IxEuMCUHGaAp9naayLjcwrzSxrzKzrbC3rzDY36pBSY5nH66bSdZPYuDnsHj7SRwtrBko/IPCft7hNm62G18aDMfFBiPwi4DoitoyzDXqJxJ8HaT3HNsj1nAcd10HRbo7+l1V7RqE+pwDmZZFDE6+FQNjJQK4nxlYiYfGhcRiL0/2PvPaDbuM68b6izgw0geu+9d2DQeycqCRIgwN47qUqqd1K9WIWS1SupQlGdlGTJ3ZKt2OlRsimbZN+NXJJ4k91v8x2Z++rkjRKvnUiy7PAeHJzhgzv33uc/4MwPz8x9bjmKmEQxG3DieXTlar52u1R/QGk5qLAelhtPqTxHgMQeXfeAYelK69rl7nXrwlsHyg4MVpwbqLyxofbtzY33t3S9Mdh5YVnD9vZAZ1wa9CIrG1itSxXzdpjmHzR1nwAaTotKTomcR/i6vSzNBpphOSOwSLB+a+z6kf4fjWz7t7N7Pz7z8ofD+z4c3vvxyN4/nh36w9jh318/9dtb5//wyth/37r4X1dHf3Xs8JuDmw409/a64z6h3Sp26sROtcSukllUCqNCqWOqlAQVF61Go1RFaDUEqy1i+XIFpencsmmc0hnsSDY7iGMFyHQ/Ee8qQnmgcD+8KIxBhPHoAAHpxsCtMKghr1CfBTWmI6xpBG82OwqRp7CmepqnXRCZq4gt1UWWA95+mWUBX9fLUnbTFD0MRS9L+dlsa0O/yLxUrF3AUs+laBc8Shuu6qWre5jmPq53pSiyTubt55layYoKtCKG05Yz/I3qaJs+2qL1VQuNpXipP0dYMlMQm84vnSUomSMqSZOWzlGX5DoTjESDr6qpJNkQCFcB+lKoOAwSxEDCEpAoDBIWT2MHZlOD2cQIhF5JYDexmE0sTByd78vJc2XmObLybTkFtgKovQhuR2BtEKyjAOXNQwTz4TEIshJBaKYwurj8HhGriU6rRFPLcpUtEPPcQvuCbF8vIdwpK212ldQ7AimdOcxVFOO4vgKyPxMdyISFwfASBCKCQQYwj0K2lnyUPh2jm47Ug+Cm6RhvOi0JFXVTjOvkti2AZZMaWCkW9zIZVRiUN7fIkF6kToeqMiCqLIgmB2aAIKxopIOM9rAwfgG6WIr0yWAuOdQuh1plcJsC59Yyww5RIiSrqhBVBLllRnaZkFdBFdXiZC1oeRde1k1h1eOwMXihqwBig8LMcLQJiTfCSfoiqq6QrC0gavJwyhy0IhupyIIrsoqUWUWqbKgGDNXlFRkLEdYilBMJd2PynLhcNzbPg8lzw/OcBXn27EJrOtyRgXVn4T05RC+Y6Msj+gtIASglhOQGaOqQxF1iTNS4y2tNzgqOJoESlmezyqZzSqbxo9MlJWnmBmhgPj6+kpxcTUysopYuk5QOAJGdJv8hs+2USXfOqLloVJ9UaPZwTRsonnWkkkFq7X5h3RlF1QRQdkcfet3gfsNgfksPvA3I31Zr3tWZ3jM571m9r1v8N4z+i3rfmMkzZnGM2awXLfYrev8NlecVg+OO03LHb7kZtF8J+89GSvdGU2ti9T2Vvd3dA0s3njt2+a233v/RL3/5q08+/PA/fvfbP/zh40//8K3v/OjoyQtrB17q7FmWrOoIllSbXREp4DC5SryR2mhFR0myM1bVVdHYnajvitd1xmu7Eo/wsbe8qqe0otMbrJMovRiiLCefmltARWIFVLaWIXVzgIjIWmEIN/Ss3nHy6u09J0d2HD7+VE7dn9/I4OBgbm7uhg0bPr/a1/3TBw8eAADwjCZZ/1VxCgsLQSDQr3/96yc/ncLHJzWZsrxYCixcuBAMBufn5z+VYRFJCmgROzMTl59Pg8E5aKyQRFUKJDadOaoxhZWGgFTnE2mcPKWZKdEypQBLCjClGoYEoIkACh9AkKUQrAiKkxbhFUUEVRFJxdDY1MGQvSLpSdX4k/W+WL0/0hwItQcjXf7SNkd5LVAR5aT0hHqedADQH7ZaLrjMF+zG0zrdfpFiJ025n2E4L7a/anDdtzu+43K9Z3e+ZrJe1RjPybWnJKpjYtkhGX+PmDpI42xhq/bJikcdwYtO/5jFMapzXNK5rus9Nw2WSzL1aZbiGFU3wnReE4ff1EbeNQfu23zvOl1vOq037bpRk/wwwNsmJS5lwtvweUl4fkkRNAzHlGCoTWTeIrZyUKreoVAPKZQHZYZTGtuowXrJaB3RWQ+o7JslrtVi91KJo08c6JMm+5VdSzQrlmg2L9Hu7HNu6nUvbbF31etam+QdvaKBTfY9h6MHzlXsHIuuGrO3nZdGzostp0TAfoFmgG/sEwV6gI072m+d3fHgyrF/u3rio0vHPjp/4MOzez8ceenDU9t/c3rXv5/Z/+G5o/8xevK/z536z2NHfrZ5+yu9i3eV1rfrQ26uxSx2AjKHQmGSKTRShUykFFANPJyFgbFiMbYinD2X4MqiB9JYkVmsyAxmeDYjmMUIFLFCKGYYQwnCMWFEURSVX4orjOBhxQSUG48ww4q0ORDN7CL9DKRtBtGTxiwGi0IwYzkt3KBqWuBduDk8b7uvbr0+tERkmcdUdpFU85jqBTzNAqFmvgiYJ9TOE+jmcw0L2YZ+BjCfpuyiKNrI+m6qbT7NNZ9qbsVqUjBZBCILIIEQ1V+jijbpos2At5pvLMXIijPFpTNEZTMEsTmC0gxhaaYklqkqg9hSnFhTcUVzSbyxOFij0ZdBJRGQsBQkjk6ThmZIimdygnNopdnUahi3iyrqE/Dm8zApJNidkWdLL7BkQsw5RaY8mLkQbi1CuRC4EJKURNBbUJz5OOFyimSNQLRCxp4vJzVxCFUEcqrIsBAZHICUbZ2d3IisWsOv6rPGOyyhGp2jRKgKErk+KMGfjQjmFEYg+RFiYYha5CcjnEikOQetm4HXTkPrQAjTNEzxLHpdoXQJzfyS2rbPYNqlUw/IRAuZ9FoUxp+JNM3A6mZgVTOw8llYaTpOBcbpoTgbBuMkojwUuJda5CUXuvC5Vni+BQqzQwg+BKeMKKvlKFtl4no+u4JKK8FSokhKFE4tR1ArUJRKDKECjSlDISModACD9eGIbiLJhSc7sBQ7imSF40xQpDYPoc1D6PNRxkKstQhng+OscIylCGOCYk1QrBmGMiMKDOh8IyrfAs+3Qgps4EJbOtQ2E+WcRfDOIfsyyP5Mkj8bXwzGBQowwSJsEE0PU+WlomjKkqqxx2oAayVVlixgJaZxEyBJ5UxtQ7avD1a+EVO7F1W3H1K1HxXbp4gcMQdH3N4xn+2yW3vJIh2Ra0dE7hFB6BSn9Bij7Ait7AS77Lwkdg2IjOv913W2K2r1RbHsilB6U6R+U2F8F7DfNzjfMbhfM3hvmrzXre7Ldvuo3TRiNg4b7Oe17qsW3w23/1ZxcCJccjmWPJNK7UymFqfq2uvbmnsWtC1f3bfl+OEL79z73k9+/uv/89HHn3z66Sef/uHHP/3Xm6+8eejI8Jp12zo6+xKpZm8wYbCFXMXJQKyx5NEk685IsiNa2VZS2R6rai+r6iir7ChLdcQq2iOxZqc3JZQ60HhJTgEtF8JE4CREpp7Es9NlAaEp7ihrWzi45/TEqwdHL+0/e/6pnLo/v5Hh4WEwGAwCgXg83vj4+OdXnvr0iyuQn58/hY9fXK6pmi+WAvPmzYNAIDk5OU9lWBSaBoESgHMpcAQPT5TRGACLa+SL7RKlRyBzcqU2lsTEkOgZEh1TqmdKdQypjiHR0sVa6mf4iKLKoHghBCuCYCUQrBSKlxOFOr7JpQ2UWksq3bEGb0mzP9wWCHUGI52BslZvqs5cWyqsNRAaOOwVYtF2pXSfVrpXI90ikaxkMPtQrNVYyX6O9hJgfNWif8tmuGkwXFTrR2SGYblhRGk4DyhG1PxjMvpuNncPT3lQ7j5nK77o9F60mc5qjWNay7jR/qpVfwOQjgmEZ5nyC1zjhMz7tjF03xF+3xN4z+N5222/7dRftshPaLkvSairOdheMrQaWVSOQMUx1Foaf4lQsU2pe1kPHNKqDqukhyTACGC5ZLZfsZnPGYEjKukOoWg9T7CMxewl8zuJ6naSq51c0oavbMbW1lNTKUasnJmoEnTO023aERgerr54peHs9eq9l0Mrx4xN5wWBUZn+tEy+VyhbxwP6RZ75wPJdTWfPbbx39eUfXz/6f64e++jSkU8uHf7k4sGPRvc9HN3/mwsHPxw79unYif86f/z3h/f/YP36iy1dA8XltYDLKjAAMotMZRSqNQKVmKdmczVkvJ2MDVAo5TRWksSpRHNSEFY8h1maQY9k0kM5tGAePQhlRhDMEhQtAseWIItK0XkxXEEYX+QjoF0ElAUO02ZDgJkw4zSUYxrJN5vhzxL6oZZSZrLZ0r8ytWVf3bp9sdYBQ6RfYOmlKrsJ8l6qbC5bPlcg7eJJ2jjiZqaig6XpZWrm0xRdZHEzUViDk9ahlfUIZTVEHs+ThHNE3jyZG6H104orNSUNhmiD1lspMJZg5cVZsugsSWyWuDRdVJItLs2RloLV5Qh7paCsOVjRUhpvKg5WA/pSuCQ8Q1QyXRKZIQvOlBTPZofnUOPZtBY4t48mWiXgL+XhGzCFoZwibw7cCYZbwXAzGGbOLbIWQL0oTJzAaCeLl9PUW9mG/QLjy0rFDhVruYw8l0/pYnB7SY4NxNgQvPLQrKb98M6d3K515rp5lliDwRtXaiMMQTGC7M/BBHLgwUJoMQ7mJSFcRKQN/uietXYGWTOTqJmJNczE+2bTq/JFCwn6LVLzLq1xh061RirsZdBTCLw7A2+cTtFNoyhBZNl0kngWUZFBAHIJZhjWhkQ5UDAnCuqEF9gLwMa0AtNMuHU6yTuLW5IlrSyQNSEENTBGWQEpmIfz5qE9+ShfISoIRZfCcUkMoQpPrCbh4wR8lEgMkokBEtFPJPrweA8G7UTALBCYFQK3F6HdSLwfQyzGEX0YgguJs8FwZijOCEXroBAVrEANLdAWQIzgIksm3DYbYZuOdU4ne2fR/Gk0fwbVn030g7H+PKS/oKg4Hx0qYpYQvUltqtZT2+gP1MoNVThhco64ZrqmbaanP6tsM6T2ZVjzycLGYXDVmaLIOVHxRZ3nms1xw/XotvVVo+SMyDgmCo1Ly6+Lyy5xwyM020G8+RDNelzkOKa0H1abX1Yp9wnlRwSqc2L9uNLyGvCIHd8xet8y+d6weF+1u245rNfsujETMKrXXQCs40bPHXvx6+7IbX/5RLRmrLJ6f3XV6trq3sba5raGuu6murlr1mwfPnvl7Xsf/MsvfvXhb3//ye//41e//s23v/ODGzdfO3Hy3OYtexcuWl1T3xOI1oTLGqOJ1pJUZ6SiI5RoCySawxWt0WRbaaotlmyNVbTGEi3BSK3FUcoVmpA4YXYBNQfKhOEkOIYOxzRTxT6JKRGuXbBy56Gzt988NX7r5PWJp3Lq/l8befjwocfjAX1WEonEM52P/L8O5htTYRLKf/WrXz3p0dcy+jjxfMvDz8qT2k1Zno8Cvb29CAQiMzPzqXTHYOlxeCkcwWOxDTK5B9CGVJqAWO7mCCxsoYUlMjPFRoZYTxfrHkHkI3zU0iUATQxQhQBFAGAYchhRVIDh5yH5eUhhIUaKZwM8jV3vKXVGqv2xxuKSlmCkPRLpDEfaSxLtsYb2SGeDqc3PbpSQ2xjYbjJyHgneS4S2owrq8nMbciDzILhNFNYRieCMWnRWLTogFL/EkWznKPdKtcd0xosu1VWr5IpefAFQXtDrx8zOyy7fNZ/7slt1QqM4qdacN1gnXMZrVvUooDyjVJ5TaS7pjK/Y3fcC4e/Git8Let/2uF932MZN2rMq6QEhcEilfEnGXM6gzqeyFrIVa1XGA2brGYflnE03bFCdUEuPypQnlfoRnf281TFitR81mXZr9JsUmlUi8TyGuJmkqMRpy1GGaKEhlGkIzNb70ow+cGmKtnS599zw/FvXF10Zb3r5vGf5KWnTcXrpKZL3tFx7WMXewmSsI/HXkA2D3MpdlpWHK06OLHhtdPDHl/d9fP3kH+9c/O+3Jv777fH/unftj+9d/f39y//x7sU/vH7uNxcPv7Nz3eGelgXRYNRi1qg1fI2aAcioWgFNy6TrSXQjGuFD4KrI8n6Faa3Ovh4wrZBIOyisKiQtBqNGEdQIihbF0ktwtBI0KVSEDcEQYRQ0jCsK4BFePM6FR9vgcBO4yDgLZpuO8k4nBeewQmBpBOGtFrUuDGza2bn3eNeaofKKfrm9k6Zpxyt6iNxWDKMJx2qmMuootCoSOYGnJXHMKhynDs+qxtIr0JQSOCmcTyrOILpmUBwzmfZ0vr1A5sTq/dxgylhaZ4vWGn0VEnOErPIXKELp8ki6PJoji4BlkTx5uEBXgvMmpZXN4ZqWWKohEE7qDCGs1J8piaRJwnPEodmC4CxGdA45mUVpgzEWkdjLWaylLGoPmdiAIVeiCaUwTHE+3JVd5MgudObm+BCIagp7iUC1Q2Y6qrSdV1pHNepjctY2HneLQLZdYt4nLz7KLTmBKz2R3XYYu3SvcGCzbX6fo6bFFqoym2MieZDA9eUyPek01xyqDUwxF5KMUIKhEKfNwaszGPJspjKboc2kWjNogWxWEiLrpuiWCC0rlZq5QlE1heaDko2ZVPVslnIWXTGdLAfhFCC8eiZem44zgDGmApQZgjBD4SYIzJAL1aTBtbOxhlkU6xyWK43nz+BEMpmhTKovk+jMxNoyUdYshCMbWZyPjcOpjURmJ4PdzSbUENHlWFQUhwrjUWECKkxEhQiIYmyhGw71ImHFaGQIhwxjUREsJoLFBFBoHwLlKkLZIAhDPlSeC5XnQFWZMG0G0pSGsc7CWKcTHTNo7jlMbwbTm83wgmm+AqKnAO3Kh7nmoHxp1EiBKakoawg3t9VX1BcXV0mNySJdU5qjb1rFzpkNBzNaT+S0DYPrz+Qlzhf5LpGcV1mW60L9dan6mlx5Va65JrfdVAXuaCK3lMVjAtMhMnMVmLQ4l7YUJepnavokpj5Av1xt3ADY9hlcJ02+MUvghi3yuiPyjiN8z+F7z+64bzPdt2jeMyre0cheF2vuKYwfaKzf1TvfN/nvOmN3wpUXk7WH6pJrq2I9yZL6ZLK5sWluT9+61cfPn7v3wbd/89FvP/7k03//zcc///m//fgnv/zg2z9+7fX7p4cvD2zY09TaV1U/N17dXZrsDCfagomWYEVLONkSTbaUJJtLK5pjFU1lFc3+UEpvLmbyNDAMO6uAmFlIhmB4aJoKRddRxR6Vs6q2d+3WI+cuv33/0pvvXHzj7ady6v6CjYyPj0/mmgGBQK2trX91zscXbGqq2p/+9KesrCwQCPTLX/7ySTW+Gnx88OBB/2eltbVV+2fF6/UmEok/M2gnf0l8Ld7/fNh/dTuRSPyFv4+r9ff3T0w8p59oT34JXnBLd3c3FotNS0t7KuNkcQwUmppAlLHYeoHQKpLY+SIrm2+ic/QMnoEhMDCEBrpoEh91DImOLtHSxI/uXNNEAFWoJXDUaJocihflo4R5CGEBWoylqrgSi94WdQUq/SUN/khDINIcjrbFyrsqqnuSzd2x9kZLQzE3KSVX0jHVREQNvqgSm1cOywrn5FdB0fNJrG1S8UG97LBevEcuWM3kLSJy5xNFK7mKHRr9iAe47lTftmlumDWXDeozWtVRleqgSjEk527jcbcLRHtkqsM69SGt+iBgPWGxnnOarni0N336O37ra37zLbt53GC+rDFfkJvOSE2nJPZhteGQjL+RwV7PEG4WGg+ZLefshgtm6XEF/2Uhew+Xs5vL28kV7xRoh1SWIa1jt96+FTCvlWkWcfiNWE4cxisuFLnzRZ4sSSDNkMr0NUISnaT5y437hhruXNl463rfyOXkpjOqnlPU1ClsYIToOCkDDql4uzicnRT+TpJ6Dy24V9K6x7Jxd9nw7vY396742YEdvzt99L8vnPn/Lpz64+UT/3H9+Ke3Tvzx1on/nDj24fmht7cv39dZ1Ra0us1yIcCnGvhYMxthpSGsOLgVBrPn5UXyUM0Y6RqpcYvWskWnWyMXdDNoNQRSOY5YgidGCKQwgRTCEYJIjK8Q5YMgfXCkD4P0YFBONNqOQDmgaHc+NphHLi9g1kA4tVBhFVyZxPmaJE39/tVbG5dvTbSstHnbWMY2EtBD0i5h8rpxlGYUqQ5LrMIRKvD4GJ5YhieV40lxHDGGxUfR2AAC4yvAurOIznSmGyzywtTFJFOQ74oCkQpHrMoVq7FHKrW+hNAeoxhLkfpSqDYG1ZfDTHG0rYLsrxTGao01jaG6hpKaulCi2ulPSCxlJG1ZkaI0RxhNY0Vmkstmk+rAnH6icIAj2SqRbJWK1guFy7nSPo6gk8Ksw9BSCHolmlZDQNczSPNEwg1q4KDOfE5vv6Y1X1NrLsjEJ4XyE2LtaZnjnNJ3TlB8luo7BWs4Ql26T759h2f9YHje4lCi2eZICFVBLN+TzXXN5thnskzpDEM2TZ9L0eeQdJkkIJ2lBLPVYJY+i2FNZ3jSmCWZkgYY0E0yzWerminCchTdmcswZbN1mTwggwnMIAMgrBaE003D6Wfi9GlYXSZGm4MGwCgNGKXORivT8Zp0ii6DZc7k2bMEnmxecQbbn8H0ZFIcGQRbBsaWgXZnk8phnHaKdIlAuVamHFBy+/mkNioihSkqwxZFcUURAiyELwpgC70IaDEKFkTDw1h4BAOPopElaFQYhQ7A0b4itKMAbcxFy7LQsgy0Ig2rmY3XzyKYZhJM08i2GQzXbJYng+PN5vryOD4IwwMhOwtIrgyaL5MTLlAnBL56T11HbUNHWW2XLTGXHV5eULJ1Zt3x6e2nZ3YPz+k6mV13ND96AKLbU6AZQqpeJipepklfZskO8oATEutZhe+iKnhR6R8W2vZguInhAAAgAElEQVTTJKsKOQty2N258k6MoYvpmCuxL1W4tur9x5y+8y7vNZfnFZfvTbf/rtv/rtN73+n+lt3xvs3yvll/X6+6pwI+0Bi+pzX/wGD/tsn9rj34qi9+pbzmVG3NjvrK5XUVXXXJ5obqlta2eQsGt+0YGb1471vf/uWvf/Prf/vwJz/51+9858evv/7e6OjErpeOrFmzo3/JxrbuZVUN80qS7aFESyDeHEi0fhZ9bC1JTRJkY6yi0Req0Fv8bKEGSeSAYaQcGAWC46KoMgRVTZW4db66zuU79gxfufz2t67d+9b1e+8/lVP3l2pkcHBwMmyWm5vb39//NYLIBw8eTKLCl/L32VXOyMgAgUD/+q//+mQXzxUfHz58uGHDBhwOBwKBgM/K41Dz5GQiAAD6/qwMDQ2N/43yj8SlHzx48Dda/R/z4Gflzwbyl5vxeHxy/F/q3ePx/EVDk7s/hmPvZ2VkZOTJ4/TPbOns7JxcN+mpiMDk6OlMgEpT0RkaOkNDY6gpNBWFoaKyNDSOjs7T0wV6mlBHF+kYYh1D/Oi29Wf4qJnERwpfi2ep4URpIVqUhxAUIEUYgpzNMegNYac36Q/X+cK1xeH6cElzItVTVT+vpnVuvK3ZURMSliqpUSYuQkKF8HA/Nt9RlGUGI+I4+lyBbItRs8eu3mmUrBLz2gisKjizEs5rp4pXSFT7bcAlu/5Vu/G2DRjTyY5IOVuYzLVU+nIyZQmJtpTKWsHirxGI14lUGxTe/Y7i4WLnlTBwI6AcdysvWRRnVcqTIvURjv4I23ac7x2WeUYUxsNC3lYSZxtVsl9kG3NYrtrU5wHGEJu4hYwfIFIHKNQVJOZSimQVV7tWbFknt62WGRZxFW0EViKf5s+kWdOZxjSGbTY7PNvaWZBcRVm0XbP7UPzS6OJ3X9lz9crc/aPFS0dYjSOo0jMI7zmy7ZhY97Jcso8r3E8THSArD5HtQ8zYVnHnKsPgksCxxdWvLO/97sbVv3hp0892rfvZ0LpfHBz49YnNHw5v/2Rk5y+PbXploHdrU7japzQaWUwthWCnobxUeIBUFEAVFhfk+jKyyjPhHXDxgFC7TaXbolasErO76aRaIi5OxJaQsGESNkDE+DFIb1GRMxfuzEM5IBg7AmNDoKwwhA2C9kEJMQSzHivoIcv76YqFVFU3RddC83fJaxe7Fw5UNC12Rjokumq8uhkHzCMb13BEfSR6F5rQgMRWoTFxLCZGwJYQsVEiKoJHBnEIPwbuRcJdhSgHmOzK5fsRmgjVFhP7yvWhuDMa95YmveVV7vIaS6wGCFdJ3BUse4JkTWAclXhfDT3SIEk0maoaPbW1xXW1obracHVtMF7nCNYobZVkVRzCL8ugls0iVWfQu4tkm7iaIYX2iBY4rAP2A7rdauN2lXo1XzSPzO/EibrJknksxkIhe7VS9pJBf8JsGTPZbhhMN9T6CTlwTaq/KjNfkzmuyV2XRK5Rtn2YXHmYu2ifZsdu/659leu3VdX3uvyVIiCEFrqy+M5ZXPsMpmkWw5BG12fQ9BlUfRpNl8YCwGwdmG3OZNlns3wzONGZijqwvgNu7sar65HC0gKGM4Nty+JZsvmmLJZ5JsUMwplBeDMIb5xG0M/Ea+fg1ek4ZQZOkYGXZxCVGRRNJkOfxTHn8O1goRvM92dyfZlsTxbNmUlyZOJcmbggmFmPUS7jG7epLUMG836jcpuKuYyDaMYWJtEFpZjCEA4SwEL86Ef46EfCgihYGA2LomAlSNijqT9wdLAI64fgXHl4UzZRlk6UziHJZ5NVs8jamRTDdLJxGtU6neGcxfKkc73ZfH8u31/I8RQwHHkcVxbflyUK50viNGu9vro33rs4tXhNbPEWW8deatMxcOvo9J7z0+admdF7MrPhYH5kZ6F6baZybb5qPUK1HqdYT1IM0oDtHNM+geOI2HtS4jsm8LzMMG1AAkvyVN1Zxk6oo4fgW8jxrZUU79WHRz2+a17HLY/lVZf1TZftbaf9bZvzrs19z+p51+J812R+16C+p9V+oDd8z2j6nsnyvsn2jsV9yxG9HK4cqWo61NKyrbN5RVd1R3NVU0tdS8fcRUs2bX9pZPTiB9/94U9++ssf/vBn79777vVrrx46OLJ61bbF/YMrV22fu3BtQ3t/eXVXpKI1EG8JJNrCFe3RZHtJqq0k2VxS0VhSUe8JlgNmD0uoQpE4+UhKHpJWROAiqRI4RUmXuS3h5iWbD758fvz8q+9cu/fBxP3vPJVT95dt5OHDh319fZMQ+bVYJnvfvn1a7f+EzLhc7pf19xnVnzNnDggE+sUvfvFk+88PHyeTFWGx2KGhoQcPHvA+KyAQyOPxDA0NPc+ZRE+q8JVbhoeHAQB4zJE8Hu8f4eOv3J2nO4C2tjYmkwkCPZ3vKpWhpjHUNLqKSJLh8GI0VojBifBkKZmhprIBGldH4+towkcvukhHF2npj+KOGppQQxMCNKGWJtCROACSLCvEiPIQ/AKEAIWWMGlarSbgcCZ8oWpPuMoXqQnFGhNV3TVN8+ra56fa2v21ZapSI93PxTsoWDMRoyPAFYh8ST41RJe0KfWrbcYBm3alVtrF5ZYhmP5cVqCAm8Twu5jCdQrVSa1+3GgeNwLDCvEuNnUJmtADw7cVkdpR5HYMpQ1LbcWy20my+ZzijcbIYa//Ysgw4VdcsYpPq3h7WdwtBOEAWr0Zb9vDCB6TuA8JgV102joYbTNWeIBrG7cZr5hkp+TErWTUKgyyH0XowxG7MeRWDLuNIO6kqLro2i6qvAHFS4CpoZlk5zSKcRrVMJ3inM4sm+VaAu/YI95xNjQ23v3G7YH37rx0eqxuwxld1xlc5XlYeBTpOU+zH+IZ9wjUe1mKl+nygxTVIYphN8O5nh3s5lTVS3qrtOtrXEPt0RPzEyf6YueWJK6vrH1roP3b2xZ8f9fie9vmn+6rXJIyRxxspQFPNaLJfhKljE6rYZJrSNgkHFKSCa7IQLQXCdfxVJskqgGRYDGD3k4k1GAxcSw6ikcF8Ug/DuZGQOwF+ZYsqDkHacrHGotQBgjclA9z5uPKkKw2imw5X7tRZtqhMG+WmVeLrX3C4kWq5FJ7y6pgaYfKWk2TxmGSeoRiLk6/jqFaxxAuo1A6Mbh6NKoCg4zhkSVERJgMC5KgfjzEjSl0IiC2AqQtj+aByiIkS0IYqNKXVLliyeJIzF9S7i1PeZJ1zlSjtaLJEK5R+ar43mpKcT2jtEVU2WGoa/fXNwVrKj01KW9tVaCuLlrTUhpvcbvreepKBCeVRa6ew+wpFK+jGI+orWfN1jG7edRuOWu1nTI7jhi1W0WipSTuXJRwHlbaT+Wt4Ik2ylV7dYYTJsuoyXbNaL2ps97W2O6obLfk1gmJ5arIdlFkPy+yDgtiByWdQ9oNQ75DZ9qGjnf1LAmU1EkNYazYnc11z2a6ppNt08iWGRTzbJopjW5MYxrTmOZspi2T6ZzN8k3nRkDi5HRTV7ZzEcS9CKFvLZBUZDL9Mzi+NK4nneNKZ7pmUF0gohNEtIPIlmkU4wyKbhZFM4esmEOWp5Hl6RRVBk2byTRmsW05HBeY68vhBrI4gWyWP4fuyyb7sgmBHGI8n99D1G+W2Q/qnSfNttNm3WEdf7MQNQ9XWIvKLUXm+pAFXkShGwZxQos8MLgfjggh4FFEUQkMGoXCw4XoYAHOn0d05ZBNmTR5Gl02h6GYw1DNogMzafrpFNM0qm0a3TWT6Z3D9mdyi3P4fjDXk8N2ZApcGSJ/pjiSw6tA6Fv41Yv9q7fUDh1sPTJSv+W8dekYtedS2ryx6QvOz5g/nNF2JD+5C+JYk2dfBXWuRLlWEuwryOblZM0ygmYdSb+NZtvH8h5mh44ww3uJoc2IwMr84DJoaAUmvJ4a3sUPndIExx3O2y7Ta07N6zb161bVq0b1LcBwW2u9o3W8qrW9ChjvaBR3AOAdo+G+xfgti+Edo+G23nTF4B31JM7E2890LjzR37d3WeuSntrOtqqmltqW9t6+/g3bd1y8PnHv/nd+8MOfvvfud69fvXNg/6llSzbM6125aNH6+X3rO+evqm/vK6vuDCVag4nOcLIrkuqMJtujFS3RisZoot7uLZEBVgpbgiAw81GUAgwDRuQhaRI4VcFW+byJro0vnzk4OnHk0sTFN969du+Dp3tF+FKtPXz4cHBw8EW+nt69e7e1tXUyrDYZWXtuSXm+iJIzZ84EgUA///nPn6z8dC7JT7b7F5ahoSEQCDQ4OPinP/1pfHwch8NNRvhe5IP6Fy48hz+5nxUcDsflcnNzc4eHh59Dpy9+Fy0tLVwu92nhI54oIZBkRJIMgxUi0TwEiovCCnAkCYmupLA1VK72ET7ydTSBni7U04Va+iNqVNMEaqpAQ+UDVL6WxNYgSVIIRpiH4OXD+UikmEYCVEq/xVHmCla6IpXe0upAeUNZdUdlY29d+/zq9u5wfaU+5mK6REQDnaCiUKRUEh+PYyPETq42pTJ16nU9akWHUFBDZgcK2O4sQSBfmEDwG/HMeVTpbqHurNJ4RgkcEEo30tkLUZRWCLE2n94Ao9XDKNVQUrKAVgkRNqDti/j+7WrfsMl63ai/pFYdE/A24DhLoIL5herFKNsaqn+rwDxIF69EYxdk41dBOHuolisG7bBGsk9MH6STlhDwvRhiG4Zcj6amkPQ4jB0vEiSgoooCbmkWIzSbGZnGDoJ4fhDPP51bOkPUmBYZICw+Zjw+XnP7jcVvv7Hmzq1lu8/7Fo5wa88jy8eQoQs43wjTNcSwb6OZt1ENO2j6nXT9DqZxI9uwlKGux2nL0JYQpjhCilewauv4tU28rmbJihbdSx3uIwtKTy5N7l8YW9For4qILFaC0ISg2uDsGFnazNMtlGvmC4VtJGIyvyieg6mHiZawlCu58qUMbg+a3gwj10CJSRg+hsCEEAgvvMgBKbDk5hozIfpspC4Xoy2Aa8EQUw48VEhtJUnWiPR7dZYjRtsxk/OQyfmSzjmg9q/Wla60pFY4/a1ifYogKCvg1uQJu6HKNXjTS1z9Tr5wJZXWS8Q14lFJPDxGgEVIRSESxE8o8KDz7LB866MckzRvkTxKtifF4WpTrMpTlgxESn3RmLuswllRY0s1miua9eE6rb9W4q1jBJpYpa2SVIeptrW4tiFQlbJVVTiqUt7qmnBVc6ys1edq4qsa0LzmfGZPvnyQYj6kcI9ZXdddjgm3bdxlu+qwjVltw3r1S3zeciyjt5DVA+HPRwiXE2SDTM1OkX6/wnRUYxnW2sf0zqta5zWV9aLYdI5vOM2xnBbZTsptR1WBPbLqnar+vY6jV+eevrJ8xUBFdZveEaPKfAVsfzo5MB3jA2E90wiuGVR7GsuSwbFkMlwZdN9sRnA6p3SauBqk65geWpMX21AUXQuzzctR1M9hl0xjRWawQjOZgZn04ul0/zSabxrNPZ3hmMG2zWab0lj6NCaQxtCk04F0qj6dasmgOjJpvix6KJtRkssqz2OV5zPLCuixAmp5ISVVRG9BiZfR9btlluOA9YzefE6vP62TDElIqymwNmx+HAH2FhW4oRAnpMhe8CgM7IOiwzBUKRxRBkOUQdClhfhoPjmYS/VkM8wZLFU6W5nOUaezgTSmbjbNOJNinUFxz6QF5jBLMjhlWfyyHH40kxdI43pmCfwzRZFZ4oo0YVOOZQGhcUC/80jdpUtL3ryz7sLN1r3XXEsu4BeO5c8by5h7Ib37DLj1OKR6L6J6J7p6K75mCyW1kRpZSzL2w9TLYeqNKOMQyXWMHh5hxYfpVcdItS9jU3ux5XsJ0f3U8Amu/7zUeVVjmtABN/XyGzrJNZXoskw8JlJelQDjUv1NqfaGRH1dKr2iUt/S61436d8wAq8A6msq4ILKds4cOR9qudrSf71/xYXVPbsWNKxsT82tT3bU1fe0z13Wv2XP7tEr197/zg++/e0fvfHG/dFz41s371+0YG1z04Le+avnL17f07e2qmV+SVVXKDk3kppbUtlbWtUdq+osq2ovr2q1uqN8mR5H5RfhmAVoOhTPhZNFKJocRVcLdaHShkX7zkwcHru588TZ4Ruvjb1+78W/yjz/ET548ODPqREMBsfj8RcwjjZ9+nQQCPTTn/70SYmeBz5OzqgfHh5+vErj1yKS/KRYz9oyOUfH4/Hk5uZOZrF6Ab9Mz1qEJ9tvamoSCARPCx9RWAEGJ8TiREgUD4HkIFAcFJaPJYoJNDmFpX6Ejzwdja+fxEeaQEvja6h89aMXT03laag8gPg/+CjIQ3DzYTwEQkwlaeUKn9Ees4dSjpKUu6zKn6gvqWlPNvXUtM2rbOsOVqe0YSfLJqVouVQFhyPm8/kcIZdutEhtEZU5pVBW8gQpMr0czgzl8kI58jhEVgMXNSOZXUjZVpb2qBg4INDs5KgG6IolJE5rEbkSzKgpZNZAGFUF1CSYlshiJ3PULUjLKrLzIMsxxrONckyHaPI1cNk8iKq9yNSJc8yluhexgV4Cpx2Cbk4n9Bfwd5KtY4B6v0S8gSdew+X3MVjtREolklYGp4eLaP5chi+T5Z/DDc7khmfwS2coamYBDbMNTWmG5gxDV6ZtSV7TXuHW0fCV1+e+fW/la28sOne9avU5WfNZXPkYPHoJFxqlBU/wvNtJ7vV43wDFt57pXcN1r+A5F/OM3TRRBYQTzmIH0gSRDFWqUF+PUFVBzAl4MEaoLeO0V8q767SNKWVplGfxEMVWON0GIfmKhHU0wyKpb0DvXKvULGDSqyHoaD6+HCZso8h7yLJuDK85l92Qza7P4TdCWFVQSgyC9ubD7LmFZnC+IRuqAyOBXDSQCzNkQ1w5mCoEeylLNaQxn7FZLzis523OEYfrsNW50+DdZAytt5SstNibOaoEkhvLZlZncLpzJGvgtoM813G5brdQvI7NWEDHN5ERFQRoCR4aJRYG8QU+dL6rqMCWB7fn0HwQWYRgifMDKW1ppTOeKo7F/bG4O1ZhK6s0xGrUJbVyb5XKWSW015DddZRAA6+0CUg2uKvqvNVV1qpKW2Wlq6LKX1obLG6wW5tY6i68tB8t20C0HJH6Lln8N92e2x7HHbf1tst6y2G5ZjGd06r28QTrcJz+IsFCqKy/SLMKrl2H0Q4QgY0M7RaefqfEckBlO6K0HhUbDnC0Q3TNLqp5SGgbUtp2AfYNovCAqG2H/uiNhZdf27Rjd0fXfF+wQqgqRnBCWaToDFQUhAmDiIHpDE8G1wHmO/KYgXR6ZCYzBhLWTNN1zfCtSKt6CVK7G5bYVOjuz1C3zODEQawyEKMURI+CGJHprPAMTnAW1z+b700TuTOF9iyBJZNnyuCYM5nWDKojneRNJ4bSSWWZlKpceiOU3Ypit6CYTShmE5rVjuPMJQuXMxRbedqDUv2w0jCqNl4EjKNa1XEFbyeP0EeB1WLyAjCIFwpzFyKd+WhvITYIxZXCsBUIbDUSX4ei1CIZVXB2AsIOgTmOLK4ui6/N4uuyuPoMljGdZp1Dcs0mh9LpFdm8hgJxG1TRDpXW5YgTs4VRkLgcJK2ZruiYpV2cVjwAb9slPnCu5vU763/63pH339x2+WbXpgv6JRepvZcLu65m9F7OnHshd+4wbO4xxLxDqPkH8F1DxLodOO/aQuMGiPYlpOEo0X6W7r/Mjl1lV19hNV1k1o4yE+eY4TMs3xm2bZitPcUBzojUZ6WKM1LRCb7wBFc6wldeEqknxKrbYsVtkfyGVHkF0FzXaSf0mglAdU2puiIDLitMFwHvZUflK4mu19sXvbqw61x3/b6mxEBlYklVan593dy2jv7524b23Hj1tffe/963vvWD11+7f/L4xbWrt9fVdXf1LluweN2i5Rta5i5LNS+KVi0srV5UXreoomFRZdPC6uaFtS0LXMVxgdyEp4uRRD6MwEeSpSiqAk3XYFk6hTVW3b1qZOKdU9df23L41PGrt87cevPJs/qLY5l80HDfvn3POZj1+H5jPB5/kUNFkzdF/+Vf/uXJQ/bM8fHhw4c4HK6vr+/hw4c8Hu9ZL+/9pIdfRwsAAFqtNh6P83i8r9Ezv89I6oaGBrFYPIWPU/g4hY9T+DiFj1P4+HQvNJMPR05CEg6HSyQSkzNZnzVN3r17d2ho6AW/vv/Xf/3XpDI/+clPnpT9mePj4OAgFot9zI4vuFhPCvSVWB4+fAgGgydv2ra0tHwlY3hxOq2trVUoFE8LH5FoLhrLx+GFGCwfjeGhMFwUjocmCHBkMZmppHKBR9FHnv5RAJKvp/IACldN4aoevXiqRwFIrprMVuNoCjRZhiTK0CQFlWUQSN0qU8TgLbdEk7bySk9lfai+rbylN9Eyt6yxy5+q1RT7GCYl0ylnepRMj4br0imdeptTb3XKTMVCIM4TNzAYHQRsD0K8jm7YIbDtFpp3cQ272cAelu6EVDesVB4UAfskpiGFawhQrmax56JFi4nqNQzDJq5xC1uxGs1bmC1dkqvfkOvdn1N6Cpw4WZg8gExuIaRW0lML+WVtfF+KoQ1ghL58djibXZ0tWwQzbSUVHxMYVlKAHoqrX2Tr4air8XRXFtORxnHO4XtmSsIzNMkZtra00FJwxebCmj2Q+gNFTUfgLcfQXSdIS4ZFx2/VvvLOivfub37t7UUnbxavHMU2XwYnruaWXEWHz9ECh9m+7UzjFrJ2gGRaTrd20+x1ZGcZ1p9CBRqg3o4M1/xZjqWznGsyA4MY/0qarBLO9ecxzVkcYxbXAGYb8uiGfIqpgGQtwDnzMf5cXFm+bCFTt06k3SCUrWVxF5OpHWhyMZxmhXLd+YqyXGNjjntepq8vLbwyu2IjMrQcbu4o4JWmkz2ZOGsu3grDmqEYcyHKnoeJQkitGMEmnvyYUnVRr7xulF8xyC7ogTNm4LBBvUOtHlBoV8oM/WJNPVaeyhfXZEt7cpVroLq9WPNJhu2swHZGajwqU++WigYElAU0VAse3oBFVGNQFRhMORJbUkgIg5mhXEGgUFGMMoUYxeWqihpXbXOgssFVWqX1lXOsJTggXCSNoEUlMHEsRxrLVsUgxhjBl5CU1+jrW20N7Y7qVlus0WhOCtXVVNN8rH0LzX1C5L2m9900eV+xuO7YbK/ajHes2ttm4KYJuKYHzqvVh0Sq7UztBqp9kBraREntRCY2FQZXgN39EMcitG0BRdtFUHVglR1IdTdC24s0zMeYF5JsfQxnPz/cL65fpV/5Unj0Zv8b726+fG3Z0P7GZauCjV3a8laRv5FmrkHpUgWaeI4mlgeUFGpKIPKyXKAq195WWLYU2bKV1H+IvfwYZ+EQtWkAWbogz9GcCSTTVYkMRSJDlsiUl+coyvJUsUJNKQQohepKYdpokToKlZcUissL+ZWF7IZCdg+MsxTD30CW7GIrDoo1RwHNIUD9sgY4oNUfMZhPmq3nTKZRnXZMqb+qNE1obLd09gmj/YrJes6o2g8IN8hZi4XceTxBN1vcyRB20nk9NNZ8GmMpgz3Ak+1SKncqVBtFiqV0cTtKmCyUBguk/gKJv0AUyOdHC7gJCKcZKewjKTayTfvErqOywHGJfw81sAUTHoDFtiGSQ+j6Y7jOEfy8C7RFlyVbboZPvNZz660t77615603t559fe7+dyq2vuvacFe58Q53wzhp9TXY2qvQ9VeK1l9GrblMWHqJ1n2JXXNZEL0qcV2Xm8YVunG5bkJqmhDbJ8SemyrvOOC+pDUcF8t3MPircPIVZM0ymnYxXTmPoF5MMW8RWg+rrBcM5psWw6tWy2178RWX64zJfEytPSjWHhFbzihCt62+23rbDaV5Qm6ZUNlv6Nw3rP4Jd+hKMHEiWbWjvnJZY6QzUdFT27Ny4Z4jB6/eeOX9D374/rd+dGP8jT27jy5ZOtDZs7ite9G8JWt6lgzUdq2q7lhe3bG0tmNJfefihs6+ho6FxbFqjcUvUjl4cjtL4qDwHQS2Hc+2U0Uuc7Cue8XWiXvfv3H/+8ev3Rq59cbZ2881cc/fceUaHx/v6+t7HA58PAkhNzfX6/V+kQYfPHgwmU5w3759/f39kylWvgEJzP/zP/9zUo0f//jHT+rwzPERh8MNDQ1ptVoAAKbY8ckD8Lcs4+Pjk0+L5ubm/q06/yT26upqtVr9tPARjmRjsHwCUYzB8lEYLhLNQWEn8VFCYiqpnP+Ljzw9na+n8QAqV0PlTt65VtP+Lz4SGSoCXU1kaKkcI1/qUuhCWkfMWBy3lCRtiSp/bXNpa09F24J4y7xoXYervFLp9zCtapZXSS9WUoJqagAQFGt1PkDp4MqLGcpqjmwej7eSQx6gAkeVrlGj57zOMaK0DkuNIxLteaVmVKMeVulOaExHAOsBrWqzULyWqdsush9Q+U7ovCdUhj102UaYYSfaewBZdgpScyav8TSk+RC6cRupYQ2rrk8Yb+G6y0hyewHXls7yzeal0lULCiwb0MVDVOtSgqWb5FvAtbdSVPEiqmU60zaN754m8oPU8em2ltnRZeDq7dCWQ4iWo5CWE4Wtpwo7huELz1AGL6gvvdHzzv2N739r2603ug+MGxecz6q/Ojsxnh27igmfpvr20mzrCcpdDP4OJmsZid2M4pcXyoI51iS4uCM7siItsnFWeOfs4K7M0BaEeylRUg5n2fPo2gymJo0FZLC0OXRdLtWQRzLn4+25OH8OsTxP1c8A1nIlq2mcFUTmMiK7n8IMo1lmCM+WDZRle9rBFavyqzaA67bnt+xBVQzAPXPzZYk0hjedaAFTrDCiBYa1QdDeAnwSxlhAUrws14zqNBMG2YROfAUQndeozphUh/TSLQrhCgF/AUvYQVHWIjW1EHVrgXYp3LQNZz9GM59mGIZZ2pNczWGBcq9IslXIWskiLaBgunCYZgy2FkOoRJESUGosjx0FCwL5Mj9MHyD7ymSJWtxMdgIAACAASURBVHtdW3GqyR6tUrjLacYoQhXOE0Uhgli+sDxTUpahiOXqSpHuOKe0WlnbaqrvsFZ3mGOtgKmaATRhXatx3v0M73mJ+6bO/YrBfdvkev3RopTGVy3aV0zqGwb1VR1wXqN4WSDdQJGvwBmXYwNrcPU7EY3boZUDhYk1yNgKYngx3dKO0TbCNA1QQxvc0oVyzMWaO1G2blxxH7thlWHFttJDRztv3lnx9ntrbtyeP3y2ec++5LrBSN8yb9tcU6JJEKwhulJF1op8U0WesSJfnyh0NyDjC0gdG7jL9kk3ntJsOa1ZvV/UM0CpWogMtxY6q3OtqTxTMl9fUaBLFOoSUF0cpo/DjXGkOYEyJpC6CoQ6BZfXwiUtCPF8jGwtWbmTrTki1o4o9WM64yWbacxhHnVYL7jsYy7HRZftstVyzWCa0Jpvaa23dfY7BudNk+PqI6zUHTOqhgzy7XrNJkC3XmVcLQdWihWrBMK1fN4moWCPXHXSpDoEKF6SSNYyRPMxogaorKxAES2UlxRKy6CSSrikBatYwtBsERoOKW0jgGdUE7ygiJ7iJY+zmo4xu09xF5zhLx4VLB/jLL8uXPq6dvWbxVveqj741tyxt5Zfv7vy4gd9Z3/Uc/rHTae+nzz5VvGRm7qdN1jbJ2jbJ+g7JthbJwQD49L+a/KWy8qyiyrvmMZ8UaO9DGiuqTXXFMAVqfmaynFN57pitI5oNHuFglVk6RKKcgFV001TNBMUrUTNPIZ5QObYZ3QNuxzn3a5zruAJh/+A2bUbMG2VGLaJ7C8r4uPuyITFeVVpuizWXRFrr0h0lxWWawbvNXfsdHlyd01qdX10XiLaGU/11K3YvO74mZE3377/g+//7P67379wfnxgcGf33CWNbb29/SvnLRto7Ruo711R2b4o0dQbr+8oq2kuSdVbfVGF3iVRO0RqD1/po4s8BI4Lx3bSJT5bpHHu6u0T975/6/0fjtx67fyr74x+rZ59nAwKTtIkFosFg8Gfwy1/njrmMXQ+3gCDwV/39W/++Mc/TrrzV2OxzxYf7969CwKBWlpaPv8Y/JNg0Jd1czKNERgMfqHmYX1ZL/7x+pWVlZPpDP7xpv70pz99LfDxqXg61ciUAlMKTCkwpcCzU2BwcPBx8r54PD6ZmG94eHh8fPxzoPPZjeept/yHP/xhEh9/9KMfPdn4s8XHyfyIIBDo687gTwr3HCyTqY7i8bjH43kO3b2wXaRSqUl8/PTTT1/YQU4NbEqBKQWmFJhSYEqBb5gCk/j4wx/+8Em/ni0+Ps4Q/mTHU5YvogAWi43H4zgc7otU/qbWSaVSBoMBBAJN4eM39RBP+TWlwJQCUwpMKfCiKfDpp59O4uMPfvCDJ8f2DPHxwYMHkx1PhR6f1P0LWibv+z+tx/6+YKcvWrWKigqz2QwCgX7/+9+/aGObGs+UAlMKTCkwpcCUAt9IBX7/+99PUtz3vve9Jx18hvg4mSocAIAne52yfEEFhoeHJw/eF6z/jawWj8dtNhsIBPrd7373jXRwyqkpBaYUmFJgSoEpBV40BX73u99NEsh3v/vdJ8f2DPExHo+DQKB/8mkfTyr+pSwPHz6cwsdYLOZ2u0Eg0CeffPKl1JuqPKXAlAJTCkwpMKXAlAJ/nwK//e1vJwnkO9/5KwuXP0N85PF4YDD47xv01F6PFZhMRvX4z3/CjZKSEp/PBwKBPv74439C96dcnlJgSoEpBaYUmFLg+SvwySefTOLjBx/8lYXLnyE+gkCgeDz+/B3+hvU4mVnqG+bUl3InEokEAgEQCPTRRx99qR2nKk8pMKXAlAJTCkwpMKXA36fAxx9/PImP77///pMtPCt8nMz4+CKv5PikFi+mpa+v75986kwwGIxEIiAQ6MMPP/xqj9HDhw8nlxb44u9f7YCfRe8PHz4cGRnp7+9PJBLaPyter/cvLJMfTqZfmDwHfbXvubm5fzbeL7o5uYiZ1+vVarWTvjxuZ3Jxs2ch8lSbUwpMKTClwFeuwEcffTR50r5///6Tg3lW+Dg55+ObkTnzSdWep2VwcPCfHB+Li4tLS0tBINBT/Do9ZqDJBaYSicQkH0wyRW5u7lcCOo+55IuizV+r5/V6+//f8pjqJp3i8XiT+31Z+tm3b98kP2GxWAAA/pwLwWAwAAAtLS2Pk+hObnC53L9PSRwO95UcCy6X+xcuAAAwmXv1L3zJzc3FYrEgECg3N7e/v/95nhOm+ppSYEqBKQWegwIffvjh5An8vffee7K7Z4WPk2v+PNnflOXLKjC5euGX3eubVN/n85WXl4NAoN/85jf/oF8jIyOJRILH403+S0xiEAAAHo9ncsEAj8fzJD08afn7kOi57fXYr0nXJrP3AwAwiTuPhwEGgx/Tz+ej+WQGeywWOzg42N/f7/V6QSAQFottaWkZHh7+q+tZ/a0j9fDhw/HPLUNDQ5PH4h95Hxoa+txOHn34+S7/rfE/ePBgfHx8cj16EAj0mKFxONzdu3f/1l7Pwf7FI+IbNmz4f39fPP2/9u3b9wXH89WK9hyOy1QXT1GBv+P+z+d/D7/UuespOvJ1aeoxPt67d+/JMT8rfJxcwOfJ/qYsX1aBKXx0u93JZBIEAv37v//7l1Vvsv7Dhw/7+/sfR84GBwef9UXr7t27/yu+PK0KXxaD7t69Ozg4OPlM7WQk8v9n7zrAoji++FAU1OidFSMqZ4tdMMYSG2hM7IIlMTEa0NhiEkH/RrAe1tixa2ygscdIsTfALjbswYqicnCUo7cr+//2nhk3u3t7ew0O2f38cHb2zZs3b/ZmfvvmzRsXFxexWMzqaqJQKHx8fEQiUVBQEFgfRSKRr6+vpRVoXEcXcymFQhEcHAyb2wCIGxFoAjwB/Pz8wNqqywegRGyx+EujRBLYAg1tp/710V4eHh4Y+YaFhQlQoJjf/+KvToCPxaxzHPuFdcC3FHyE85qLuakfZHWC7+OAAQPGjx+PEEpJSTGii2NjYzFwNGJ2N6LG0lJEoVBIpVKRSOTm5ubr64sQkkqlNOE9PDxcXV2joqK8vLxEIpFUKjUUrdIYfpC38fHxEKeM/wGt1E8aDM5EIhEYwpluANgE7uvra4Rdlo851ojvGYIgwBxrRFldRUJDQ/k3ECzr2K9AIpH4+PjwxJEKhWL16tVeXl5MZxUPDw+mEwiGqrQEFdd+qGlw8oHWgWZWr17NU8+sP3mFQhESEuLj44OVD5iBu+vxr0BIUDUA1jq8dAbjiVgs9vLyMrGb0tPTgdutW7eY/SjAR6ZOrCtHcAPo16/fTz/9hBCSy+WG9g3ErheCAHDoTaFQeHp6isVi8LKlImxfX18XF5eoqCiJROLq6ioARw41EgQRGxsLdly9igoNDRWLxeA8gN0AWL/vuWsUnmINxMfHBwUFYfcMDw8PDnADNnWEkKurq6+vL5h+sR8COPJ6enpirw88VWOcihG/WRKsHre4UtYE9rfhxltmfIo/aahNdnNzCwkJwb3APyHAR9ZuNS7TcvAxLS0NuvvGjRvMzhXgI1Mn1pUjwMfevXv/+uuvCKHk5GSD+iY2NhY+bamQyCAOZYcYjNze3t5isRhwDOx+i4qKcnNzEyJw8XwTFAqFq6urh4cHBz04A4i1l7u7O6vPAEdx4RG3BoKDg/GWJtYffmxsrJubm6ura2ho6OrVqyUSCTb6CufrcusWP42Pjw8ODvb29oZPIA8PDz4fPwqFAtymEUKenp6svYOrEBJm0YBCoYCVJYSQj4+PoTxTU1MBPl6/fp1ZVoCPTJ1YVw58AVuXTMUrzVdffQU/gKSkJINqhi0ywiDFU2lSqVQsFnt6egL6EeAjT71RyfTCRx8fHxiOXVxcBOBIVZ1509iXgPbzVygUEonE29sb7wYLDg7Way02r2wfEjfsAIM/OzlaJ8BHDuVY6JGJ8DElJQXGq2vXrjElFOAjUyfWlQMODdYlU/FK06tXrylTpiCEDIKPsGzNdOYrXtlLWW3u7u4eHh4Ioa1bt8J2GZFIJEyuhvYiYBem3rAZwNvbm/nU0FoEem4NYMcVqk3Rx8fH1dXVz88PIRQUFMTNQXjKUwPw1cSBIOPj48FbQ/hk4qlSs5MpFAoYl9zc3PgPPnK5HODj1atXmSIJ8JGpE+vKkUqlvr6+1iVT8UrzxRdfAHw0aPFaIpF4enoWr6Slvrb4+HhwCOvdu7cAH43uTlb4CNZc1v1JRlckFOTWAIStEIvFMF/CLWwX47PYys1ceErVAKATiURCzcRpAT5iVZRUwjj4mJycDPDx8uXLTMlLGD7eu3evYcOGhw4dYkom5IAGhD3sPXr0mDp1qkFbZ2Cq5vCdF94uXRrw9PQEf6aJEycKpkddWtKb7+rqSp1KYfoULF569WZ2AuoqBIR/h11iZq9IYKhQKFxcXJgLPj4+Pi4uLvwtXoImLaoBCNnG0wyclJQE8PHSpUtMqUoYPv7vf/9DCE2bNo0pmZADGoBDL8qyNtzd3cH6yD9wj4eHh7Dbw7h3Biw0CKEuXbqUcbO3cQqEUjT4CC4BwjtpikqNLgtOvQqFAlx7XVxcjGYlFOTWAIwe1O92+JKneaByMxGeWlQDxsHHixcvMqUqYfgI4aBXrFjBlEzIAQ3ATv6yrI3u3buD9ZFn2HDhvHUT35bq1avDF6ewwGe0JmEehU98SLu6uhrNTShoogZcXFyGDx8uEokkEong8miiMrmLu7q6Uj+TJBKJu7s7dxHhaTFrAEzyVJSvSwCZTAZzQXR0NJOmhOHjkCFDEEK7d+9mSibkgAYE+Ni1a1ewUvM8tFAItG7ib6djx44IocqVK5vIpywXp8JHMD1SN3CUZc2USNulUqmjo2OVKlUQQsIqqkW7gApNIC2YHi2qcOOYwwm0esvixWvW4auE4WOPHj0QQmfPntXbjDJLIMDHLl26AHzkOe67ubkJm2ZM+b20bNkSIeTs7GwKE6Gsq6urp6cn7EYSXsiSfR/wviXBBlwMHQHnmhIEAY7UPMftYhBMqAJrgCeuwFtnIiMjcVmcKGH42Lp1a4TQ/fv3sUBCgqYBnt1MK/Uh3X7++ecAHzMzM/W2C87oFNan9CqKg6BLly4IoZYtW3LQCI/0agDgI5zlI7gB6FWXRQnw0b2CO69F9QzMvb29Yd+YWCymLmQXQ9VCFTw1IJVKqXv7dJXCgXtYbXwlDB9r1aplxGkiupr6Qea7u7vz6eYPsu3QqE6dOgF8zMrK0ttMWDRktbTrLSsQgAbc3d0RQh07dhQUYooGIOA/HHBiCh+hrFk04OjoiBDiueHULDWWWSZg6926dStCSFi5ts7XgKeLFz515syZM8yGlCR8VKvVtra2NjY2KpWKKRktR6VSPXz4cN++fREREQkJCbSnlrjVaDRXrlz53//+161bt2rVqjk5OW3evNmUil69ehUaGnro0KG7d+/y5wNzeVRUVHZ2Nv9SHxJlhw4dpk2bhhDiowEYuYTlElNeAG9vb3t7e8Hh3RQdEgQhlUrBjivYwk3UpFmKw/mlwshgFmVyMwFb73fffYcQ4rM/g5ub8NQSGuAJH/GZ16dOnWKKYUH4qHf6Aa9MsVjMFIuW8+zZszp16sAOIISQjY1N//79X716hcni4uLGjh1bp04dBwcHFxcXT0/Pffv2MVGpRqPBRVgTeXl5Xl5eVatWnTp1at26dXGNkBg+fDhrKYIg/vnnnyFDhtSsWbNq1ap9+/a9cuUKlTIvLw/c5zHDli1bXrhwgUrDms7Ozm7SpAku1axZs5EjRwYFBV28eDE/P5+1yIeX2b59e4CPOTk5elsnlUqFwBx6tcRNIJVKnZyc9P5+uZkIT6VSqaurK0JIWLm2hpcB4KM1SFIWZHB3d+/YsaNIJCoLjS2NbZRKpXxG+PT0dIAfJ0+eZDazJOHj5cuXEUI1a9ZkikXNgVNKMYTCiSpVqhw+fDg/P3/OnDnly5fH+Tjh5uaGB+6LFy+2bt26RYsWHLt3NRrNwIEDEUK2traYSYcOHaRSaXBwcGhoqEwmowqG0/PmzbO3t8dFEELlypWjrp9CpCUqAYDg2bNnq9VqzIeZ2LRpU8WKFRFCVatWxcWrVq0KoVVatWrl7e29bt26q1evKpVKZvEPI6ddu3a//fYbQig3N1dvi3j+KvTyKcsEoEM+g0tZ1pLetkulUmdnZ2EG1auo4iEQa6/iqUuoxdfXF+w4giqsUwNSqZTPfj7sNHz8+HFmQ0oSPm7atAkh5OjouHLlysmTJ48cOXLgwIHe3t4rVqygWrxXrFgByGnz5s0ZGRkEQcTFxU2fPt3BwcHGxqZZs2YYV/Xp0+fmzZt37txZtWpV/fr1EUIikSgmJoYgiJEjRwLZuXPnmFqAnLVr1yKEqEh00aJFuohx/vz584HzkCFDzp8/f/DgQdgP1Lt3b6C5efMmEIwfPx6W3ZOTkzds2FC7dm2EkN4qunfvDrGNAgICBgwYIJFIIKjKwoUL8/LyTpw44e3tDW49rq6uP/7446ZNm27cuKHXzorlt/7Ep59+CtZHPgZXqfay/kZZs4QAH93c3KxZSOuXDfwo+IzR1t+WD0DC5s2b16tX7wNoSKloQmhoaLly5Zgn0JQK4cuCkJ6ennx6JyMjA9DLsWPHmGopSfi4evVqkIz5197efuvWrSAuAMRvvvmGJn1SUtKJEycAhCGEJkyYQF2tLigoGDt2LEKoefPmGo3m66+/hlquX79O4wO3t2/fBhC2bdu2bt26AbFIJFq5cmVhYSFrEYIgzp07B5Tz5s3DNAsWLEAIffLJJ5AzceJEhJCLiwvNeJaTkxMdHR0XF4cLsibA9xE/ysrKunLlypYtWyZPntyzZ084X87d3R0+Dg4dOjRs2DAQqV27dhMmTNi6devt27dx8dKYaNu2LcBHPsLz/FXwYVVmaQA+ImSpwaGMKBZ2cfEZo8uIQkq2mS4uLk5OTiUrQ9mpHV5+f3//stPk0tVSnochZ2ZmApw4cuQIs4GWmiH4hJvB8LFSpUoTJ048cuRIXFzc6dOnmzZtCuu/T58+LSwshKVk1iMXCYJwc3ODXaJMe5tarW7UqBFCKDo62tfXF0LZqVSqoqKitWvX+vj4JCYmgkbS09MbNGiAEPrll18IgigoKJg5cyZej27cuLGu/XoQYLl8+fIDBgxYvHhxcHDwuHHjQOBJkyYBc3CfX7hwIVP7fHJo8JFWJCkp6ezZs6tXrx47dmz79u2hp6dOnXrv3r2srKyQkJA+ffoghOzs7Dp27Pjzzz/v2LHj3r17NCZWfuvm5sYfPvL8VVh5k0tWPAE+mkX/Anw0ixrNxcTJyYmPn725qjM7n4SEhIKCArOztRBDCHcqRO2xkHpNZ8tzoszKygJQERERwazUKuDj+fPnqZLJ5fJy5cohhJYuXfr27VuQ/saNG1QanAb4yPqJX1BQ4OTkhBA6cODA5MmTEULffvstQRB79+4FnhMmTACw2LNnT4RQ165di4qKMOe7d++OHDnSwcEBiNu3b0/zHg0PD4d15A4dOgAN/tusWTPsZAl7X5YvX445G5Tgho80Vi9evIiIiFi8ePGIESMAOrdu3Xr37t1Pnz59+/bthg0bwLDq4ODQpUuXyZMn79q169GjRzQm1nbr6uoqwMfi7BRPT08XFxdhz4eJOgf4KMygJqrRXMVLu++jk5OTh4eHubRRDHwQQoLnRjHo2bgqeB6ukZ2dDagmPDycWZEF4aPeT73jx4+DZLSA5unp6eCAKJVK4+LigIb1xG6CIMD+N2vWLGbbFi5ciBASi8VJSUm//PILGBczMzM/+eQT4Nm6dWulUjlo0CCEkEQiSU5OZjKRy+XTp0+vUKECFOnWrdvr16+BbMSIEQihWbNmqVSqnTt39uzZ09nZuUuXLvPmzaOGmIHl9QULFjCZ88kxCD7SGD548GD//v2zZ8/u06dPtWrVEEI+Pj6hoaFv3ryJi4tbsmRJ27ZtEUKVKlWCc6X37t375MkTGpMSv23Tpo0AH4uzFzB8pG7/Kk4BPoy6jhw5ghAS4KOV9GZp33ldoUKFWrVqWYky+YiBELL09rtT2qtOnTqHDh3iI5JAgzXAs3dycnIA+bAuwFoQPur1nSoqKgJM06BBg0ePHmm014ULFwAw2draxsTE3L9/H6T/66+/cMupCdhYU7ly5ePHj8MuZo1Gc/HiRThN29bWFgrOmTMHITRy5MhevXoBQ/iLd9g8ePCAypYWoVomk02aNAlsonXr1k1JSSEIAqJy7N+/n1qQmYZd0j///DPzEZ8cU+AjlX9eXt7169d37NgxefLkjh072tjY1K1bd8GCBSdOnEhNTb1x48asWbMAWItEop49e06fPv3gwYMvXrygMimRdOvWrSFsOJ/aedrk+bAqszTu7u5gfWQdMsqsWgxtOJw3Y/QMeurUKWFeNFTnHPSlHT6WL1/e0dGRo4HW9ognQDFF7PHaCyH0xRdfmMKnDJbl2Tu5ubmAlA4fPszUUknCR4IgIiIiAJOBf56dnR3IamNjs337doIgbt++DTnz589nSk8QRGZmJqzSghXtk08+qVSpEhSpUaMGbvMff/wBmfB31KhRNjY2kLa3tz99+jSVuVwur1Chgqenp1wup+bHxcXBccA//vgjQRCwJ1qvfb5KlSoIoZ49e1JZ8U+bCz7SakxNTY2Ojl63bt3IkSMBNQ4aNGj58uXR0dG5ubmRkZGTJ0+GWJvVqlX76quvZs6cefjwYWqsTRpDy922atVKgI+WUy+TM4aPrD4hTHohh1UDsIXOaPg4fvx465wXg4ODmzRp8vTpU9ZWW20mjPZWK55ewcAXn+nir7dgSRHoBSiFhYVyudwUh86u2uvDPiIrSXuZvRP19g7UmJeXBz+cv//+mylDCcNHgiBOnjwJmAyktLGxGThw4OXLl0HWnJwc8F/cu3cvU3rIefv27bRp09q0aQN7VqpVq9arV681a9ZQDxiQyWSwAO3o6Pjnn38SBDF37lwbG5saNWocOHCAxvn169fAqmrVqrNnzw4PDz979mxkZOSWLVvAkRGOA96xYwfIvGHDBhoH6u2AAQMQQuPHj6dm8k9bCD7SBEhISDh+/Pi8efP69+9fo0aNihUrent7r1+/PiYmRq1Wh4eHjx49GnBwrVq1+vXrN3fu3PDw8Ldv39L4WOK2ZcuWAny0hGJ18RTgoy7NGJTv7e1tivtX165dzTIvPnv2jE+8ff5Na9euHULo6NGj/ItYA2Uxw0ezq93GxqZChQrWoEmeMugCKEqlcu7cufXr1wcLjr29fcuWLb/77ru1a9fqiqysq8Za2gsh1KpVK100pT3fRXtRo8qYpUW6eofGPD8/H344rO4BloKPECibJoquW41G8/DhwzNnzty5c4e2akwQxP379wMDA/moT6PRcETPPnbs2MiRI2/duoXFSEhI0EW/c+fOmjVrguKYf+fMmUMQhEajAWxnY2MzcuTIO3fu5Ofnq1QqmUx26NChcePGNW3atEaNGk+ePJkzZ47RSKt44CPWCSTi4uL27t3r5+fXuXNnOzu7du3aTZw4cdu2bXfv3s3Nzd29e/ewYcPAVOzs7DxkyJAlS5ZERUWZd5bCIrVo0WLKlCl6fSGAXli8xnozOoHho9GWM6Or/pAKAnw02vexVq1aps+LsbGxNjY233//vRkV27BhQ4TQzZs3zcizGFgVJ3w0u9rVajVCqEaNGsWgKHNV4ejoyDqALF68mDmlQo6dnd2YMWOSkpJ4yoD5fPzxxzyLlDoyaOP9+/fNKzlP+FhQUAACsHoPWgo+8jxR0bwaMS+3nJyc5cuX9+jRQyKRlCtXrlq1ao0bNx48eHBYWBiuKDc3F072BBXbaC/8TiOEOnfubCKoKnFNFhUV3bx5c8OGDd7e3hCDs0uXLn5+fnv27Ll06dL27dvHjx8PbqAIodatW48dO3bLli0GneuN9cmaaNGiBWycZ31KyxTgI00hRtwK8NEIpTGLmAIfExMTYRgxcV68ePEiQqh69epM8YzOAYf1N2/eGM2hRAp+9NFHPD9BWcVTq9W0yBusZJBpdrXDLC6RSDgqtbZHYrGYFT4ePHiwQ4cOQUFBJ0+evHLlytGjR5csWeLl5YXd2DZu3MizLXiqbdiwIc8ipY4M2kg7BtnEVkBQCNbeoXEuLCwEAZiLtARBCPCRpi5jbk+dOtW3b1/89js6Onbq1Gnu3LkXLlzgYzTlrrLE4SNNvIyMjNOnTy9cuHDgwIG1a9euUqVKly5dfvrpp40bN166dGnt2rXff/89eKPC1+dvv/126NAh6jFCNIZ6b5s3bz5p0qSKFSvqpSQIQoCPfLTETSPAR2798HwqwEeeiioeMhO3zrx58wYhxHMzWXR0NBxgZq6mQfg945Zoc3Nz27dv/9133+laajOXkDQ+uuAjjYwgiDdv3syfPx+f9/bw4UMmDWsOho+ff/45K0FpzwSrM4RMWbJkyY8//vjNN9/8qr0yMzONbh1/+FhUVARKZt0iLMBHo7uAXlCj0cjlcv6Gd3p5HffWBh9pYiYkJBw+fHjGjBm9evUSi8VOTk69evWaOnVqSEjIuXPnFi9e7Onp+fHHHyOE6tSpM3jw4N9///3MmTOpqak0Phy3zZo1mzBhQpUqVTho8CMBPmJVGJ1wd3d3cnJycXHh83lqdC0WLTh48GAY9TZv3mzRijiY9+7dGyE0dOhQDhpdj4KDg0F+E+dFfCzWokWL5s6dO2rUqGHaa+nSpbqq5s5PS0szuzmTu0ZzPTURPoI9+KeffuIjj4XU3rFjRz6102hSUlLgXTI6eByNIc9bvfAxISFh/vz5HTp0wNtY7ezsVq1axZM/af369xo2bBj/UlZOGay9pFKpt7f3559//m8T3/9fUXv9888/RjeEP3xUqVRQ8b59+5jVCfCRqRPryrFyMr3JSgAAIABJREFU+EhT1pMnT/bs2ePn59e1a1cHBweJRDJo0KBZs2YdOHAgIiJi1qxZvXr1goMWW7VqNWbMmM2bN8fExFCjtdMYEgTRtGnTsWPHVqtWjfmImSPAR6ZODM1xd3eHod86j71Wq9VwdjxHu169ejVs2DAbGxs7OzscwJ+D3hKPwKPD1dXVCOZr166FUduIefH169ebNm3y9/cfPnw4jnH7fvLRpoxe7Hv06BGcBGtEo0q2CMDH2NhY48RIT0/n3slkUbUDeOUI3/H48WOJRBIQEMDaOnD+sbOzO3v2LCuBJTL1wkeq3xdC6OOPPzZ0iRa/1b///rslmkDlGa69xowZ8+mnn1aqVClGe1EJIK3RaK5cudJNe1WrVs3JycnQL1jcKGrC1ta2devW48aN27BhQ7b2olWdkpKybdu2oUOHArjs1KlTRkYGjQbf8oePGKOz7l0W4CNWqZUmShd8pCnx7t2727dvnzhxIuzWbNas2fDhwxctWhQREbFv3z7YmlOuXDkHB4fu3btPmzZt7969zI+qTz75ZPTo0TVr1qQxZ70Vi8WlItwMHwzE2sBiyMTw0VBfsfz8/PDwcDzCNmrUKCYmxmiBVSrVw4cP9+3bFxERQcWLnTp1srGx0eWIFhwcPGTIEDBvJyYmmiKA0ZJDQVPg47Jly2DyMHReLCoqcnZ2pk48kHZ0dOzateuUKVN27tx59+5d7g82jobDxNO9e3cOGqMf4SmwadOmFStW5J4CDa0F4KPRkfBhC2rt2rVZ67W02h8/fsy9ix+Wyzt37swqHkEQR44c6d69+6hRo5gE5v3ZYv564eNPP/1EfVHLlSv31Vdf4Vh7mA9HAhfnv97NwU3Xo+joaHBEwdUhhDZpL1zksfaaPn163bp1qWQIoeHDh2MyWuLUqVOdO3euq73GjBkDoxwuLhaLP/30U7jduXMnrSzcqlSqPtoLBz3ExZkzKeZgEHyEiFF79uzBxXFCgI9YFVaaKNXwkapTtVodExOzfv16b2/vli1b2tratm3b1sfHZ9WqVWfOnNm2bdu4cePgCMqPP/7Y09NzwYIFR44cefPmTZMmTby9vXnuIUAIBQcHU+s1NG3ewTQvL+/atWu7d+8+efIk1VuFPwbiL7+uuvhzAEqJRAJDP3/4CCNs5cqV8eAFiU2bNrHWrlQqN27c2LRp0woVKjRt2jQwMDA3N5dK+ezZMwg7CnxsbGz69+//6tUrvBOQdRkxPT0dUAItkivmrFQqpVKpRCKpXLlykyZNOF6Vf/75Z8iQITVr1qxatWrfvn0NtYvgYwWMsz7Onz8fGm7ovJiZmVmxYkUoW6dOHdjrhhAyV8TW/fv3I4S8vLywSk1PqFSqP//8s0+fPvynwLS0tP/9739169atWLFi+/btIRYbtyQmwkeCIGxsbGxtbVk9CC2t9ps3byKEOHbQh4aGwrm73EqgPTX0Z0srzn0rFou5X/5Xr15NnDjxs88+w28svLd9+vSBgzmo/JVK5fLly2FzatOmTSFuFNA3a9aMSskznZ2dvWjRos8++6x+/fpt2rTp3bs36+7mo0ePwtq6nfYaNGjQsmXL/vzzzwLtheuCIzFBHoSQVHsFBweHhoYyoxHlay847g4XQQjVq1dPJpMt1l6RkZHwpgGBLlT922+/YQ6VK1cePXr0Pu0VHR2NZWMmDIKPcG4z609MgI9M3VpXDvS0dclkDmlyc3Ojo6OXL18+fPjwhg0bVqpUqXPnzj/99NOmTZsuX768Zs2a77//Hpbeypcv37BhQ7FYfP78eWZcJ5osCCGjDQyGDqZ6MVB4eDjeUIUQcnR09PPzy83NNQIDGV0XTT98buGoT/4Ro/AIC8H/8Qh75MgR1pjAz58/b9q0KR71INGnTx84NYogCIVCIZFIaAQIoSpVqhw6dAggUd++fZltmT17NkKobt26rNa1hISETp060diuXLmSyWfevHnwzY2Jy5UrZ+h7xdP6CPNi7dq1bWxs8Lw4Y8YMhBBzXuQz58XExAQFBd25c4cgCFhyRQjpXcF/+fLlhAkTWrdu7eLi0q5du2+//ZY1ZMSiRYsQQl9//TVTacwcnjyZU+C6dev27dunawo8evRo1apVcddAYtGiRUwBqDkQP9jQTqRyAJRDHYLi4+Nv3LgBobyNUztBEElJSWvWrImIiIC6NBrN6NGj27dvTz3xKzIyEiE0YcIEqjwEQcjl8sjIyNOnTwMWcXBwmDhxoq+v75IlS/RujTf0Z0urWu+tWCx2cXHRS0YQhFqtfvbs2b59+0aPHg2nftSpU4fqZlBUVATDEe50R0dHcMNFCA0YMIBPLVSaxMTEVq1aYW61atWqU6dOixYtmAFDIOQwQuiy9qIyoaYxK4SQ3lexr/ZCCNnb2wcEBKzVXvBKM1cbgPOOHTuo1eE0LOshhGrXrp2WlobzuRMGwUfokV27djF5WhA+cn95MEURclg18KHCR1pjU1NTT548uWDBgkGDBn388cc1atT44osvYAuOs7NzmzZtKlasWLdu3fLly3ft2vXXX3/dsWMHdXzB3IyGj4YOpnox0NWrV+G7jTqyIIQ++eST+/fvG4SBTKnr0aNHWDk8E4bCRzzCwiDLXUtCQgJAw5o1a27cuPHatWvTpk2DKP1Xr16FsnASKUJo8+bN4METFxc3ffp0BwcHGxsbQDDMmUmhUIBbLWwSfPHiBfWkhOTkZIj5D8azOXPmtG7dGiFUrVo1DFuhdmz5GzJkyPnz5w8ePAiUvXv35m4a7Skf+KhrXvz555+Z8yL/OY8qCXzAULEI9SmkL1y4AKqDD4D69euLRKLBgwczjUDDhw9HCLm6ui5YsGDSpEnDhw8fNGjQ2LFjd+7cST2mgSAI/jwNmgJPnz4NPytXV9fDhw9HRkYCcvroo49YvxlwY+EcTlPgI0QCTk5OBp5Lly6F95Y1tCe32vfv39+mTRtwsQAXQHt7e1i7nDp1KowYcLYZ1BUREYEQmjZtGm4OQRBnz57Fm05ogwxCqFu3blRigiByc3MXL16MQYZBP1saKz63/OEjlVtKSsrYsWMRQvXr18envk2bNg0a+Eh7RUZGLl++/Pnz55BpqCvF8+fPGzRoAEc6Xbp0KT8/nyAI+PKsVq0azWUwPj6+du3aCKEm2is8PJwqLU6DsyPIIxKJCrUXfkpLAFmlSpWOHz8OAaQ1Gg0cp8w8XgSIWb9ywScBCBBCvXr1unfvHq0u1luD4CMcF8K6em5B+Fh6t22yarykMssIfKSp982bN6GhoTNnzvzqq69sbW0rVKhQqVIl2IITHh4+e/bs3r17g2Nyv379Zs2adejQoWfPnoGfr3EzhEGDKR8MBKcNicXiqKiowsJCtVp96dKlYcOGIYQqV64Mi4B6MRBBEKbXxWoCpCmceivARxiRBfgowEfq7wI+e169eqVUKkeNGoWnbYQQMyoeGJOop1RQWS1ZsgQh9Pfff9+4cQPbuW/evLlnzx7MtnLlyjju2759+xBCgYGBVCYvXryAo9RwEVtb2y+++GLw4MHu7u7r1q2jEhME8ffff0MIGMjHwAiwkS5gRGPC/9bR0ZE5vvEs7u/vj309c3JyoJk0A9jEiROh4QZtj1MqleBQ2Lt3b6xegiC++OIL4DZz5kyakImJiV5eXljJX3zxBZj2qWSwlj1z5kzozcbaizXMk1wuB1ZOTk7Dhw9ft27dF9oLMg8ePEhli3eurFixgpaPb1tpLyhuZ2fH55BDABU8w4hCnNeQkBBcI05YED7qPQwaCyEkODRQNuEjVSGNGjX66quvnJ2dp06d2q1bN0dHxyZNmnz99dcLFy48cuTI3r17p0yZAvmwJDp+/PhTp05ROfBJGzSYduvWDSHUuHHj58+fA/OMjAz4mcEOtcTERLBMMEPgPn78+MiRIwRBwBYHmmcMfHlTP73MUhcfDWAaQ+EjQRB8RliCIE6cOAHDXLNmzcaNG7d169Y1a9aAi4KDgwNYXwoLC0F1ly5dwiLREj/++CNCiDqdnD59GiFUsWJF7DD+yy+/YJpXr16BnWb79u1UVhEREVQmBEF07NgRIvYNGDBg8eLFwcHB48aNA3kmTZpELas3DdZHVtMUlOU/Lxox52HxwHig65CYly9fgsfqwoULcZH8/HwIso0QonmR4nnU2dl53rx5kZGRT5482b59OxgvGzVqpFKpDOVJEMT169fxYqKdnd2ECRNYI6ABqgAnP39//x07dkilUgBqLVq0wPKzJky3PjZv3hwh9ODBg6+//hohVKlSpblz5wKmZIbU4VY7wMfZs2dTt8bv2LED1se7d+8OKAQfLL59+3aEEBNDvHz58t69e5mZmWCeFIlErG2HzFevXiGEatWqhWl4/mwxvUEJhJDR8FGj0YAf/LNnz8LDw5l73m/dumVnZyfSXgghVs88VmlPnjyJEGrQoAHVnePhw4fY77ZixYqJiYnMsj21FwxfNjY2YAdlkt29e3fkyJFAhhBq3749bZPflClTmmsvqm830LNusoFHixcvxnUFaa/s7GzIAUvnunXrYEULdl77+/tzRMcDUMHTtR2M7qyr5xaEj6ViAyzuEqtNgE+01YpXDII1bNhw0KBBrVu3xnXdv39/x44dP/3002effYYQatOmzahRo1auXHn27FmE0MCBAw2d6YEzz8GUDwY6c+YMQsjBwYG2MIqbQBAEHwxkrrqo9epNGwEfgWdERETPnj3xCPvNN9/Qls7hu79bt244RDAmxgfHv337FjJv3LihS9S//voLIYQXrV6+fAlj3JYtW3ARWIOG80XBqOPo6AhuapiGloCJqnLlyh06dAAZ8N9mzZpR5xtaQdZbiPvIAR855kWEEAAymBeNnvMIggB0SN368+DBg61bt4LMAQEBsJpP1cwff/yBG/7pp59SHwF8rFKlCp69gE9YWBgUiYmJMZQncCgsLMRTIHwJ0KZAmUwG6AqW+bCE4BR77do11l7AmabDR0CKMObUrFkTdlpA19jZ2VF9IvWqHeAjfJZUr14dluMBMnp5eSmVSgj4d+LECZB/3bp1rPARtw6miXLlyrHu7MFkoATaCbp6f7a4uEEJU+AjQRA//PADQuivv/7atWsX1WhKEMSzZ88glvAe7YUQ4ghpRJMZhgVfX1+cr1AoYFyqV68efGQyfUwx8cOHDyEimK32Gj9+POvaznTthW3Dr7UXMKlTp84Z7ZWRkbFgwYL27dv3017bt2+n/tBwjfCe//bbb7Qc1m1/8DZCkcqVK69fvx6XoiYMgo+gatqHN3CzIHzkGDepLRHS3Br4YHZeczeT42mDBg369+/ftm1bXTTXr1/fsGHD6NGjwYDRvHnz8ePHYxcfXaV05esdTPlgIMArlSpV0lULQRB8MJC56uIQg/kIIeTk5MR/6wyNAx5hEUK2trZ4hH3y5AnAgszMzGfPnk2cOLF58+aNGjUaMWJEZGQkZhIXFwfD38WLF3EmLZGdnQ223s2bN798+RLsfEOGDKGSbdmyBdybCIIAoGZvb88dx2fEiBEIoVmzZqlUqp07d/bs2dPZ2blLly7z5s2joSVqRbrSek+d4ZgXx44dC68QzIumzHmNGzdGCB07dgzL6eHhgRCCg6AA7lNX2e7evQublAFqIISoEYOnT58OhjeaQo4ePQq9FhUVZShPLBgkTp48ib0hqVMgdGiXLl0IgoiOjh46dKiLi0ubNm1+/fVXcFyh8aHdmg4f4RMFdjxg07hSqQR1nTlzhlojt9oBPoLGdu/eXaNGDUi3bdsW4AhYsLZt2wY8AT76+/tTq6CmDx48CBxoH2xUGoIghgwZghDC23SoT3X9bKk0BqVBHtYiCxcu/O677/bs2cO6PYsgiAMHDgCYvnHjBoyTjRs3vnHjBuBFsDe3b98+T3uJxWIbGxtsqWWtEWeCJuvXr//PP/+kp6cfOHAADMASieTZs2c4YBYtxDrtbb99+za0DiHUt29fDPtonxAymWzSpEnlypWD0DwpKSkKhQIhxGd9GQsMFeH4rxqNBnJg7zlBECrthekPay+wlOuyLxoEH+vVq4cQwq8irohcWKfemDHt6+tLXYAzI+eyxsroWfyDUVSDBg369OnTvn17Pi1CCK1Zs2blypXGeUDiKnQNpjwx0ObNm2GawSML5owTejGQGevClfJJgNnA0BePOcL26dMHRjoYYcFAwtxNTBPp/v37UOqvv/6iPaLe4oEeiBs1akTzeYflPLFYDJsGYI53cHDYuHGjrj0WAENZj+eiVs0zrRc+UufFwsLCPXv24HmxoKAgLy8Pz4vGzXkgZ/fu3RFC2A6Rmpr60UcflStXDoypQ4cORQj17t07NTX1zZs3y5YtA0V99dVX2dnZ4L/70UcfYTMYRJBBCPXr1w88I/Pz8w8ePAhzjJOTU3Z2tqE8CYLIy8ujOqIRBHH48GE8BcJ2VF9fX4TQxIkTeeqfRga+IqYMCzi+DHUlkSCIb7/9Fr46qDVyqx3Dxy+//JIgCICPH3300ePHj4HJmjVrEEJTpkyBW7AHc1hklErlggULtmzZwrHcgTeIULf36v3ZUhtlUBp+mKxFYC8afEx26dJl1KhRUql0x44da9as+d///oetywMHDiQIIiUlBcy0wBD+uru74987/DpmzJjBWhctMzs7G7bCULm1bt0aW2TB6QUhNGrUKNgmFR4eXqFCBaX2wtxOaC/w8fjzzz/l2qtChQqenp54xw8Q4+/hH3/8UaVS2drawuozZsWdADlr1Khx+fLl69evjxkzpqH2wmbmWtqLFpdRpVL9/vvvCKEX2otZBbBl5jNzwOiO1yuoBJaCj+7ai1qTkDZOAzCaG1f2wyglkUh69erF8/Q2o3deg670DqY8MRCMaAgh5uYDaqdwYyDz1kWtlzsNYSAAS3FT4qcwwvr7++NBDR6dOHECj7AQfAQhxLplHrPCX/bz58/HmcyEUqnEC+X169fH8y6mBD44XOj58+cBnCGEKlSo4OHhMXv27OPHj1Ot1DDlm8tpWy98pM6LeIJknReNmPOwHgDMde7c+Z9//jl58mSXLl0QQj/88AMQXL9+nbl797vvvgOEnZOTA86g9vb2S5cuBcMYdkBECJUrVw5LLhaLb9++DY6MhvKcMmVKrVq1dE2B9vb2L168mDt3LrjuFRYW4tbxT8BAajR8hDOvEULt2rWjfRPCEYW0kN3cal+6dCm8h2A3hWUTqnvZy5cvEUI9evSABoL5vGXLlvzby0oJW3Bw7/P52bLy4ZPJAVC2bNkCoISK4WjpL7/8Mi8vDypasmQJGCOraK9FixZRl4zVanWfPn34f1dcuXKlUaNGUF358uV/+eUXatAAjUYzbtw4ePrzzz8TBAHrAE21V1BQ0IkTJ86dO7dUe8EXxc8//wzL0/BbqFq1KhxRc/bs2cjISLCaI4Sg+3744YePtBf3SgjWsIP2oirnrPbCBPjRl19+uWPHjnPa68iRIxC94S/thYlxAiHE08AHdvQ//vgDl8UJC8JH6zzxDLe8VCRiY2Ph5SgV0lpISBcXlx49ejDjULBWZwp85DOY8sRAq1atgo67cOECq5yQyY2BzFsXhxi0R3g80rX2QaPHIyxCqGnTpniEPX369NKlS/EIW1BQAKFzWrRoweHWnZOTAyH6WI/Joladnp7+9ddfDx06lDXEnUqlcnFxob42jx8/Hjp0KIY7uJlNmjSBuBg7duyATOyISa3O0LRe+EgQBJ4XwYGPY140dM7D0h44cAC3FBL16tWjbg7Yvn073ihTs2bNoKAgKjxSKBTg7YcQwttCg4KC8EouwKCff/4ZVsOhXkN54gkbpsBTp06dO3cOT4HgAxcXFwcus99++y23jQ23nZowET4WFBR89tlnDg4Oly9fprKFdO/evalbUmD5lUPtMTExjo6OeCvM48ePmbv9xo4di5dcMjIywEKpawsUUyTWHPimwmwBGHH/bFn56M3kM3NlZWVdvXp127ZtAQEBEyZMGD58+MCBAydMmLBixQrm12BCQsKJEycytRdr7TTrNSsNzlQqlXe1F0Ttwfk4cfny5bCwMHjN1Go1jqZE61MIdIW3l+3cuZP6u6ARgx92cnIy5MPWqxcvXsCu7adPn27dunXo0KGfay8sSaD2giIikYgZ2QdcJ2l14dtE7YW54QR/+AgbUosVPgoee7ifTEnAek0Zj6AJIAB/iHPr0xT4yGcw5YmBYmJibG1t7e3t9Z72wYGBzF4Xt+rwUzz08Pw8hcC/U6dOpW2IwXzs7OxghD1z5gzscKxfv35wcDDsrs3Nzb1169bSpUt79OhRu3bt6dOn379/PzAw0KD5AAtPTbx8+RJvjcf5L168+OOPP8aMGQNHH4GQI0aMgABssGRvY2MzcuTIO3fu5Ofnq1QqmUx26NChcePGNW3atEaNGtwWZVwRH/gIgZlOnDhx/fp16qFEmAn4NsGtUql8+vTp3bt3+cx5mINGo8FmWolEIpVK8aofpsnNzb1///6TJ09YYZlKpYqIiKDBpry8vFu3bp09e/bx48es5kCDeKampvbr1w+/MLSEk5MT4F0wQCKEOnfufObMmYyMDI1Go1Aozp075+/v/+mnn1avXp3VsY8gCBPhI0EQRUVFrB8qsJkDuweAVvWqnYrRcUdwJG7cuLFu3Tpm33EUYT7KycmxsbGpWrUqPAJgpPdny+SjN8cg7zq93KyBwE97ff75505OTuXLl2+pvcaMGUOLNJ6Tk7N8+XKJ9ipXrly1atUaN24cpr1wK1y1F+0lx7e+2gsTQ+Ly5cunT59m/aEBwfXr10eMGOHm5lZBezk7O7dv357DWZY/fGzZsiWE4KWJZEHfx6CgIFMmcqagZTNHIpG4uLiYazWtlOpQIpF06tQJnIT0NsGUt47nYMoTA0VERFBXo/RKzkpQnHVhAfBAJsBHU+DjggULEEKw/oV1y0yAWUWAj9YPH5l9x51TVFR09OjRmzdvGooUudma+BQOZabC0NevX/v5+WFgVKtWrZYtWzKBkUH1fnjw0aDmcxODuXH79u2urq54MUQsFvft2zcoKIi7rLme8oePbdq0KW74CG+PELvHlM6OiooSiUSurq5lXI0NGjT49NNP+/Xrx0eZpsBH4M9nMD1z5kz16tUxzMJDAOQ4ODhQN6vyEZuDpjjrAjFwu/jDRw75mY/kcvm8efNgKwPUVadOne+//z4kJAQ7sDNLFWfOqVOn+vbtiw+cdHR07NSp09y5cy9cuMDfJgqf0MU2HxSnfkq2rocPH44bNw4fsG5nZ9esWbNffvklPDyc5rtMlROsj1QvN+rTspPu0aOHXv9j07UhwEeeOlQqlRnaiye9uchEIhHP4R2if2zatIlZtaV8H+Pj4xFCPMOaM8UScgiCcHNzg/UvqlNRGdRMw4YNW7RoMXjwYD5tNx0+8qkFTpstNgxUzHjL0vARazg/Pz8hIUHXUiwmK6mERqORy+Ws8av5iCTARz5aMoUmMzPzzZs3PAE9wEdTqitdZePi4r755ptly5bRxPbx8UEImf2MGVotAnykKcTabvnDRwiCW6zwkSAIiLPFGtzS2lRphfIEBweLRCJvb2+enwhW2ARzidSwYcNGjRp9++23fBgWG3zEwhQnBiqeujB85AgUgpsvJHRp4MiRIwghwfqoSz/FnF/W4CM4A1SuXJl2rhVE7mSehmXe7gD4WL16dfOyFbiZSwP8Y+NABHvWF8ZS1keCIODjW9h/bUR/x8fHi8ViqVQqFoupEX2NYPUBFGnUqJGzszNPKFP88PED0DCtCfjIkzLuNUFTi6G3sH1w3rx5hhYU6C2hgbIGH8H1FiFUvXp1ahCDKVOmIIRmz55tCSVjngAfnZyccI6QsCoN8IePEM6suOEjrF8jhKgHBFmVBq1TGIVCAcvWbm5ugumRIIjGjRtXr16dGbCAtfsE+MiqFoMyIWy4YDkzSGlMYoCPAgRnaqZEcsoafCQIYsWKFfjcvE6dOm3YsOHIkSMQsjswMNCivQDwsYzHDLGohk1k7u7uznNLLkRxZ41lZkHrI0EQEHdGmNF59nS89nJzc3N1dfX29nZxcREcvQmCaNKkSaVKlX755Rc+ahReNj5a4qbB8NHoGMvc/MvIUwE+WlVHi8ViR0dHqxKpGIR5+vTp4MGDaXv7EEL4yDsLyQDw8bvvvrMQf4GtiRrgDx/79++PECoB+EgQBJxdIRaLuY+aMFEXH0Zxsfby9PT08vISiUSCxqBbIWzptGnT+PSyAB/5aImbxtXV1fQDgrmrKAtPBfhoVb3s7OxcZtdSX7x4MWfOnF69elWtWtXJycnPz8/SsYQAPgqrZ1b1E6AKI5VKefYOnJNe3FtnQNb4+HhAkAghYRsNtf+o6fj4eA8PD2/tBdZHATti/cBRJTyPNHV3dxc2K2DVGZdwd3cH+GhccaEUaEAqldrb2wuL11byPtSrVw8OQLcSeT5sMYKDg/lHFvywVWGdrfP19eX5cxg+fDhCiBYVHxpl2cVrrDj4EEcIeXl5lfEwNFgnkAgLC/Py8kIIYZDt6ekprFlTtQTWR57OOu7u7sKETdWeEWlPT0+DDrw2ooqyUEQqlTo4OAhvo5X0tbP2shJhPngxYMYXNs5abUfD8Vp8xBs1ahRCaN26dUziYoKPBEHEx8f7+vqCVcPDwwOO8SlOKKlQKKINv+DESdrfkJAQbk4ctkNwcAwLC/Px8QFvbhwnJUp7MTupjOc0a9YMIfT777/z0YOnp6cwYfNRFAeNVCp1cXER3N45VMTnka+vr7OzM88VIj4MBRpTNCAWi11cXEzhIJTlrwFAJwih4pzi+YsnUPKHj2PHji15+Ig7LDQ0FKJhY9gkFos9tJeXl1dgYKCfnx/c8v+LWVlnAjcEDI1UISF6p1QqFX5m+A2hJZo3b44QWrWklK8TAAAgAElEQVRqFS2f9Za/SwdrcSGTIAiwHAi4x8SXAZaHBDWaqEZzFQfPcnNxE/hwawBbRgSPNW5FldRTiM7Gp/ZJkyYhhNauXcskLj7rI61usLRJtRcEx4atQFKpFN9CaKJS99fX1xfaxfE3KCgoKiqKw0hJU1dZvm3RooWunV9MtUCwTGa+kMNfA9jVhH8RgZKmAYVCARvYBfhI00xJ3VapUgWhEpvvSqrVJVIvjtmHEOIZr7dE5CyzlRq0scnPz8/q4GOZ7Tmh4YZqoFWrVgihrVu38ikI0EfA5Xx0pYtGgI+6NMM/PzQ0FCHUtm1bwf2Lv9IsR4kBjRCLynJKxpxh34y9vT0sMwqjMdaMlSSgX3h6ecExRdZlfbQSPQpiWL8GIM7trl27+IgK0EdYMeGjK100cF6UYKrRpR8++Z6enmB6QQgJO+H4aMyiNPiVFkYGi+oZmAM6adSokUQi8fb29vDwKIZKhSp4agA+pUQiEc9xac6cOQihNWvWMPkLxnymToQc69JAmzZtEEIHDhzgIxbAR2HA4qMrXTT79+8H91zBVKNLRdz52Na1e/duIRApt66K56mHh0e9evVEIpGwlloMCgfHx8WLFyOEQkNDRSKRgNqLQe08q4ANGPx/CHD6pQAfeapXILMuDbi5uSGEwsLC+IgVHBwMg5ewFYmPulhpwFRjZ2fHf4hh5VNmM0GBrq6u4GPEc5GozKrL0g2HXoCoumKxmKfRxdJSfaj8Qduw5xqOwIC1bOFb1Bp6HMwrBh1ot3TpUsH6aA19J8hgjAbatm2LEDpx4gSfwrGxsRBEUwgezkddrDSw8AoGSGGuZVURR6ZCoYAPGADfIpFIIpFw0AuPLK0BDw8PQDNgFRYsYRZVOKxcw3nK8fHxIpEoKCgIohAImreo5vUyBxxv6IF28DEsWB/1qlcgsEYNtGvXDiEUGRnJUzjwORPMDDzVxSTDQTcQQr6+vkwCIYdDAxA1UyKRwGTp6+srHLjFoS5LPwL9Yzs64Bjho8hCaodvJ6pxC4yRq1evBuzi5+cnKN9CyudmGxgYCBYBQ0H8xo0bBesjt26Fp9argfbt2yOErl69ylNEOHjG1dVVWDTkqTEqGWwZBuAIw43gBkDVD3ca7FuwQgTTJJjDJRKJMGtyq84ST7G5BStfoVC4urq6ubnhHEvUWzZ5RkVFubm5ubi40LZag/ujl5dXaGioi4uLWCwOCQkpmyoqkVbHx8eDv6NxTqjbtm0T4GOJdJxQqRk00LFjR4TQ3bt3efIC90f46qUNZDw5lGUyWHvy9vZWKBRwRpSXl1dZVgj/tisUCjc3N/Cxw+YugiDggAdBjfw1aRZKwI4IIdogEBsbKxKJBBBjFiUDk5CQEPAQ0LVRLD4+Hn4FPj4+np6e4NHh5+dnoU9T5plwYWFhtKPjaLf4aA+LJnx8fGj14tuwsDCq2Gb5vImPj/fx8QErgKFr1vj1gP1/wuI1VoiQKE0a+PzzzxFCz5494y+0i4tLcHCwt7e3YGbgrzSCILDfHgzrMNEihAQ7Lh81enh4uLq6grmRClnAAwwh5OPjw4ePQGO6BvCsybpUFxsbC6e6i8ViHx+fsLAws8zWpotdijjEx8eHhIR4eXmJxWI4O01vkPDY2Fhvb2+RSASABv66ubn5+fmFhYXhMYeKoqKjo1evXo0xVmBgoJeXFxXhSSQSKjfWtKurK8fhIxyne3A8gnNPoqKiQkNDOchYH3l6erLKQ9MMboubmxtuMlUVGHFiFB4fHx8dHR0WFubn50fVjFQqNfoNP3z4sGB9LEU/TEHU/2iga9euCCGZTPafXM4bqVQKy4XCQhWnnugPmVEzMYIMDQ2lUwv3/9WALvhIEASOO+jh4YHH+v+WFu7Mo4HQ0FCYOLmX6hQKBRjaqZM0GIdgVsbSxMbGUgENDc3AdE7DNHiyxwlcixkT+LBfXAtHggo7mGkMRKgthTTWA0EQAOZ8fHwgGoaLiwscsQZgnaeftEKhiIqKkkqlnp6esL5hRp1IJBJm60owh6NHuB9RwZ/R+nF1dQ0KCjJxwDl58qQAH6m/AiFdmjTQvXt3hFBWVhZ/ocHDycfHB7s6mfgT4l916aWMiooSi8XMOSAqKgo+i1kNOaW3veaSPDY2ViKRuLq6wlIRdd8AtQqA5gghsHgJLyRVOWZJU5dQwQysl218fLyvr6/ZQYzR8z2tIKuNykKZukxfNJHgViKRgEkMttl5enqa+D4DpsQmPdaEEXY+qvHP19fXQqqjsvX29qZWamg6NDSUte38M6VSKRCb2CP4t3PhwgXh0EKsDSFRyjQAXjVqtdogucFsFhwcrFAoPD09xWKxYD/jUCDsy9N1QLNCocCuS0YvgnDUXqof8YSPBEGAN55YLIaVUzc3t8DAwOjo6FLd/BIXPjo62s/PD4cLEIlERizVxcfHUxcig4OD+U/YHJQfxo8FN5AJ4EJDQz+MNpb4a2y1Aty8eVOAj1bbO4JgejTQs2dPR0dHPURsj2ETMdjMpFKpSCTy8PAQotfSVBUSEgILJbrMZpgedCgWiwMDA8v4nBEbG+vj4yMWi2GbPyzeeXp66lUL3kMgkUgw4kEIwUqW2VfZ/Pz8uNfI+DyFlUpWK5TRmRKJhE/VQKNrwwHergFiuLu7w+cifmOFhKABQQMmauDRo0cIoXXr1jH5CIcWMnUi5FiXBr788stq1aoZJ1NwcLBIJIJVbOzt5OHhIUSOiI2NDQwMxB42PPflKRQKDCK9vLxCQkL0AibjOs46S8XGxq5evRrDKYn2gh0DBn2WxMbGSqVSsEHSEBi3mz91mczEtKHLaiVI7+3trauxIJVgA7PO34sg1QeggZcvXyKE1q9fz2yLAB+ZOhFyrEsDffr0qVevntEyxcbGQrAxsJmBtxNE7tC76ZLmSM7qNW92ixEw5HBmN9qpJTY2NiwszMfHB5sbPTw8wIRmKM/Q0FDqJkoPDw8vLy+DVMHRQJrai/M2JCSEtRWww5QK9VxdXX19fc1i7oqNjTUIfRr9WxAKChoQNCBowCANyOVyAT4apDGB2Io00L9//2bNmpkoUHBwMDjIe3h4BAYGrl69mhraANAPrJRRlxRpcEGXCcTd3d3T05OneYbDlMLkb6g/O3NB0MfHx8vLCxvMoEXYbObi4mLi6Y4AfYKCgqD5zCbgHKoyS0saCw+twy5xJr6NQnFBA4IGBA2UCg3k5OQghDZs2MCUVrA+MnUi5FiXBjw9Pdu1a2cWmWDREDABIDOIWOapvSCfuaRI9dPCpima8Ywa588somImtLgh0dHRIAP43unCYS4uLtAcT09PDFgRQjhfKpVaTmYsPM8EYFDsoc9MMH32eYJ1bjJmRdajE56qE8gEDQgaEDRgUQ0ghDZu3MisQoCPTJ0IOdalgaFDh3bv3r1EZMLwAlvXMBRjokxdSA5itTDtgjgHOyBycMCPsG8cNUIElrNMeSKWyCshVCpoQNCAoIEypQEHB4dNmzYxmyzAR6ZOhBzr0sDw4cP79u1rXTLplgYjOWaCaULjjvIlYEHdahaeCBoQNCBoQNBAcWigatWqf/zxB7MmAT4ydSLkWJcGRowYMWzYMOuSSZBG0ICgAUEDggYEDZQBDTg7O2/ZsoXZUAE+MnUi5FiXBry9vYXDgq2rSwRpBA0IGhA0IGigbGigadOm27dvZ7ZVgI9MnQg51qWB8ePHC/DRurqkGKVR56ZpVIXFWGGpr0qdnVTq2yA0QNDAh6KBD+D32Lx5cwE+fijvYxlrx9SpUzt37lzGGi00950GUjd2SVnfQVAHTw0UPD2TGGBTEHeMJ71AJmhA0IDlNKApypXNLJ91fLrlqigGzhUqVBAWr4tBz0IV5tfA3LlznZyczM9X4FgaNCBf1Uo2u2JpkJSXjJrCHJXiFaHR6KLWS6CrIOTn3z+U6I9yzi/jJhOeChoQNFAMGlDnpib6o7Qd/YqhLgtVkZGRgRDaunUrk7+weM3UiZBjXRpYtmwZQigvL8+6xBKkMV0DapVeHvKVzRP9EaFW6qW0foLCl5dlc6sk+qPkxfXy7x1kCqyXgFmElpN/90CiP8o6NYuWL9wKGhA0UPwaUGcnJ/qj1I1dir9qc9V47949AT6aS5kCn+LWwMaNGxFCd+7cKe6KhfosqQFV2vOkedWzzy3krkS+ommiP9Io87nJSsXTlNVtEv0R/pd5bBrNDKmXQG8z8+7sI+HjcX+9lCVOoEqPJ3R/P2gKMgufR+de35odvTTr5My8O3s5iEu8LYIAggZYNaDOkiX6o5T1HVmflorMY8eOCfCxVPSUICSLBnbt2oUQOnToEMszIavUaiD3xvZEf5RxaCx3C+TLGicG2HLTWPapRpN//29yxdm0S5XxmgSOATY5l9bkXtuUNL/mu+b/u5Ctl4BP/Xm3dyf6o+yz8/kQlyCNMum+bGb5zCNTqDJoCrMLnp7JPhOY+odH4sxyGGdDIuPv8VRiIc1HA6q05/kPQvlQCjRMDRS+vFSUcI2Zzz9HlfmGtD5u6cm/iLVRbtq0CSG0bds2pmDC4jVTJ0KOdWkgNDQUIbRkyRLrEkuQxjQN5FxYSdrJTs/hZpO8xEU2tzI3jUWfKpMfab2XTA1cX/D0bKI/Sv9zCEirSo+Xr2xBIsi/x4ENUi8Bn2bm3QwmfR8vrGQlTt/pmXd7N+ujYs7Mjl6KrTLK5IdZp2anbuycOMMeQ0bZLMfUDZ8r9n+fGTE5I2xSyrrPFAd9dAqpUWvyMzQFmTRrrk76Ynig0RS9uVn4LLIo8U7mET91bmox1MmsIn3PN4n+qCghhvnow8spiDuWtr23pshsbk5JC2olBYpNifygSo8nf/UhA0uvtmfOnCnAx9LbfWVd8jNnziCExo0bV9YVYWz7cy6vy41hCfpqLD9CO9/PUqY+5c9BU5CZdXpO4bNIXCTr9JxEf5R7ZQPOYU0kL6qTtLA266PiyVTK7pHeiovqmFhd3u0/SbsgZbFenadIWdc+0R9lhv9KEIReAj4C5MZsIbV6bTMQ07o+aX5N+crmfPiYkYbV8SAzwpdseMRkleKVbJYDRo3y5Z9kRvgWPD7BAgLem2kTCv45mh31e/rOQbK5lRMDbHDxxJnlkhfXS17aMHlZI8Xeb9V56dCQ7KjfSRSVeNeM7eJgVZR4N2WN23up/FHOpdUc9JZ7lP7nEPJ9MOvP33LSmsg598qGRH+Uf/eAiXxw8aR51RL9kTLlCc4xNKFMeZLojxR7vzW0oPXQjxw5EiEkBO6xnh4RJDFAA1evXkUI9ejRw4AyAum/GihKiIFpzIy7cdN29CUR1RIXdY7833r0/A/WJtnM8oXxF4E0M/xXcqy//zd3yaT5NZKXNeKmsejTorexif5INqcSoVGTFamVmsJsVkjELUbO+eVauLyeSqbOTZWvaJbojwqentVLQC2oK517ZX2iP8q7/SdBEMyuJ/chzSxXnPuQ1LmpSfNrpO8cRBNYsfdbstWPT6oy3yYFViUtkavbFL26SiPDt6r0lznnl6Vt7yOTiqiwjJqWzamU/Hv95KUNSPhI/muQe/3ddtGU9R1kM8trCnMwQ8sl8u7sA0Asm/MR6Xqh9XaVL29SnGrHrUvf6Ul+tEQvJXM0Go0yX1OQ9e5NxkQfSgL2jWWfCTRXg+Ble2e71ag1RbmGvkLKpAdaH5UfzSVS8fPp3r27AB+LX+1CjebRQEpKCkJIJBKpVPo36uqvUq3SKAv0k30oFBplftqOfuQcFmBb+DzKLM3KfxAK3+WpW/hiemXKY9gEkzSvOtiEAEAUvrzELZJsbpWU1a7cNJZ7qs5LB6Ngoj+Sr2yRtLA2xitZZ6QG1ZsduZgEdjdDaKXAWzHn/HK9BLSCrLc5F1eRoFzr7sbs+tQ/3BP9kSr1GWtZS2QWxB0HjdEqhYV7dW4aQRCZR/y0C+4rdAmQdXIG1cQom10hdVPXjEM/pu8eBi920ZubhKqIpbh2a44mPyNxhl3Khk4sBObOKnweLZtZnkQMYT/DOJN7fRtoIPc6i/eYueun8FMVqdKep2zolOiPkgLF8pUtsJU3aX5NdXYyhfQDSRY+jyJNfftHmt4eTVEu6Z47y5H8TtZ+kyQG2EI/pv7hzp9/0dvbWiu7L/8iVkWp0WhEIhFC6NgxllCygu+jVXWWIAy7Bho1aoQQunDhAvtjQ3KzTgQk+qPCl5cNKVTqaYsS7+Re26RMeqC/JRp1/sNwvTtFNAVZ+Q9CdS2KaZQF6iwZvS61irSxXVxF2j8IInVLD+3C0GM62X/vZTPLp260eNB4TUEmQBmovPDF+ZQ1bhBkB+aM938DbOTLGqfvHlb4PPq/kuq5yzm/jGl9JK2ZuamKA6PAusZNoKcC7ePsyEWkVe/JaUxM7XpyS4o/wgZgTGO5RP6Dw6C6gn+O4lrUuWmJATbYJyHz2DTuWJVpW78gmcywz4yYXPD0DP78U6W9ILHRAj1BYYteXydRxb4RWABagtb7tKcG3KqVycsavdsRRSkmX9WKFGDPcEqexZKqooxDY5OXuCTOsHv/0v673182t3Lqpq5ZJwKMMJ9bTGKzMS58Hk26KW/9wmiOqsw3aVt7JS1wYqqOfNMW1k7b3kfXoMdaaeHLy6SH98mZrE+tPzMmJgZpr9evXzOlFeAjUydCjtVp4IcffkAIzZxphh9hxqGxfNZMi1MF+Q8Op237Mmle9aTAqqkbu+Te2FHcOwAo8VMA5aRu7saqAcVB7+TFdalI6z2ZRlP44kJmhC9pZdROXSlr3N4/ZaSo9ifGw3cZGmUBOR9s762LwJR8TVFe/v2/FftGJC+uB7NF5hE/YJi6qStz/sg6PbfweTRgX4PqVWfJci4GKfYMp/k+YiZ6CTCl3gR8HelaBX4HHynAV1OUlxuzRbH/ezIyjgWu7LPzQJM5l9di9gWPjlDxHMBHDmuuMvVpdtTvzE8adVYiaRVe1hhzZk3AFJ5zfjn1KUfvU8kMSufdDCFX4Td0osUYyjo+ncxf157GTZn0IP3PIeTmsNkV5ataZp2R4rVR0i2ET6xTjZq2KQc2YNHe3pS17fJu7SINwP/6j9IkKV23moKsjENjyQMFZjkmL3HJ+HscGQSKIAA+pv7hQW1O0dvYzKNTFQe9NfkZ1HzWdNap2TTVAe7PfxjOdfYgoxcw84LHJ8lffdTvOMeIhCrteeYRv7Tg/ooDPxSz4WPx4sUIoerVq7OKLcBHVrUImdalAQj96OpqhkXMtOD+pI3n2qZiGElhv4h8WWPZLIekhR+nbe2VG/MH7bs//1EEdcMpDF6pW3qosxLf94FGk3dnnzyotWxm+eTFdTMjJuM9Ae9peKeU8n/ybu2CGU6V/pL0vQuwxZNrRuhPpAwz7LGNBzMmF2ICbBJn2NNdHlVFWadmJ/9enzbycvssgl8RsxZcHWmZy5FrdysPpWZCWpXxOuOvMUnza5BLmRs7F8QdZ9LoylFlvsn4awzTuJhx6J2LUt7t3cmL6qT/OSTvZnD+wzBoF63jMHOl/J+cS6tVac9xDi0B+zaAiXxl8+wzgfl3Dyhl93Db9RLQGHLcZoRNIm26SfdZaajwsehtbEboT+CEwApuihKupW3tJZtTKSmwavquwcrkR6w8uTNhuZxcv6PE6AG8mHczGMrCbUbYJLhVZb7JfxCadXJG2rYv5SuaJi38WNeZb7ApPmV1G24ZNIU5yUtcihLfBY7V2/vc3Dieypd/Qhp3n52j0RQl3pWvapV1IoCaT8Y9Xfgx/SeztEHhqysFT06BMyiVniCI7LPzkhZ+nHnsN8jPu/0neFPIl3+Sc2EFfNio8xSpm7unrGmbdWpWQdyx9F2D9cYBLXh6Nm1Hv6TAqiSKXdEsM/zXorextKqL57bg6dnss/OzTs7IuRhU+IJ9rUmjzMcvFdaebM5Hude3UuGjpjAnN2ZL6sYu72gCbAoeHaG2gnUAKUq8m7ysUeqWHjkXVxU8PUsacUkP3RPUgrQ0ay9gmvx7B0nL+uV1OOddQlWUF7sn69SsrNNzc6+s59idkxe75z8j1Qz7vDv76NwIQlOUmx25iPwSnllOvqJZzsUgs3i49uzZs0qVKro2HgjwkdkRQo7VaSA2NhZM6HI5370a1DYoU59mhv+atqMfaVX614WF3A8xu0JayACD4jJgDKFKe559dn7+owioSJWRIF/VUnHQG/9o8+7s+8/08O/+0OSlDQtfnH8nnlqZvMiZnCrWtM29vrXg8Ync69tgjk9a+LEq/SXp716Qmbq5Gx4oIUGu58JODmo7dacL4o7hrayK/d/D+qamKA9MgCTPGfaAOYpe3wA/M+Y21fRdXuTC3F+jCYJQKV4Vvb4OFWILEwn1dg/Lu7VTlfZcnaegSagpysVnMUM8C9IPL+N10dvbBU/P5D84XPjiPM22p0p9Rn79MyK2kEOq1i3pvVoCbDFz3Wp49wTWzWFDTEbYpIJHR1SZbzSF2boKktt7/RFNNkwMpkrm5kpNYY58Vcu8u/uLEmKoTpPvZZ5hJ1/eJOOv0Xmxu7kJMPTBlepKKPaPJLWqfXOAhtr18GopDnqnrPvsnRgBNhmHJ5Bd+V9bV2bE5Pdyapc+k+bXVGUk6KqXNZ+0Dv77c0vf5fWORqOBWRlzA/hIVjez3H9mSn8km+WYsr6DruVC8l0l99wY9lVpaO+zNo2Z+X4lnZ+FD0LqJM2vkXN+eUHcsfx7B8m+m2Enm1keHtF8+DTKfNnsCnhxNiPsZ1oHyYNaqzLf0ASD8FiZR6fS8uFWnSVT7P3uPZ9/x6jEANuMwxMNGhjp/DVq7I1a+OJC1skZyuSHQEPCskXONESlKcx+56KN19lnlmf1D8m9upEUOMAm6/j0/IdhBY+OZB6blhQoJgcK7cimtUeOh98s6bm4rFHerZ20L16eA0h6yEByqerfQZ7eRoLQ2wvg+UrzeFamPJEvb/Je7VoLOv45UGt511hy3fxjxUHvd+7jC5xo5m1l0v3kRXWoDPV+M1Br4UgjhBo1auTn925ZhkYpwEeaQoRba9SAWq2uUKGCruhTeiXOvbaZ9tN6fxtgq0zR436H+RclXJPNcgDYBFZM2SxHTVGeOicFfJ5gMylBENQa03b0VaY+1RTmFD47l77768QAW9ksx4KnZwiCgBOKZTPL02QoeHI664xUlZGgKcwG5/fkRXXy7/+tzlPk3z8km/ORQbHclPI4bYTFudCQzPBftJtzd6fvHAQOPbI5lbQOOjOAAGBiXuwe3PB323gDbGRSETjdK/Z+K5tbGdaDINYgicbmVia/jHXgWtAJxO4penPzfRf8O2GQHGY5KA6MwkCtKPGuNq7NL1RJyP2V2sXxjL9Gq1KfKVOfklolD5blG5pRcdAbapevaqlrnZdaI0B82uYPTJA0rzq5PnV2Hs6BBBwAk/6n1nSqVoKJUTbLMW1rr9QtPQFCvVPCDHtVloybQJ2TQuPPegvWJrygSet6gI9Y86lbepCbThgXvCGymeVzzi9T56QUvroC3nvvNvAy6HVl5FxaDR9p5BLz8k+ArDD+ova2CS71Hj7CmzDDPnVjl+xzC4ve3qZNk7gIJMCpUR7UmpbPfWto73Nzw09h30bqhs9xDkdCnZ0Eaw55t3ZSyZRJD7Kjl6Zt6Un+Qv9rZMp/GA4dV/D0DPwu4DZpQS3SzKb1ak3+vT5tT0zu9a1aXMW+mwR/38rmfJR3M4TcL5L6NOfSanDnIJ1GKG4tVDn1prOjlyT/Xp+MUVCUm7SgFhk6e3N3cn355WUAwbLZFfASijo3NWV9BzCB58ZsKXxxQZWRQJYKsM1/GE6rC15F+IjFj9Q5KTmX12VqnQTw6y2TirIjF+EPfkzMfwABPKprzxOfXsi5tEbrK/X+zIuiN7fgyADyS/vu/qLX1+EXIZOKaOi/8MUF+PpSHPgBhkRNfgaMNuTH+b+XMvkRMEzd2Lno1VV1dnL2uYXa0bgK7Zvw3xJ8/z916hRCqE2bNsHB7xYKaCUF+EhTiHBrpRro2bMnQmjoUJZ1TL0SawqzM8N/zQz/JfvcwpS1n4IJTZX6rOhtLNOhioPbO0eW6CV4N26iP1JnJ79fIiGNc2NI+HhjB4xiGaE/0eAUuZkgwFYbyEMFTlFM6xqWIeu4P/kBvbguXt0oen0dln0LX13BZNwJsOGlBfcHMhgTYeZIXlyPPJfi/iFy7F7fAQjy7uylfbxqVIUwamObAVi5il7fgCL59/9OXiKBJstXNCOhJ2PigQ9xWCWnwsfkZY0yw3/NubQm46/RYPhM3/MNsC16dZWKa8nl7OxksCuQ5/JpzTwaVaHioA8JH7d9BaX0/1UrsyMXAQqHgty7SQA+0iA+1KLOS4dWsxhrtRGb8VIjTDZUf1B1nqIoISb/QSgYF/US6G8XQaRt700aSlWFQEzreip8zDg8gZVhweMTZItm2GOjizo7CaIYZkcuZi2iKzNlfUfygyruGEAlCBSacXii1gd0AS4F8FG+/BPFgVH59//GHw+YQFcCYiqRPyWDLgN7nyfvosQ75E91kTO2unEUhA3pyUskrC40qRs+J78P/4vs330jbfuSXMXWbpAiuynApujNLXKNoigXVhJog8k7+Lj3O1ZhwOEkaX4NpewelUBTmA02ddLLxajrnQ9uwrWMQz/CDyRljZsqPR6ADuS8Y67RwGtJ2qf/3T4PXq3kZ8aKZtSRRFOUB2Wp9nUsICxeA0HiDHtVBstuD4MGkHfwMeYPXAU1wacX4Juw4MkpKKjOTk6aX0O7Uey9Jy6Mt8wdV4oDP2hPrOlB1UDB45O0WLlgX0jd0hM7zkLwV9nsiibCx99++61Xr14IoVu3yHeMeQnwkakTIccaNTBnzhyEUJUqVUwUDoazrFOzjOAD8DFlbTsw18E4BUEQ5cs/yY35A4OwvLv7ScPevCZCrwoAAB6tSURBVGqsP2BYgyh6fQMGCLxjgyaSKv0ljrWROMNOHtQ6ZbUrACzSDf+/q420stRbMnAJaf55N8umbfsSJJfNrayUx5Fzj7KAjJm3uC6UUuemkgB3WWM8t2Ue/Z8WZn35PkcbbIVqodQoC3KvbgTEQM6jSyQ5l1ZTV4TBiZA8ZIUgMHwkj9ejWCthtksMsFFlviUIAvYBUDdVZBye8G568EdJ82umrO8AwzH5if8wjNpqvWl1dlLW6TnJSxsAw9SNnckglBRhMAfYiYlX38i1+7QXICGGj+C8j4vgmQwfGaeU/0OqZWkDTENL6CWg0bPeat0zbHA30boeIt3Aun/S/Jp4vnnPSq2Sr2qJNZy8tCEZMVHrJ5AUKDboWwsWc+GtS9vaCyCjKiNBNrsi2b+U5fV3vo864Ox72RgpZfJD8lc2vybjif4M/r2vnxdQaNTwmZF97j0y1lUWPi+p3xJUSgCCpPH136so4Rr5ww+wha8UWN1+95Ok0sCY82+Odhlkk9al5Ov3eaoifAgNxBxlPaMIbOf4m/N9cX4pgI9UJ8XkxfXg1Urf6QmhmsClteDJaXJ0Wtmc+tkAQazgPcTBO+F3B5ms+2AgyGJigA3ETmKNdGvQAALb3ahwTZ2XjuNX8OkF2IuDI6ZlnZzJNAanbfvq3S9uhp1S/g9WMAxN+fcO4hxmAroJistmV0xZ91ny0oZwS/U2Zhbkk1O3bl2w2ugiFuCjLs0I+dalgcePH4P74549/1lUNVRKWN3DZ8cZVBzgI/w4FQe9sZ9W8tIG6qxE8ss4wAbCiAB8lK9qxeRPLkmQbpcV1dlJIAzeNEAjBseazPBf824GY5STOMM+fddgrm2ANC7aW0AAUEoe1BqaQN1sS7pXzrDDeII8QY6M6U2uuUBgQjJWHCUWD3xVk7ZVxqVMfkhuTNEeJSKTirDjGpgS4dQTVUYCyECN56KFlbcgH+ZOmFrgUBat6TGJdA6bU6nw5WXSZ+vf0CTJi+oYfxafRlPw5DSG1PJljZl7G8Hy+n6ZW61MmlcN4oNoVIXQUqp7kzo3Dfs24QZqCrK0q/OODIW9y9BLoKsgNR86jro1ntr10Myc88thxwxzS0r+vb/IT6C1nxY+jwb7E3RHytpPacYwaqWs6ZzLa+FcGezLQU5v2jCEtCOA38FHw4+0hiM9EmfYU80zrMLozOTsfVXaczzx6+RAeYDnctLkzPYdgmlhTVO+sgXOoSbA1xl/m5Gx5bWYHlsWYQmFNE1t7IILagqzyc6aYYdzsHsMNXYBeEOCuR3gI/zMqaUIjQaCJWUemwb56rx00on2X6v2f4jZbgA+wssDBwRAOi1kAKFWwkAKkYyyo5eQ1riLqzCbore34fscvgyTFzljv228XkzzZYSysMU+eXFd8MZOmled5lCo9RkwYAABLw7qvun0kIGyOR/BgjifXgC8iA9HSNveh7QrUz4MwOggm1keZhPqxEQaC8gAou+2lGH9UBPwYpC7cE7OxBH1ZXM+Ihdn/jXlUun5p/fs2YMQat++/YABA3SVEuCjLs0I+VangcGDB1eoUKFxYz1xOrjlLnx5KX331wZt1MUMMXxMXlyXdEPR+mvLZlfEGxVJs2KAjaYgU5XxmlywC7ClOjCpc1NzLq4iR8aZ5WA3HzhQUocMXBdBECmr27wfazRqpfyfwpeXyYN9Db/A0w7mQhin0nb0o7KBQ+TwplEIrUJuLQruT8KjANuCxyep9ODviCPoKlOe5F7dSJVNnSXLOj6dNDWRGw/JoC3vtssE2MDMCuf1yVe2wDOBUnYPIEvS/BoAZMGGl757GFQNQQTxESbqPEXhy8usa8pUUVnTBU9O5d/7izrHFyXeIc0JATbYvRUXhBVhkl57Fb66Qlp0dg2GW9h8kBRYtSDuuDorMf9BKOzABRNI1ul3LqcEQUAv/GdPPa5Dm9BL8F9yljtYB8QGElxp4fOogqdnYAovfBZJ4nIt+M6MmJx/76//t3ftcTFmb/xl7U9JlEpXkVxCIlqVQpJL635bl203VusWueumLeVO+0mEldCutdJa0rLLuiZihSSF3ArNNNNlus2oZqbf55ynjnenJjMhk895/uDtnfOe9znfM/Oc53zPc55D1i5hxwwZy8WCF+VPE+pRuA4Nam7Bwh/sfpCU8iDiDRSQWRIF97EBRFdlXiZUqNT5mYjVVqD3xUUvgSglvktNy+r7X3grGvqdF9qzNCFUUsyRFOegEIW7MaK7MYRzhROG0OpEXVJyPgSxqkFapQnbRKmx6KwgHBVakX0dirOzHCD+Hgsc2cfx+x/bma6es/3Yi7wHuC5gMSGQIG+345v5hlRakZUEu4vyI4cRfxFskYwRIHXWviDuY8HBsRBjACvRYCLwnqpm/PB+aGqBj9nk77SVlHBRBquEUHCDiuIWiQUvYEcI0gTbPdgshXIL/He1HRSAICIUZCmpBPc3d3Nn4d0jaJ6M12qUNSDVk+QTnlA/iuMM0ka9hsNmFOmFkn+C2MlcC3+bCR6htLykkv8QEQQ+zXL8Phem/Ia22+Mz39GkDtcPJ3UhtvK3mcjjrDUhgaUPTmBbKC+tFFW8TEbBDO/mOEJjrayshg8fzjDM+fOymQRId1P3kUBBL1QdgZs3bzIMo6amFh39n3jzRtObuI/g/MFaFTv4HYwmOGEwc4XIxbyfhiAGC1sHbrAeOZUVTDmPZdzZbeGH90e+V0Io+2bDrsGrADcXEWO+LWTysABdSgL1qqqq4LgzGLdqLwNVO3bR40EfCNbO3WBSdnM/2eQhERYWnVoFu3NQMXEFmmQHtoVHyp8nVkcf+n6Wu96YFcWvQY6iqVmd1IUREZxa5Fy+87lBsJzKj7B7/egM4VzFghd5eNeCzDZqCPQs+GWypJT3+tEZ4GwIdysp5hAeAuBCzuXBsTBWcQLbEm2rT+pj5fSW6c23FpApX/tPiJArTdxOPiJdDxk9OWtaSSvKqqqqSq/uINryd9hAeYhSKDg4ljze4AvwocX5T6EGoGEgOhAUIDXDAl8+juojNxW5EBdmQRPYadIVeVCR3oetMNwgbUUqZJch7heBl1yQKQdZnCVzJ3YNUpGA5CIlz6JAyRpBE1efZsi9wHuluSH6ZMmy5ML6mlLofwh+RSdOPb8qzn9SfMa/OqAQOyji/Cfgq6Ed7uH98nYNhG0uaFn8wGj2ajKoUTvAl/0u9jVYQm6QtqQ4B7x8TkBrdvgH4qFxdjCJsBC2g5CWojiHmoMHK3JSYJaOdrm9uAkzN7QwUjOXY78UJqsQ6yIRFpAVABSAi7PWK2tAIFybt7WrOP9pxctkMImCGppckV4An570e/nTy+xmwjIU4TLQnBx3aMEvk1BsjFQCs3p4hPNDm/z9riUX1pc/Pg/OdDXfXCtMlo1Jw64vXLjAMMzEiRO7d+9eTw3UfawHHPqRyiEwYsSI1q1bm5qafhTNJMUcbpCW4I/58PaKrCSZjYEoNnydQXW0irii9OqOvD2DYPWQE9A6b7dj2b+R7J2AsIZVKCewHcYYbpAWe7GjYQ0XphzmhrSHYVssyCb+65vapJK8n5zYbgcKn981kLNGvez6njfFyJVEzA+zKrm0CW5U549k7aFmW0mgGaqqqgTHF7D3R5c/v8rfbv2mpG+LwiNu7DGmSiqBOFFIdYRGGryLE63i4fGPqKPsxeuHf8NRy2/ezlJeJmwIthaxSyKqjEUGSCtFRSeXcIO0EF+7bziBt/jsD+ws6+VPLuVuNmNTgzJqv7WATPnaf0KkAfswSdL1FS9vcfxblia8ORtQdD8O2B2SOhEt/6EYu2ZlN6NqV674HQh8REx8TTokaaWo4JdJODZA9pjKipyU3I2morQ/FK+/uqRUwtvSBX27lKRbFOl9mFA1+KjD8qxrgj/m5+0ZzA3W4wbr5v3kVHJhPdkwi2J//T7P3WgqT3NJMSdvz2D0latJpsNOvoO+aX7/Q4El6HddfUQK70dLst7NRpIEq8AXmOOvxk6IU8m9J4idXZ0HwKdZ7ubOgmPfy+QNRWu+WBPFidjXGX/msDIUilKPyhgxUdpxToAGxMOgrf3busMr+GF9SLgwtKI861r1zuLdjtKKstwNJjk+zWVmv1Cy4NDU3E2d3kxfy/IhuBy5m/jbpawBERe9ehN9ju0Dqr/mvEdFegE56H7/Qwk6ama8ZTejwCHO8fs8f7+rjEdedi2ietXizBpo1OsHp9ghpNCJOT7Ni056VVVVAQHBD+tDtrGzu77B16NHjx4xYoS+vv7Bg7KHrLLrpO4jGw16reoIXL58GSIgo6LeaXhreDsb5rVIxPLcHVFqLDumkK0Y2u+M4xRRBoqLG9FGQqlUWiGseHWn5OLGvD2DuMF6JPcy+8GPcy0RC2/9zN9uzTa43HWGghOexKDXqVgl70H5k4uVuffrHJwq+Q/Lru8mxpHsUszbO7T8aQIiDqUSSUmu6N7vaBTcYk4SxNT5LvZNqUhQci4YBZXWxFACMYP2htfalkSCI/N2DUSYs3xHdp2qcC28/cvrzHN1akLWIsmnUpGg7FoEO+e54NhcPJA3R25Ebjryb/DpyWU3fiqIHpe7wQRyC5Aa6ryQVpSh8/Ea4bRJcXntRtWpkszNt/Y+OmjbmymM+Vbmwff1Z3nWNZK4QF6dKGxAXAFhHmS/S1VVFXJcAjSqnxJXSIo5MoQuu8LXmefgJ8kN0hacWCgv/xQyUHK+1ZDGHDm7SomSplIqEpB1AJn3SF8Xo4hk/KsUF2bJTNrfFJZKa7vjKKfs3RhifpU1ILCugljzLeYl50PY8TkK9kL5k4u1rTRineXMecRFL2Vcbcg48To9vvhsADqfLEgLpUhLRo5dJf8RrOHwtnQR3j0CQQhSkaD88YWiU6v4YVbctTrKhvc8ePCAYZjFixe3b9/+DbZ1XVH3sS5U6D0VRsDBwaFt27Yfi4BsZGAkwoI3+/IQAdC8evaJp8LcYD32oNLIusl9nVQqLnopFryo0x2U+5TCH4juxsAqFZmIszFpyHgvrhAXPEP7iuQYdKSapBKno6sjFYjCijeRglIJpIuqE94c3xZkL1T97UGbySpF9ZdRiU/l9D787mTWghtfYUkxJ8enGW/bf9YQsQOhRA4KcWEWCgipNSlSsDmwDNKA6AIF62/kYsoakIqclDrz9ivbCx+omZWcVBK6gH6z/x0j+OH9SBZYBRXw8PCwsbFxdnYOCXlLDgHqPioIKS2mKgjcu3dPQ0ODYZhly5apik4fVA+pRJR+Ek06g/XQzu4gLX54v6L4pWgjZM3K4Ad9vwpWLi56Vfy3HzoNco16jm+L3E0dC6LHlV4NZ6e9UEG1m5BKFa9uF8Z8ixYK/T7nrFHnbeteeNRdePuQPKa8CTVNQVVh26/MQqqCz77HYpBsXybjJjekPce/5Xt8S/1VFfwyGW+iX1J/sSb06XsxII3cC/XAi05oTNrFD++HIllx9o+8n4aUnFuLcgPXyr9bTz1VVVXXrl1jGGbmzJndunUrLS2tvzB1H+vHh36qiggcO3bsvSTxUcW21a+TnNWl+h/6xD+lmHzQDlZyCfKD6tJolcNh6+j4x7zHjfbSOl+EjmPxaSaTcROyuNeZ+7DOSt7xJuShlHf4yjtW/vEfb6gBaeReUBSohjanqqqqsLDQ2Ni4U6dO7dq1u3+/+pDJet5L3cd6wKEfqS4CXl5eDMO0bNlSXkJ81VWdakYRoAioNgKQl5S7zvDjqgl5sCHDKFsTOB6a5Atjf/QhrmFtVNkQug+hiUrV2ci90AhtHzVqlJqamo6OTmRkpCKvo+6jIijRMiqHgFgstrOzYxjGyMgoNzdX5fSjClEEKAJNFwGplB/en33c0UdpCuRRYmekBzWKzwag1eRTqxpHq6L4Zey9/I3zUtV/SyP3wocGZOfOnQzDqKurf/VV9Zmxb30jdR/fChEtoKIIcLlcQ0NDhmEcHN4cvaCiulK1KAIUAYqAUghIKlFSHp/mtbc+wPna6NhJhY+BUerNtLAiCHxKvZCSkgLxYIqEPBJwqPtIoKAXTQ+BzMxMCwsLhmEGDx7M4/GaXgOoxhQBigBFoC4E4Ix4OOSz9udwFA1dUK6NTGPe+TR64fnz5+bm5gzD6OrqpqWlKQ4gdR8Vx4qWVEUEioqKXF1dGYYxNDRMTJTNSKyKGlOdKAIUAYrA2xCAgw3lneVYyX/40XeFv60Fn/7nn0AvJCcn6+npMQzj6OjI5XKV6jPqPioFFy2sighIpVJfX1+GYVq0aBEWFqaKKlKdKAIUAYqAMgig8519mpWcX6fMQ7QsRUAJBE6fPq2mpsYwzIoVK8RisRJP4qLUfVQWMVpeRRE4evQo/BLGjRv31oRVKtoGqhZFgCJAESAI1JPHnpShFxSBBiEQFRXVvHlzTU3NuLi4BlVQRd3HhuFGn1JFBO7cuWNiYsIwjIGBQWhoKHUiVbGTqE4UAYoARYAi8PEQEAqF3t7eDMNYWlpmZmY2WBHqPjYYOvqgKiJQWloaGhpqYGDAMIy2tnZAQEB+fr4qKkp1oghQBCgCFAGKQCMiwOPxAgICdHR0GIaJiIh4xzdT9/EdAaSPqyICFRUVkZGRXbt2ZRhGQ0Nj+fLlOTk5qqgo1YkiQBGgCFAEKAIfGIHMzEwPD4+WLVsyDDNx4sQHDx68+wup+/juGNIaVBQBiURy9OhRa2trhmE+++wze3v7wMDAq1evNiBGWEVbSNWiCFAEKAIUAYpAXQgUFxefOHHCy8vL0tIS0jq6uLjcvn27rrINuUfdx4agRp9pWgjcu3dv69atLi4u8BPS0NAYP378zp07MzIymlZDqLbyEBBhEQqFZVhKsZSUlBRjKSoqEmApLCwswJKfn5+HhY+Fx+PlYuFyuRwsOTk5r7C8fPnyBZZsLFlZWc+xPHv27CmWJ0+ePMaSmZn5CMvDhw8fYMnAkp6efh9LWlraPSypqal3saSkpNzBchvLrVu3krHcvHnzXyw3bty4jiUpKekalqtYEhMTr2BJSEi4jOXSpUsXWXLp0iW4n4AFCicmJsLjUFUSluvXr9/AAm+8iQXUuHXrFigGSqZguXv3bioWaEsalvv376djgSZD8x8+fAiAZGIBlJ5gefr06TMsAGYWluzsbID6JRbAPycnB3qEiwW6iYeFz+dDJ+ZjgZ4tLCyEvi7CAl+AkpIS+ErA10OIRSQSyfs60fsUgSaKgEgkOnv2rLe3t62tLYx38K+tre2lS5feb6Oo+/h+8aS1qTQCpaWl8fHxnp6eZmZm8KPS1NS0t7d3c3MLCQmJiYlJTk4WCoWKt0EkEhUXF+fn53M4nOzs7MePH2dkZKSmpiYnJyclJV2+fPnixYv//PPP33//ffr06fj4+Li4uD/++CM2NjYmJubw4cOHDh2Kjo4+cODAvn379u7du3v37oiIiPDw8LCwsNDQ0C1btmzatGn9+vUhISFBQUGBgYH+/v6+vr7e3t4rV65cvnz5kiVLFi9e7OnpOX/+/Llz586ZM2f27Nnu7u5ubm4zZ86cNm3a1KlTJ0+ePGHChHHjxo0ePdrV1XXkyJEuLi7Ozs5OTk6DBw8eNGiQg4PDwIED7e3t7ezsbG1tBwwY8MUXX9jY2PTv379fv359+/bt06ePlZVV7969LS0te/Xq1bNnzx49elhYWHTv3r1r165dunQxNzfv3LmzmZlZp06dOnbsaGpq2qFDBxMTE2NjY0NDQwMDA319/fbt2+vp6enq6uro6LRr105bW1tLS6tNmzaampqtW7fW0NBo1aqVuro67J1nWz16TRFQfQTUsKirq7dq1UpDQ6M1Fk1NzTZt2rTFoqWlpa2t3Q6Ljo6Orq6unp5eeyz6+voGBgaGWIyMjIyNjU2wdOjQwdTUtGPHjp2wmJmZde7c2RxLly5dunbt2g1L9+7dLSwsevTo0RNLr169LC0te2OxsrLq06dPXyzW1tb9+vXr37+/DZYvvvhiwIABtljs7Ozs7e0HYnFwcHB0dBw0aNDgwYOHDBni5OTk7Ow8bNgwFxeXESNGjBw50tXV9csvvxwzZszYsWPHjx8/YcKESZMmTZ48eerUqV999dW0adNmzJgxc+ZMNze3b775xt3dfdasWd99992cOXO+//77uXPnzp8/f8GCBQsXLly0aNHixYuXLFmydOnS5cuXr1ixYtWqVatXr/bx8fH19fXz81uzZk1AQEBgYGBQUFBwcHBISMj69es3bNiwcePGzZs3b9myZdu2baGhoT/++GNYWNj27dt37Nixc+fOiIiI3bt379mzZ+/evZGRkVFRUfv37z9w4EB0dPTPP/986NChX3/99fDhw0eOHImJiYmNjf3999+PHTt2/PjxEydOnDx5Mj4+/tSpU6dPn/7rr7/OnDlz9uzZc+fOnT9//uLFi5cvX05MTExKSrpx40ZycvKdO3dSU1PT0tIyMjIePXr0+PHjZ8+eZWdnv3r1isPh8Hi8/Px8gUBQXFxcVlam+ICiVMnMzMzz58/v27fvhx9+cHNzGzJkSIcOHWR+LIMGDdq8eXNqaqpSNStYmLqPCgJFi31qCPD5/GvXrkVHRwcEBEybNs3GxkZDQwN+e8bGxo6OjnZ2dv3797eysrKwsDA3N+/QoYOBgYGOjo6mpuZH93LU1dU1NDTatGmjpaXVrl07PT09fX19IyMjExMTU1NTMzMzc3Pzbt26WVhY9OzZs3fv3n369LG2traxsRkwYIC9vb2Dg8MQLE5OTkOHDnV2dnZxcRk+fDiMEKNGjYJBYvTo0TBOjBs3bsKECRMnTiRDxfTp02GQcHd3nz17toeHx7x58xYsWLBo0SIvL6+lS5fCeODt7e3n5wfDQHBw8Lp168D6b926Fex+eHj4rl27wNxHRUUdOHAArPzhw4fBvh87diwuLg7MOth0YtATEhKuXLnCZtQInQaMGqHTanNphEgDLo0QaUATpqenExbtIZZHjx7JUGhAPT579ozwZ0BPvnjxQh55RpgzoDzz8vLk0Wa1ObP3S5jJI2uBrwXejvC19VC2wNoCL0hYWyBuAQRgE4GyBboRyFpgaoGmzcjISE9PBxYTeE3ondu3bwMdC1wsELFJSUls/hXIV2BeL1y4cA7LWSx/Yzl9+vSpU6f+/PPP+Pj4kydPxsXFnThx4vjx48ewxGI5evRoTEzMkSNHDmM5hOVnLAex7N+/PyoqKjIycu/evXuw7Nq1KyIiYgeW7du3h4WF/YglNDR069atMPHbtGnThg0bYPoXEhKydu3aoKCgH7CsWbMGpoI+Pj7e3t6rV69euXLlihUrli9fvmzZsiVLlnh5eS1evHjRokWenp4LFiyYP3/+vHnz5s6d6+HhMWfOnO+++w4mit9+++0333wD08UZM2ZMwzJ16tQpU6ZMwjJhwoTx48ePxTJmzJgvv/zS1dV1FJaRI0eOGDFiOBYXF5dhw4Y5Yxk6dKiTkxPYBzK9JHNLmFhaW1v37dsXZpUwpYT5ZLdu3WA+CZNJmEkaGxsbGRnBNJLMIdkTSJg9fnSjKuN4fdA/1dTUiAHX0dFp3769oaGhsbEx23r36NHD0tLSysoKTLetra29vb2jo6ODg4ORkVE96unq6s6aNSs2NraoqOiDDtvUffyg8NLKmxgCXC73ypUr+/fvX7t2bUBAgL+/v5+fHxB+q1evXrVqlYyJB/u+cOHC2vZ91qxZ7u7uYNy//vrrGTNmTJ8+HRjBKVOmTJ48eeLEicALjh07lm3ZwaYDRzh06NAhQ4bI0ISEI5QhCAk7WKcp79ixY21SEKx5bTqQcoH1WGf6EUXgU0VATU2NzaESApWwp0CdEvaUUKeEN2WTpoQxJXQpmyutkyhls6SEIiX8aG1yFGa/wI+CK1zPHBjoUjINnjJlCiFNp0+fDrzp119/DdTpt1iAQJ09ezZwqB4eHkCjzps3jzCpnp6eQKZ6eXkBn7ps2TKgVFeuXAms6urVq729vQm36u/vT+jVwIbK2rVrw8LCDh48GBcXl5CQkJqamp2dXVJS0miDLnUfGw1q+iKKwCeIgEgkEgqFpaWlQFwJBAIgq/Ly8vh8Po/Hg2jCV69eQRAhIaIICwUUFAQIpqWlQVxgSkoKIZ/+/fffGzduQPDf1atXr1y5ApwTK9KPXjYBBC5hqTMik00hy8Rl1h+aKS86UyZA8969eyRGU16YZv2RmiRYk803Z2VlEcq5Nutcf9QmYaBrk9DywjflRXDSIM5P0LA2hSZR97Ep9BLVkSJAEaAIUAQoAhQBioDKIEDdR5XpCqoIRYAiQBGgCFAEKAIUgaaAAHUfm0IvUR0pAhQBigBFgCJAEaAIqAwC1H1Uma6gilAEKAIUAYoARYAiQBFoCghQ97Ep9BLVkSJAEaAIUAQoAhQBioDKIEDdR5XpCqoIRYAiQBGgCFAEKAIUgaaAAHUfm0IvUR0pAhQBigBFgCJAEaAIqAwC/wfZJDYZCwcoaAAAAABJRU5ErkJggg==","type":"image/png"},
{"title":"conflict.jpg","text":"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kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkEkkkkkkkkkkkkkgEkgEkkkkkkkkAAAAAAAAAAAAAAAAAAAAAAAkAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkkkkkkggkggkkkkkgkkAkkEkkkkkAAAAAAAAAAAAAAAEEAEgAAAAgAkAAAAAAAgAAAAAAAAAAAAAAEAgggEggAAkEkEgkkgkkEEgkkkgEgkgkgkkkkkgAAAAAAAkEkEgggAAAEAkgkAEkkgAAAAAkEEEgkEEggEEgEkkgkAAgAEAAAEgkkAkkAkkgkgAAgkkAgEAkEkkkkkAAAAAAAAkAEAgAgkAAAAgEgAkAgAAAAAgAkAggEEgAkEEAgkgEAAAgAAAAAkEkEEEkgAkgkgEAkkAkAgkkkkkkkgAAAAAAAEgEEggAgkEEAEggAEEkAAAAAAAEAEkEkkgEkkAEAkgkAAkEAAAAEkgEkkEkEkgkgkAEkgggggkEkkkkkAAAAAAAAkAAEAAkAAgAgAgEAgggAAAAAAAAAEkEAAEkggkgAEAkgggAEgAAkkkkkkkkkkkkkkgkgkEkkkgkkkkkgAAAAAAAAAAAAAkgAAAAAAgEAAAAAAAAAAAAAkAggAAAAAAAAAAAAAAAAAAEkkkkkkkkkkkkkkkkkkkkkkkkkkkkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkkkkkkkkkkkkkkkkkkkkkkkkkkkkgAAAAAAAAAAAEAAEAAAAAAAEAAAAAAAAAkkkkkkgkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkAAAAAAAEAAAAAAAkgAAgEAEgAAAAAAAAEkkkkkkkEkEkAkkkgEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgAAAEAgkkAkggEkEkEgkEAkAAAgAAAAAAkkkkkggkgAggEkkAkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkAAAAgAAEAkgggEAkEgkEgEAAEAgAAAAAEkkkkkAAAgAEEEgEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgAAAAAkgEkAEEAEEEgAAkEgAggEAAAAAAkkkkkggEEgEAEEAggkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkAAAAEgkEEEkAAkggAAkAEkAgEAgAAAAAEkkkkkgkgkEEkggkgkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkkkkkkEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAkkkkkkkkkkkkkkkkkkkkkkkkkkkkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABow3jAAADdTUWK7RygMkkkkkkkkkkkkkkkkkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkMutYAAAQXMx2iuv5GrkkkkkkkkkkkkkkkkkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiYWI6gMW1VAAAGQt6jeu7AocHckkkkkkkkkkkkkkkkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF94s1iMM1BQAAAHzdBqFs00OB60kkkkkkkkkkkkkkkgAAAAAAAAAAAAAknt/wAIAAAAAAAAAAAAAAAAAAAAAABlPNqYxfKqNuRfQAAA4yS4/uViKik3+5JJJJJJJJJJJJJJAAAAAAAAAAAB+kntt6iyAAAAAAAAAAAAAAAAAAABoB8uQeGvRyeyNiYFAAAJ03tWfmS3gxAMBZJJJJJJJJJJJJJIAAAAAAAAAACUpv8Av/p9tMAAAAAAAAAAAAAAAAADQ8quvmP5F5JGxZIftwAAc5lFUuP8DPjPn8KySSSSSSSSSSSSQAAAAAAACGI32YpNv9A7uzAAAAAAAAAAAAAAAAARlMkMKfijmedGY/7ouAAAcFWvB7gRbssI624OSSSSSSSZv/sCAAAAAAAASSzZPrf/ANSXPS1pAAAAAAAAAAAAAAEAAAbAQvC3RgGKjSRJRYAABaGqItosPCeWKc5Z4kkkm2Xgr8/dEAAAAAAAEBdr9Itx34LW3TCzAAAAAAAAAAAAAM+srN8xQzhdbxT/AKHj1hiAAPWUFwcoBPO3L9hLin2BkR7BdszLzIAAAAAABET7FgIh0X9SCyZ/XwAAAAAAAAAAAATDlcf+oHu96MKTbFcddBQAAs/eID5QraXiyVxgfqk87OABBomKfAAAAAAANM+Y51WxoSvElLUk6wAAAAAAAAAAAD/LUyPOtKhJ+d3aW4xpo8AAKcnAgJSrj8QUy/Vt0ebgZ88Wk5/zIAAAAAAJs8sjpMVurb36GVCnDIAAAAAAAAAMENFr/NXgpho9kRA9p1ItbWAB20ah+z/ZVayyJ/uKxaIqlKU6mpEjAAAAAAAV0+0rn5rOb+v62dy9jAAAAAAAAABMZBCHCcKOBl4LbcwhIRSWHAAKiTcxTdjFlDhRcG5bxt/B5n42sWrIAAAAAAbp9L/W9A+NPY2R5GuAIYAAAAAAALtqNPOQaA9bTBbJVl8P/ByqiABQjaCZBy9Y6zTfQkp9xLc2LnMZl/7AAAAAAHlzcFBPe/W7zeX8f5+kaQAAAAAAAnIrlc7se34k+Vccuf4PvVl2wADMhSGXM50RLcUXpsKhjSiZT2wvHgoAAAABHN9DHjleXJxossJ0N+ctAAAAAAAGjByYPEdPPQ9M3X/Kkxols5ZDABTu4qIx1Z9vzpts9e5fMUy9DlekaDAAAAALUnpxsecP9moNx+zbEl2yAAAAAABa9D7c269QwCIgv5TlhVQAXRUAAJifjuvHK7LMpdTYHsax51Ml6+lye4AAAAB6ftjvHPfdu0Oc8GyJtt2AAAAAAAIa7yri6Sqj8tFt2elG9yUSQnUgBGZQ3Bgs2PpvjRGu0yQovCkjw7F2TAAAAABaaHYKLVR9SRYnVb8otF3IAAAAAAAS8pURBTsYXlpUMyi6sVSciz9QEj4rq8jFNEm0wUJL2aBLyEcDHHTroAAAABcTNOAWxLYUu0Jr9TBn+kRAAAAAAAFWfMMkiGUusQJNfEemhjjqXlSIDkZ/zewf79sLNBt2j4MOalLPh2BfAAAAAoqZHcb/AO+eW5Ulr9+f5TJKAAAAAAAG+6VZIPJy+xhJ7IWOeZGQLMK+QXpxTcZLha0jrdJ2LXBEeInkg/BoaAAAAApoDZtvHK/AmR8addowVJY4AAAAAAAePDLJO9//APfnvyC6Gck+64hp4BFXgF5kNwiLPS/6jaZDmlxYd0Od2UAAAABnpnD8TrA/tb6QJN+jTMXT4AAAAAAE2NPrbYqE3LMnRQIHG6xUkRNPAjzg9o1Ritma5r8tCGZQ4V3+hWq+RgAAAAjIkyDL4Hs9/mWRQ/8Aky4TDgAAAAAABr1pRkcPSF1Mex7FEZ8+aGFHoBiqPH0VCQI3PaLrfNmggFJwA+CsPLAAAAPsvNKpM77Tn/eMxjF7dRt/CwAAAAAAJl3iKNEfiARtmbxipteEc8Y/c/ipbTck3Ad6qNTZKM+aLzFPyOFiBYAAAAHMNp6WgNt45p9CK3WRiaB4uAAAAAAANCNlsqU9eTSONq5kekPalVtC5euk+fSrpFPUAfPjUm7dh0vjrAiKdAAAACbYkoYkECQ6Sr2wV2pXv3WDgAAAAAAAjC//AOPH+x31K6G6Ok+Pzy8qu1Em5u2ey2Z7ErXLLnlvDw77+mdF4yAAAAF4VbcIigwyiLwEHkwnks+cAAAAAAAARDOy0RypmUPwJCbp3GQwyM5tkGVlgwRxCU5qQmWLt3UXfy8IgavlWwAAAAAOmkLLfSNE0x+qNJ5tmhywAAAAAAACYh9JCPMFhO1J3YBkejEe+83jLm/55Ear6SsGNbom7uhnu3wCIV5ZqAAAAAAAAAAAAACSSSSQACSACAQAAAAAAAACTHJL/eAY+t4UE7PBfYih8nT4w4BEsK1DK+5biszYhF//AJDV3Za1zsAAAAAAAAAAAAAAknsgAAAAAAAAAAAAAAAAAFGd/SM22fLG7DoFHs1HRMwZvr6f4eda4HRjkrW9Tbdi/u62et0lPgAAAAAAAAAAAAAEk+kAAAAAAAAAAAAAAAAAE8Sf81XW4VcCBM36ABTK631OUiIYxPSbtXu8s1glALCZFsLa37elsAAAAAAAAAAAAAAkn0gAAAAAAAAAAAAAAAAAiyZ4HvDIf7/LwLE6y5ovgk3zlgAyKXTIaX3kYWSUxxpETKh0obBAgAAAAAAAAAAAAAEkbkAAAAAAAAAAAAAAAAAAEm0Npvbwvm2AHYiaQYN423gKjspI33WA2R4/Nup4B25aR78rHOREAAAAAAAAAAAAAAklEgAAAAAAAAAAAAAAAAAENTWJTnBfTPclbsuzSAmE3IkB5zx66L9OhfJnS9hROJLW6P4F5Y5gAAAAAAAAAAAAAEkkkAAAAAAAAAAAAAAAAAAHaN/c8wfNDWrRvCV8XkwO4ABe7HIeSxuJjIYyyHkQqM9ctjPRKcUAAAAAAAAAAAAAAkkkgAAAAAAAAAAAAAAAAAAYnqa9N4cZyIFzKYj62hkDAAMJ2nwZcuRZZdN2Li1V1VnAffyWiJgAAAAAAAAAAAAAEkdkAAAAAAAAAAAAAAAAAAD2Vy5cf6lyKe3WNNfG8vngABLsCIYsg8O2iuyWie5RKFNeyg5ta8AAAAAAAAAAAAAAkhMgAAAAAAAAAAAAAAAAAAFNr4cjBcSrkqbfjt2cs7gAAlrq9N55KnnxIGTqTVoViXSFpqdvRgkkkkkkkkkkkkkkk+kkgEkkkkkkkkkkkkkkkgrx8Iu9hzO5oC6tl2rnBsAAFcWNMQb8a/zA/tkfwOh9yqtStt7NEkkkkkkkkkkkkkkkn0kkgEkkkkkkkkkkkkkkkErGBvWtJVfffkxuix/GgAAApf5WJoz84hZZYYV1nCvQsksmx2r22b7kTbQkbfEGdfkkFibMAybMj7cMmbfkOm3kkmz/AJmPY9MZDx/hFp6MjgAABO2alypBDeaBgAaef+aTlgWw5rdDR4lLI0lhHUiYOtdJJ/IkoAWkpMkoZKkvIza5JIoCO6zX1crfTLB/bw2owAAAM9dOnIaknw0ssdd/jQJ/Q20CcJoO5JJJJJJJJJJJJJJJIJJJAJJJJJJJJJJJJJJJIJnoWrc3uXoFzeSBN89gAAAAETmxFxeRLzX4kcYY4oBlwBDk+FgdJJJJJJJJJJJJJJJJJJJABJJJJJJJJJJJJJJJABCNH6iG+n8HV+0KRGAAAAAE/sBvzQ+zWttlfNNkeSOLyT5MmxO4JJJJJJJJJJJJBAIIBBIBJJJJJJJJJJJJJJJJAAQlWBDS4it+xQA/JAAAAAANDEpoJiAp9SGzXbBTC5fJJ+QR8AFAAAAAAAAAAAAIJABBABIAAAAAAAAAAAAAAAAAAL8zUCxrHos4A2REkAAAAAPl13Hio1LUgjmIfVUI2uwnBC/bOvIAAAAAAAAAAAAABIAABJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkUjuSaVTTvVdqyaj7WX0k08rksfAAAAAAAAAAAAABIAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJJJJJJJJJJJJJJJJJJJJJJJJJJJJIAAAAAAAAAAAABIAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJJJJJJJJJJJJJJJJJJJJJJJJJJJJAAAAAAAAAAAAAJAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJJJJJJJJJJJJJJJJJJJJJJJJJJJJIAAAAAAAAAAAABAABAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ//8QALhEBAAICAQIDCAMBAQEBAQAAAQARITEQQVEgYXEwgZGhscHw8UBQ0eFgcJCw/9oACAEDAQE/EP8A+4BUr/5RfhodYlGWoN+wT6oeeh56BMhPx3Ra2kPPwGq6iOHuov4z9z/2Ox8f/sDVEN3W94p1658oOvVZ/wCSmKHW6fdfyiXsNGXq5r1phyArNvJd1SbIfMv7EtzL/wDhihuO44cjUahw+wsRGHsBe5hSFrXrEUAcCqHRcSzdhX34vgwTOBoWuhGs0TvDRHiCmYpHgTTB1sOJLxS//gdcKETpTBrD7RkbzDRvGO/GzCo8RZlVNV7DEpcKm99I8EBbcZeMn74Zz8YbgM9J1IeYjEaMR3QjpOj9HzJi6uQGV1/Y08CkQmKbyuGHApVChNmJf/vbCJbZsxOswjBK1TpFFsw7zLuY5GXFHiLMWtcS7PYJxbiACZdRReJeDksQaeFIDh3HAYC8/QmaXMaPvNAY69X1lBGc2CscU7hmIWxiIe0UiU3CjBwEg24Nln94y+D4Av8AtMdYntm/EIg9NzTFRbcX2gu2WsQgPCISoQI8R3KCPOQ9gBFl4M0Is30hQMAM1y+8MfPUzS+M8z3USkO8xKYCqmZVg30mJZ/N9+OszchjrGGuEVbgBgRHgF/25qWR5Fy4szMzMGXLQZZ/WbSblmsZusVtLfM2bFdoFQgQIcLFFzUqBC0J1HGYkHsh7GDrGHQy6uXuA7QmejQVv39JnhIuI8dIi2MqtSqtXrqCNWt+V6+MqVmBOlmiG4bBGgxKrh6oHRtRf9qbS5uV7UpBv+nUMsLocyytxzfsdpirG4EqVAgQIRVReBhbgcVwCDwgzcrKmPYURdSgZmDMzOXAx67garpM0zw1YVMfHSxt1jBlwMslRoVpTnXazdPfUuk0w3DcMzsA3D/RAV6YDas/rb5a8NypUqU+yuDzfEt/SXIi3hfFmWBE4c85gQggKlweG7lXKqVcICVCDEWOOYkxQqe8zJrx22I35CUtFBUS+cBcxBY8uENQ9hgXZMtxlNecyxjCFc4COJnOEFoMEyhJrjACmEhWQVTT/Csl+GzvLLq/4l1LJcuECVKlSpXsTwjUP6JuWZRHUSBQGVKlSpUIIICFEYZRlM1FgvhCeEWK+Dh7/QBHjQcL/mma+JLrX5XSJG5i58srJBWGGCYmPgyQyiuiMgmbeyO0DM6IH5PZls1TimLLYvpxXDgFcjCBnIBa9kobZlqkCtEVpjq8VA4S1DyEt4ZUwx8LYtmDf1P8NxFvhhLNoqgDK0xKMBPdMtKTklEqVzUrhlzuQz/LZcyhG0DXzHrUBESsYTwBDgAiSiM2suXAuFoJNS5fKjHXgRKgBGWt9I+JAUz9/wDsyw0kVtUBlltWAodS1V/cAnhlhACVHBm41oDLbcTu2RKe16wmaeExhmMZEpeFiKxcVBJ8SURhNsOBa/M1Kdsgo2sUOPReu/5QGza1EZop8IelwirgbZz0lkWyxGt/8JLGJceKlQLLlylMcWKYqIiUMyOTwVwcPFcFIN/y9RorLvCRTlBQ4uLHgIHBUuLGW0q5Uq+SI+C4sU3wIY4HMyR3FvxL3uzz/wCxVWzp6f7Lgefyoa5VB/2VBwSPb3Uq4M8OFgmGW2zNxbKlLNiJYH53IiLrDBTMnFvMUrZcSqG8VvEsdgVLndRnGSxi2GOJYBjZiNNNgedxZ/NJ8DPxWPlBj9Bnflz8c8XGQi6aeDmXMsrb+EC/AESKiXPhsT0T0SsME1KhycMZcHh4eBh/JUNw9W2J1YWwc7soJRHiXgggRirhWBCVAQKh4mKLCBcCURbgSw+cAWeLIN9D29ZdytM+p3PvDBfSJYTK+Tsibe6/aHYQHI4mCN7i6U3LNQxmHhyc4djMMbBGmw1791LIUDTMMc+UZWQEXcvgrGD2BIplsx3Brr8JcyDFer19e0QUFgHv3+e+BWmAHqytVd0Q7D3ju73R6Hf5faW8MRdHX4jDhrT8ZfwERb4rkaiwMzMgBMTEqDCCa4JyMsi3HgYSpVcVwP8AItzHSuIi4MKmCNYw2ly+QglxeKSuSWwYq5Ll8LFNsIJdEdwjOsreAteGl423Zp/OpBAjHlmvM8ntDvafyyMPxVFSy0fx+8dPmlAUuvzrFNPSFbYii1AXC+LdUJA6xaylsllSr7TJMU6NMGC6lnC9czzBKmM4JQ+xiSTjO+AUgSDTn8+0QdzAyNHeKha2M+f/ACiOegLHSu/rv5S/7Ocxchg4fwbq9usfDfJuDKVHnRNMJcY+J4IR4OR/jZq5mFOINbYFFIYb8r4uXCDFF4SJEmYTUWDwIuDB404HA4HMIEIwfE3dDuZPhMs6fl8POGhSm/r1H6kI2xs6P507M2OjHoQyhK6MIm9xUDEU0QBqLKG4aR5NzoMPSZYubzV9OfniViDUQPBeVDOM5JaShhc9idSKsEbMZQMS+XRXeb0BNiy2mi/n/hAolD+LBY7p16l5MvFklaev1e2uo5eQ5KlcVmbOMuBGJwnNSpXgTkjmMORly/4QG2GpLBQBrguLLmZTKZUObhA8BlyonCokZcuDLgwZcWI8CPBcshwrDl48I2WS2Zh0rfu6+6JW2ep0fU+8SN4J8fjpPnEHMfhN1kQaMwx02rEIyZqAUQhNPvIvcFywgPJBelQOpAtnUpk6gXCnpLyVx24WTGsJeAtDVmOZY2JU+w87coAohs1Lni5rqXuUpF/n0j3bNGHV6+EZtQAuG8sA3AO8qY8/q9svBty8OQmlQWoRWjOMMvaacHDDkhwfwLkxrPib+ZgXLMtxDKynBIcCSpmFy4PC+aiRi0ri4QYTXnWKowXwMuUySq8IZqx6lSkTqUWVa+P/AH3wKzfur5Sl6jz/AORaizy/yNekfGVXcylgR8hZELc84Cl8uj+fSXhIbaYyw+se70hdiS9y0ICGoYfkIZzM1cVduoyKlxM0uJllpCr4qFmncZjERkm06Q4YyQB0fSU4WF25kuUQc4BMTWjUtQSk/Iiqm8svo7S4b1+r3+1Wblcm4xjLjgnRioMxUZmXS+EuPkmDNFS5cuXzZFJcGXwngZcuCw9uQ4kDgjmHAFcZmfEqJGVEg8B4DLhmVElSox4IMNcSBDBHnk1HgyhCF4TTk6qrIMDHzi5bHov0mDv3D72wZj3zZC/lGvDRKFDBC4IcwATMlOwdv8iAZp6Mx2fGYckX0loWQLghYymeiG4WEaLx+XEmzcurQ81NOQE0jAglQcWHf5xBEZ8i4Iw5BuVJpCyYjCv87TqCJBWGHrdRHU/PrA0ggq3X0/MQ6re+C4Ey0TD3/wBXtGPF8mYxjCgS0DcAh0lueZc0plaaiRKhbUt4DzEG6od1LerhPVJ56aZXhfAv4FnDwAgR9nUo8AEVwQYMvlJUHKi4jMpojlgXNHAsuDL63wg0Xr1+LNI33x87s8o6qPM+8QLd8mUOXEVWIlLYQFK1mYJ+OsCy2Vn/AA90wH0j06Q00mGY3abfn5cfAi3B7RrqIsOhKkuPi5CWsqBa4Qt0gm8J2RPBJHoIb0sqK1TnrjExotOqTIQfVhvcG6B1xuBdadn7iy7JquIGOhGKiBZuoPXBDIxyVYkU1ZPwvN7R14bEy9uGqxIahWsPAzMkyWZITq4UW8EVGphCDKFGBZBmpRxkDhXgSoexIe3dRG7uCqjwsuXL4XL8AuXHPCvAuDLhxUrg8HIPB1zKovFy576isPgsKqeVkToA7VFo2vTfyisUTtwXMfo9aYKpxG1a2KzRAGiNwvyidqh71jgLPTz6QB7n138pRiwsdxRq/wDkVndhZiWcRZkQOLA2Mq5ljJJoKyYZbJvBZAzNOFYm3IQaOnd/yIGCVFqXPaKqS/T4RGzXl3/yMqkY7sr1qMCl0Y5yTtxc2SzuKSyIMCOZcRiJ0CodmBaAMHzfo+0XgjKuKkkRcM2sWoOIysmSIwzP5QiDAWZZVLFQ3wMBAIA4MG1MPKusGgGXsPsD+E4XTweBz4Lly5cODghGCJyQYMHkRJU6xzSVBwCEeYZ4qJFQd4DjtL5sqpXQNe+vuwd4nsFv/JesofC/uzHDHd+3WWMh2OkpVu89esBUEFJS+yb+XaZ3odP2CA1wQ+B+fOLE7bnRG4gDW8RHKWoshbk6UVDGZlmaDHEQ5TGbl3aZ7gtxDknlSTOVLn5eCoZZUAZl6mzzrErPN+eJ0ir81qDgOujv5tOfpG4XWKfytQlo9xLlVKLshncmaHMGIkqBDXvfo+2EYcR3xeA8UscrQSbm44WEYPJG6DwACmALM4hbadeFcBdY/eFUuETxvDD+AcCucLLly5cuXLly4MuDBgy+TK5uEOXl46884bjqZMuBcqMGkZYnaVyAdOw18Tf0laNMfD3/AOdYF8tdaA/2Zuz0zAyir4B5V1lQUH1mTHBPJL5GG66+nlABiOX50D6xw2Fx7riLrMBljsH/AAjLCEBblVfOIqPWAkZ5lmDhOCaiaoOhMUIJc1GadbgEO1fGiCVBD1q6Hd/yJMpdk/yBMk+Vy4DR8Z3Z0+MGNPX0jIWZUtyyQEsl9IAAVMsyQchBr3/0faLgeDibRVSaStjbjU3AKYeaFb54ES2WzhChGOsZiC+Aqi7ljgKZfgeWai/gG0mCixealSpUqVK4uXLgweGJKiRIQhL4Y87TSDNYzaLHAWwSoOL73yucQ0+v55sqNfvo83vHAsF+IdnQ82NeF4vsfb1jY2O/T5wAFNcLXcC2Z6RAa0wEmK/58twLb1r88qgBRvfy/wBcToKtH0zBwNfWPFxwLPTKikzzFwtOEpDr5SoRhXBh5rlF9F9SJsDKg4JBwGlPXtBvar+n51iFLB18vzXxiiXReP8AYveP91F6XGo1qEtv5/2YUmTj6HBgir3v0fZsY8nMbJTiLz1sxXhmEFjUYlPaA6sFrjuKQbxTHdzA7oTEZiombxF7Mr6RsJwah43+EBacMqBcrxVGJDgYPISoyo4l8iMY8bTTjWMzeJwBwImY4DvAC+UHc/Nf7GxVNBr1e8qlb3XT87E1zlt7H52grDAavfcw78Y6QuBVv5/2FzRe8mer6fYIpJq/kaPfuFdn3esBGqrB6RFQywC90ZOKy1jt2zb/ALBb2LMkfrHGMOEZ+SCIuGlimLIS4isv3lk/m+ZNZ5v1ZUSVECKmK6yotioolOVrYfn1moFfCoFpuhPzygtrg8Jx8EZhHgq959H2bHjXFxwU3Y9Ax74iJCDW4VSjaYNxEXgu8atwVBOsJN8LZlJYuXAY7jdD+MARuRGBUBbuU7yx6wHeIGoJKlcdYa/gBi5jOngPAeCuKiR4GKEJUeHhQhwYxYprxpy7w5XGDMoIpeSaS+1/Wv8AZRVq911/O0UkTXfqzU0fnWU1v9RApFDALUDOITAcd/KEgvZ54YPTy3KGt11ltarjXEONk4LhHV3XnX7lr3thwdY8vUooHKLhpd9ZqWTe4rbfVm4SQ9fuRweH7soup59IPdM69Ip0gHMfzcwynS76/wCfWOHU7b18flUo1V9L0d31lBzh3851mjle/QPSCaIHSMPBceA4JzaPffT2ikUlIiMgUJ5Uubh3uB3lHWedErfGrIjqWBuKYhCoKYhdmPZnUqA0hXbCJIUJeVGYgQyjU2yeTOogHA4AsuDFZ/AsoUlYlcVK8NcV4wwYx4ZfAhyYzaOSM05d5twYOeDOoywc1WBr40S1UGJRbK9un1lwozFSXEtR6K1CPLUGlCMlA2+7813jIN0b8ugHZrL6xqUcLJJLH2d+hHh6nZ+/2hZtDVZb7VLIrx+eJ0ocMl47YMnrEC5sYiIXf6w4U/CKmWmPkGpQGsMv3zqmfWKKY9L+fedUlxR/kbegP5iYRXydymR6sSoNdT/E1KUA66PfLYLa6txh8GxFe4c+g/nT2Sm0oURkuXmcp1l9cAtjTTCXE8yZZZMMFcbwUyQNEftURAqHvBp58aNxmnWO+LWwCikbtlUqQUFwBTKHgDwAKl3/AAHBE9fDUqVK4ThjLhyGXGMeCEOT4AzSbTWbTeEWXFDEqUkjGNKR0Xl83y9Yb8r8+UIbjNZXVzXejv8ASHWD1f8AIAs5qAyuIFrcNydPw9ekdQM/n/YU3EQPOsvrC6Fwskk0Q7vl5S4lquhg9Xu9oglEE3LcHz+1xW7KhwUNoCEoWbfnmHQ7gtdyxix0JUHRf3faKHC/Q94xvufBCIZdj07+c3L8YjV1B377lSzRv8/XaJAaPzcwFC9a+8RVTHpAsTc0EtLwy2ROHydK8z6YlOkVQoogBCkxB5SvKAg6QpvhUPZaRSUleII8Tq4isbxS7IPylOtQ6sCmicd1KudLHoMT4ySKHUlcCziW6y/rDrPGoIhwUiI3iXiWs1v+BfCX0VK4qVKlSonCRIxhDg4eHghwseGCVjhrNprGDMcRZfF4i2ylip45+FuV+3d+UbFuuuvhe5RBS5mdPeFjdsqdfzrMe7Uefd9POIqrIgVjq9e0qhYfOXRgOvrsPq9ZWGiLEDX5UZOrhqvSvuxUrhROmTr6fWAQdhfzt9ZRDlCrhNMyKoqnvql9+JihNjGesNI7MyeD7u3UixMhUJL2Pjv6w3W94NXkZYXaUgcJQaw+W5Ra+tnyYUTyq61cTbKO2opzun+TuY8gcM4ENupamFU1MNxEM4M/uUdIIQ6ko6ks0xBKhMcrD2WvsGexrlJSUlZSPBHhjpPaVnplYyqXlpaLlpaWZmCY8FFfwAFMvHsCMeGPJwRjwx4HDE5J04axg0Rm0xiy+OsNx3ZK524NLQyzDDcpAInXzlfGjIdL9Ovvg+Fnqh8jQeku8uqPqrze/TpGYO3/AGHd6MX07vw1DQ0M736/nWHA53AG4986I5jCssEKNw7osXpFRYjI9ET8x6RIoxKBSAswZRys+ce+pjjOO+G3EdV0a1ePtMDu+0BU937ygXQg4eo91+sLeXAX9JnzHp8ohhXgv835zAKz5QFTrxV4Y0r8MtjiabiolKYLpFCsB1ftENJa1FaZYwsvAKd98pTsJ3CPSd/o+yS4npwXwVKZT4y5cuXLjxR4aJRwy+KlMplMshIcEwkHABAD+EQOKuKlSuCMYx4eBhDh4TkEYsvgITpw14dI+LdZ1htlj4IeigGbu96gEG8cmGWZduFuux+W5+YDGptMR6Aiolt3Ah5xMxMpQLtZcW73yfqAEYrHY9c3XSHooRgEC5IJRczwIWEGAw6MZY936xUPdip64jgDBz59PlmWMZH55qbSh6SwibZSF6oC7OGq6vn7vOGidubCgDcrA3FJcA6S1BVP2u4GquAIpaRAoRMYLAoafr9H2tSkTKysQ+3AAby3hAmsrKysrKwEpKJiY/jAl9ILQ8TCMYxjyHgPDEghweAXAhHUZrwNcb+G6zrHTG2R2GaXFIKowj/kr8uM1Vx1FqAsZektebqEqMU59YBrV9IhIMQIrAquIdZStQYyinEuQUYEfjC1sb74ItLYGs7l0ZuUgEpcai+qHljMFY7+kUnqkIA4F/GHa210vWfjE3arZu93+HadJCY/Uo0XEeUzClwzqitfI+nJlDvHuxDEUQdgbvXuxcC4VkNwoQMwCiz0lbUDNfOOvD4xZv5pli07CL1O6xFHd/V/4gWkZRj42MZcYwgQ5ZfAQcOYx1wIxcRmvA1HxTpOsNws+aXzdo/0AguOGY1oNdJnIfwjCm0/KirhBr9fmoUo9SKUe1/OKgb1EYUsLonlEu4XaGZYStzM0Y2dutz5kU/OX2sbbl4y25UEULlHbVfTUdLbEs7xbgxO6N9JXVjW5Z1mhlD5Y5S1sU+cwWxazOOpJbpBUz0lt7h0WNpmNu4CaIldPnMAfi39DejCAOv9O1Cc34XhjHghDlYsIcGLFiYhlRY6414dI8zwJpLzEWJTRhQUQGUrMqcsX9usqnvhfQHr11ABe8tjRfrHz2a1LsSagJ3K+sBZTEOgQFDFG4UMs7qOGoLaxBvMfaKS2MVfWV1mtE1mWckWtyvSZVsYCpVxGuAeso5lQ9fq8ZqG2+lS/GS2dOeRA6kC8ssuUdIITyS45MsaSwivSONymH8W/odnpPk/6eze0Z08vgeHheCEOGPBDkXg1DEiy+DjgFkeRhwSyJmCr1AISql0iV8yEiqu7huDcLE8o0uqUYHrAWEzodYAosg6gSjC7mUtgWRGMvrBQGyLo3Agbelx7hHRhRUwRvHqjbAvjUMblEvS4neMKE80CRNygvMrtg2C067z+rPX6v5zDzT9IgrI2XUXvFGo2zNaiu8w7mTrAvrHzytY9bEq+MxtLg/jL+h2ek+T/p7/ALo7wPDzcuXF4b4CBA4UWECBCKXwEFRfA0jNY7m3FhDhBPWGQ7l5jLisC5Zdx1ZUYNYMQoBFZGDZqKuiPkohBwe3f3QZ1Hy+kQtVxLFVH6QTEBlBMy/t6e6ZSsRLZVOJc51KLdwy7RsojFO/A6kC6cHolDRNZm8MCsVKTUV+9+svn64+MXL+MRQYK4ay6g25YhqbzLdEs9JVdIHQIuyK7xNkLQFNd/q/odnpPk/6gVSHgeFjF4OCEIseTwzMHCxjAuGue024MIQLxKMXDCENG40lCPnk7wEoaIO2aQx040p3wzDO0r6x8iiEA9JZAAizOFSgZZU0i7Mp7QJdKukeyRIEB1ZTpGm4ZmdBKagRjlhr3v1jQ+QfKEovZ94+ktvcW3zjTApuPlBGYHbGCrZR2TCo1LUsLgtWmY+s9Z+N5v6FbIn9RARlwcXL4WXF5JUDi+DDg4uLggjFiwgTR4J5ixgQZiXpqEQeDIika64l8AWfDErMsMDEesDlUBLIrq4FxlgQiDeWFogahhAWNNqlw0OMbhUW5UoltJBXBKbtymqgj0h0DM7kbGII6yxL4GG4Ev8AP6ytuEft9YwHq38D/sHdrUEK3C46pIQpWJQ0RFZfRATDmWjUtUYZrUDLl0xDnrv9X/igsSqReXhjyECVXK4qEHCxzKghgixcDMqOuDN+BGdeEBF38KL3QQ6DzltWjp2P+ysTFkCO0j1IUOxFeuInAxAs5lTRBOZ3My/TEcyrZiN6hUbNwhbi0qXL1RMkLbgg6jcrU75qdRioxZlceUpEHZ+0E5A930mN0Th7LcrjWutzrZMrDumC2LbwZ3EjZKCBM1EWpTk+UUveWTVk+NPq/wDFE0RuMWLLlxl8BCHDL4HBCLFhAgVGLwIONIb47wgwzGAIRBmPhVFUYqh+PSAT3Hp+ecUaYOUGZQ90zvbZbvCpYYljbEdCXeZRKEwyipcx0lVZMpV5ldoEFI9k9ZdSztKESNHUxDZ1gPSPmSrhGHWIQa1FuSK6wTEApm9EbbnUhlESwwOjFTRG7IQZMdfq/otFeP6glQ6ILB6Rtrm48VyCLFiy74IEuLHkR1FiwIHGsNx8DiFxjDBAwJfhKaWXcXXpBtChliuhU0BjXACjbX1iNCKbZcBEE3EqCyllPVLJVwInVPWV1McdJct6QFDuj0I4ZmwiVm5ayyaWUG4riDbFuUwpwZi9EMsxbZHseBRcyq84tqKJklyk6z6v6v6ElvSAPS/qFlz6RPNJiLGBwEqDg4LHggeB1gQITSPGnjRqbwyQYiV4rsG4tZZV7itZMbZgJLYZisX8JYdIsxAOZTvNRStS3hTvLJR6QgAYp0jb1hfLMQQh1iV0R2EN1ZiNME4QTCKGWQQpwYjKZTBROoKOJXtHpLcVmCmpfrKMCcrPOCXGrAIDF5/V/Q7PSfJ/1CSsVKFOsGblcVCKgSotRbig3wIHCxhCBLqKblQYlYlxc9IQKonmdwY8R0GGMymBFDbOwqZu2ZYmJmB3l+ZFMECHnGYl2VLS3AjBMmJQ98v0lrbwuaSYPEiuaY1Vw26RNShyyt6ghdRcnSZblMKOJ52WKvhN9GG4EA1DqRzMwupcs7S3oQPxPq/odnpPk/6oPJyoHFQ5IvISqhnwjCG5UeBCGo6ixl8dIMekxBIdPYYW4woJd2wEYovZL7QzCA6TDFy5b0JbA6qFQairBBUW4J0LitGI+cBdTzsDIxHGEqFSzEupluUsK2lNqmRWkHFQLkgnpBekoW7xLHDiX7S0ljhluk83Cm0Xhl0hFaI2TAev1TfFHySeSRNaRDkRqfJJ5JPJIHfMKolYTySeSRwiBVPIdmEjjat4a0dS6t1w51XU8knkkMvw1FvSeSTySGXzBWiVgTySeSRMtI9zlWp8knkk8mK1zd0ii6hz0iVjxExLaTkOVqXFvhlXCNuGLGCBmMYuAhqMYsMzCZkYz1gmmZj2Hcbi3URRslXMEwm5hG8J5EzkYPnLNwVqKGVl4rv3wGhUwhcJeCX6wvplGneYLWJrc3KC2LAuUNSpQmGoZiBbELbC3pLMaQzxtcy8kZQdJfIjiCNRduDEQ7JRLJQ2yxA9oMOT1+qDTctfkk0+BazSX4EkZErmt7IQCcpOQRe93JVHEYEEuDVeEU1FXLw5Z1v5HKQ1jwa9cK+SQ1jwMIB5JDLiz5aKeBJDiHglShkZDYUitb4qHDDpMcK8JjLlxgSoGeGMrhtGMYEIeACBiWAdYZjn2SEUS3iqNyltiCUmHUFKPWANwQLqOGJZE7IsMRRe3vYZqKcLndUx2gjUYGJco7mnEDvwVOxi3iClExKKyXC2oKXygShi4XavARYFwwUxK5GS8PX6v/G35lU0yuXhYsWDwOWLHkRYp6yk6y5SO9QJSMsx67UAKeyV3lXEqBUAXMozLFTBV1HC1moOspUQ88p1g4S5bLZZ14WQDSAdeDaOGZTJKvUyTtDnEvi4JdcBNEGhUS4B1gNETtOlc3KmEqDFly2bjNpT1n131f8AjbubWLJcuXFY03EcHlyuWYtl0ZkWE7CLNQ0CLQJuOqJTwmeyWdIdWB2TyoH0hVMo9knQRRuJq7lAtYmQwQjdXBWjizArcKQgMC3L9S5a85mC4sFQ26wUoiblsFlxcGGZaggzxce8aLZ2wbeVJKPWKJmCYoKYpwRCscXB85TuDUJwd/q/8ckLcugvSD5qDxfWXdSecQW0NuEwJuCCODJyPCEeXAOko6T0eG4vt0aI53N6lX0j5zBKO4NQtiXLPGIPfUS1FIN7hEG4FUEsyu8ARUGRW4zqWRMKtiLJdIKtm4Az1gWXBAZu/pCFuZnsrm4BBzQS7hiOeCo0LhCXri5fH1H1f+OU2Typ5U8iUdpXgvipXF+G/BcuX/BDErVqXWJ6wWwEwg9iC1D1qMWdx7ZdxxAWAdZRqUiHPEomDMCK0lzcConeCJbwF1YF5cWMCmJVssON4xpBFuCo7O/ym1cyjSXNSyVBEwwWLDMaampcZ8f6v/cfqE/UJ+gT9An6An6BP0CfoCfrifrCfqCfoE/QJ+gJ+gJ+uJ+gJ+gT9An6An64n6wn6AlOvhEs/wAifrifrifrifrifrCfoCB6+ERRFweSfrCfrifoCfoCfqCfrCfrCfrifrifrifpifrCfrifrCfrifrifrCfrifrifrifrifoCBiE6gf/vH/AP/EAC4RAQEBAAICAQMDBAICAwEBAAEAESExEEFRIGGRMHGxQFCBoWDw4fFwwdGQsP/aAAgBAgEBPxD/AP3AMs/+K98F0hPxP6H234/832X4/wDN9t+P/MY8j8f+b/uP/N/1H/mQIr8df71vsQP6jPEfjv8A3x/Fh2Pxekfj/wAyRiHt3f8AXHgRJ3D7aC6h8x/x/wCZ3M2Ud/8AwaJunnIsdXyb97Gk/FiXqf0Fw2V9edzuV3i2PKFnNLvdrKettUAner1CfzpZ/wDAG+eJQu4fUYbcP38AQrF6afVaLEgrLAuH+7n9DmZK+dt8EOeWEeUPEZc7W8XA+J7PiMkseM8ohjaOE/KIYWf8+BumL0F3jK73UjAYUXRB6EligihPEebTLhRzP6Gvu22cGwlt8AMs6JNLtcZ7u8eY+KFrGbJRMkBxLpS5uIseH++atWrbal2rGz+4vjWBbuhnMMfvdzyA5b+8dUIDoh8LIcmmZvgOSyITznNDtAhIq9foLLHHE9njQYx4D5jwFPfiOc3NsODYw58DeaIIUieS50Jvk0/u+LbvlsfoYXEln4yj+16QnqOgXqbsJdxOLria4tPFznLwQZp454AeDTxvL48o3Zav3/Q2bbebfBDGMxoe3ev8RLiWwAErhzmz8D9n38R5vdybdG+FmkCFIjkuRahh/uYmKYsJP0Us+hDKP7KeETxc/nF8LYU+MgPUXpAeEUID6LdZdhMj48ooBEW/klNt4MAvXGD9Bt39Jd/ElOjF2O5w2D2+I5PceByIX2ksbOI4bkSWG5cSGxjDn9vDb2RAyW3yb+hlln0lP7JlHYA74cZAQUKwkMoSPpf2ZVmjzxEhT8Nnx4sXYLSzWS2Z9Se/r22+5dWng8FA7OcO3KOvHdmF2tKLcb1dMvF7syEi2G6mN5EmcP8AQZZZ9Ano8JE1P6TSJ1bLM214bb+i/Sm3w/2LBHUBp3AOLLB9x819yz9RXZncKPMvUMzwmMr1Kx9GzcZHCxRbttTqvrXLdlvk+I8iGzkcS8p1MMuJczitmK9jwDxPd3LjPDYYXIie7nwxm+TT9LpCENgjCc0yu5+SVeZy6gvJAHVi9RvUh6iEfH8n9H8kB4fCR2PueEC/cmVpjmI3fK222+erbWHxr1Jn9a8Qel8OxHhBXyJWH4DtSeJJbAtqi+Ih1AmKz9y+py7ji3ztbRiCEXLtbGX+R+tx76swgeEne0c7EeTZy1ZeAy2AxukuYnwRYDA8D48u12W8+C8SYOCWxwvhh6K7KR2x+29iJ6jrFq6hOo7uRqJFm5BkchIBg5HAQMiH+L+H9CG+HI8Phdcmd4yS5CevBuftdv7/AEMxb9R4GGyZ/WY3iexjcEF2iDwDxvk0nm3fAZ6jJBYX3Jotj2fp0tbAlhYDbLdsJagTr61l20hc4hHVhzqeefISzl4L1DLbkuJcwBjYBhLmfhs4eLtciHG6T4DZGxBgw2IJDZcD5s+IaIGe0sI9XWfhcy48d5yXi/hfw/oQ+l8dI5ALaB6WIhj8S/I2wz4ZthibfB9Dokxz+qOBkDgjyK26sWZkiniCUo5trL1FDcJCaKdlRn6S38WCwWzlu8GMAjvJFY/VuW8cXQbIc5g5yOO/DhhczHrxL5hlhngwnzLeGC5ec3/HV2iKL2St4nLxAGE8NvHkXwMMMW28W+44NsLFxT0Eoa9c8fulxVeuf3lxPnx3l4bLfxP4f0AoM8bb4Ytdyxl3BUpHgr8jNsPhk8EWSW22+fVp/TbznjDOt1D4E4uLiSR/PRA5LhMcxFwnLzbeTz8Ztt9CDFos8MNbewhHMbwQVykcAkqfBOfSnLObg6lJBzkHQ3TzPwcR1vqYn+W5OQ/OWib2SJ478MuHc8xw1KfN7Ls8HLbPiXhs4ePBS2wwyiG25NriZZOC6wunSNPgn+dshlz47SlMt/A/k/X9keH6g5uDhuXhZfhv9x8bD4bPk8pPEPk/pzIuGHzDaNfmBx1ncLtZ/cBAQCBNfEWRmnDCZtj4jdp40tPoRxk8HnxDCwtkq3OTARt13v6k3nbAZ6uHBneL7L3zBpljXJYA4CeDC+2zu6Pil5z3/wB/9XRT+d/79o11DKfM+bePBcy8Wyh5nq2cPgstsMPgMNvjgtHw5M6Jzfn/APLnU7knbePEeZZZb+J/J+sGscGeNltt+jGyk8XFjbjL8jPjbYfobDbdwjiHfG22Qx/o8Vwl9EtlBLZh4MWwslzjcQ1aWQMDH4sLMhEMnfHpcMybaeSynjyHhZsa4BgnEkltxmfqBjl2T2cwfPEBeGPgkB33PHKIM8O46X2+K8Z/Fx4dz3J03xUPHgubeIfDeYeJZW8ylnwMvDbY5uNxW63XLgALHH/v97pPme0f/sTk3m31Px4/gfyfrH6Hwx4DWSGpLjlydEvB1W/3HzlnjYs8jDs9f1LijYmHd8XW2Pix6lpra22oULzutuzIMlh8GMkkmPPgfHL6KzjGOTAtXLZ2xGCkU82W0R0PpyFOC7XXUZHfEO9w6ZPWMp5v38+RcRtufuimr199kj4dIOY3uHjLfDtLwXiXm3jwfA+T1sPj1nBmG5up+0HHHjyeY5Dnw6YfVzvEMOT9v4fqjX63xuTC5wSRHJcc+Xw3KfVcv3GyzxvhiJiY8ZHg8jiGfrk+BgnZI4EhJ6kbl4bbbbbawyHLvfiNWkatfK5yZDFa+W0lHfOd7kwmROOKeJuSBivkm0fSP2XEBObCGbzYMN1cXK+yO8hnFwuzPArmyNev4uDzfEjGrOT3De/DvLwfAfB8HgPzd9RFObpNYu4x6beY9bLZcyDldOJY4v3X3T3/AAfyfqj6d8kGpCyOWNZZfxHMxLFH+w+AVhD+/wCI+b+IX2t4fHfbg8x9hfe/i6Vnk8H0DT+gfRhIsrbxXYTDhWvIqa4uZCW08hpcrfwoepRKljc9wWlsPEObvcTcfiTjAbba+HFwWB9JPe1YabAHZazqOfD7SWrk4z3tzuV0QbOODudPPX+4hxAXP/mTxeT/AGyR59S108HievBXSfEfB8MsFpY2xnck6jY3OJc5ceMuvjHOI7xDGNAzS9vci8JLBgwuCBuXrfb+T9Q5fHvy7hHOrtfDZjOCxyZbJlcjyLdwv9jwILOoPix8WPiRKsfFn4s/Fwi2P0CY/wBBknstHwa8iU+jHxXxcLkhn0/mkhvk8pMn5o1JaFhd/A+bSKdW32cEsIG3HOp+hxdWS9ToYQ9h5g72MRrxftH3nm4n3jXJI5y4eM2Xu6Jy5f8A1A9wDLu+HicJ1AGXzbk+B34fJnwpfZjwD3DecumTxxByJmDBnUagwyJ6jBh44lxPnYVra9X8D+T9Q83VvNttlO3pJwy9Q6EI+U82ZFwgajpIwfA/2rI7XGurEhNgTqcSSBuTiy3zlltskcf6DQre1r9BBD6QOp8yxsbhExtvDuw238WEWFh4DUeI+IV82gnKjrsnk82Jz7Sq+vo+7izjgt6QmzeAyB2jk3ws9Q5Mlm3Dm5Ox8WwGhLnUuZ8y4ut2lMN1vcc8QsEsAhik+CPBD3HEYnLPH+Jz7o4huRxanE+PHtHhv438n61789fg9Z6hZ6syZ8yCcA9MQJacZ8iBy/eCHguEkYbx8Uiya3ntXyPB5Jj/AECKiF4TxilxYsLCxIWIH6BlJMlZ2nieZPJjPBz8TswHza5uYllJxxsHk7Q3J0Xp+g6u+Iw5ejY3rbk5d8bPgnchzi5Mhwt+J3MhyW53fJcS4u0NsNyk5ungBgN+DfBcK7fJcZcDbZzbrSfGQhxDsMlvMuJeG2zfxv5P0yDJ5k589UQcEGuEBjzBAiCMtj+2sOSTwEd/7x4WIEu2lNMZwnZPCHTfGXVsNv0J/QcOZA+3lA8t+pmySWn0UPHi5/AtJLbz3U5yk4h3517D28LbwTMsPHWWzRB6s86pxYdt11AA1hw5kpZ4WZuBlpt3l0SyGe9ndrjKXMNsM3e6eD4u42A8HgjwVpxfvLepfiHDyyIeZy8Ntll/r/k/T7R4fPVdPEZGcFwUWYkyRosEvcFHeTz4H+55gnJGUNuLC4YCwsMjB1G7P6DPf9Biri5bk18bd2/EpTwfoG4RLwbTDjzS3efPidR5ed505PVbuy+E0ts22EaE9SZx5EeLBrsYN9RptrY8dSyyR5gy+IeJ1LsMs7iLHcpW2wyz9XSWYYizkQ8Tx90Q+HVwljkOHhsM4Zyzthtl/p/k/T7RMHksQ0mcHzE4cvM+kmKPGHcnmIS20Ezs3LxjI6nwqGxh1ZpO4NI0Y78NllMtnVnwtfFjY2NjA+Xv+g25w3mIYlngYx+lxDxdPCfROmMvIrZ68OdxZ+f1HlcfMOFXNxXEXru/GTaBGKRz58nDLHss+bN5vcdbc2tszm/N7lDbbDLKPtaS+G2223aDA/NtlUDHZ6bQ5cXlE2R/eddgiU6O5B1K2G2VvgY5bbZ/6f5P1GSMPxDcWSsb3PTodhGIfmz933pnZ+ME7qwLOuviRTy6sEqCJ6RfBYK/ETDbYkF942SN3bBw2pLVZ95I8JU+GFh4COP9AOOw7nPkGMf0XgSu4b5DKPFTnryCEYXq7Lh4HV5czInvgPGzGy4uSv3r532jLUTD7t5/j/7nPm7j7+HjqZcyz0h8Bttjmdib03Jnqcs7bbYYClKcinMIcczp0ybzs/EHqD5uBzDOSnb+LZ3aXErlD4K3wLKW22/h/wAn6QVkvcLweUUoZkLs5rZ8CMjd/CDYcWOVg+tbtl+bWI0kPUn6vsQ4dJvcuDEt1tu6PAp9z+ZAss4S+5A21ZC8TzjUWlmd/wBAW9F2eBrX6DZZL6CFPgYTxPyvUvopj47PLdfljkwLk3HPGGXIRjY+y6m0Xg6jN4j7XLy9Q83ds/aVtmHGXXEMNtsdbPWyhZSzu3I4G2NzZ0c7MuzDG9kyNbXP2sDIX3b+IG3vX8WAJau4u8wR2wjMbLqfA2zPl/6/5P0uDsAeDUItWrcM2BRTsj3lv2SnovQS/hR1PpnMvfJHJDdkN4tZjDwQPJYPgPoIxwTLQhPV9uKHY93tFl1d39A4lnR1K2x4222H6An5DxHip+C8SlPmEIzdG6PAeM/MVcpoTBj4imVEVa8BPEHS0cQ2RyEEvqdTIi3YYbTC3BG4E22WUnTPiB6tW1JhZ6QWWDFC4W0WQfdxLV29CDkttHi4q9GMNgnuye8Lgc9WAf4PcHF90ZMOQvhGxgfD9H8P+T9Lvevoyyyzw52PPu3b/QqoH6A49kfPx/fBsQIJZswbFiwLiEiJdd/oBx2wH6B5dvpXX6KYwungrt4Dx7LYY6eDq86vEJseQ4x0bEV+fALme5UMd2Www4nyrZS0tsMXNzI5HVwslLaPD4QW+9YdEKT2HEd5ttrq05TmfbPHN7Lk2qYa6y40gnWedLMvpDPAq07JifYMmtbMGxYEoTGfHl6tOyx21iw/w/yfpDjA9+LFtttsXFm2fUDPDPIFzc2P0PNlllk4tJKxIPdn5nMv1Kz3H+i25jl4htsss8Hl2/RWmMIcWQbZk5tLAnPN8R4HT501c3ePEY+Q93m0mmODSWcrbfHK58Lckzoj5wB1Dbbdthz4fvLzpa9cWb224ZPwtShjiPdobd/CMCbGlXBhzsYRwQtyX8Gf/dsR8mr6Pg/e0H38o/8AX3c3NratTyEhZZY2NjAwMP8AV/J+rrCn0A4+IfHFj6AMeDNmzBe77197xIsWJmrXxb+Jj7196W92vmVtbn+mY20EdfSx5DwEPHWcvAeA5Pjwd7R8HDbrw7MN8Xp88Z28XEnm7/RuOmdGz2wx7cuiGxIkJEhd3QyEh3SWQxdM8nJt26txYQOD4MZsNtx3Le25Yk0MQRITLi+1t95ZWOtsfN/vv8+W+z/zY/FpQfXOH+bl68Q2Xbfdt/fgz82fmxZsQ/0fyf8ACFiMJMfWeBh4Bxb9FG6x8A55Bcx3wAHhd8tbbXj6fPdUOfB1mfPhV5x0/bAPQ1ng/cjpsOd0w62cSE8w+IMeYagR84Bb8Wy+AxNqLb4y3jm2eHFyLg5EMbNydv3vgR8m+y1bfvL8s8rB9hIbZYEZ82zi24nLSJwv3RuX+j+T+w74xEHv+zhi2PrCEIQg4mU7naPgPH0AHXzI4WNyscvhDL0+fWmEo+JZ8+A5cucjql26EPE8THe3K7yRCJXu5blbbb4NQBMXfOcW/du3D7t3iwYMa6ley04ETd9ywLUu11PW/b+PG4OCyR4LHneLflKbjOOr97WdbPlsuDkLVcsfK3ep/wCv+T+w937X+n/Z8n7wg08vk8BDfGbZ55ru5oRwl4doa3PDC47lubatxTidf0amUXExQnCAXO5S1m1AYzVz1B8zyts8ceOEtgXq6mQpvjrre4iOPxAT7hDuAbl7t846lS5251DnixXJzHwids66le1xd27nFvokQ56LPH/3i/Yty5D+0IYtxZvEHxYe4w4v8w/a9AXfqePUfb4Pg5tzzDllf9v5P7D3ftf6f9nWtLBmfRkG+A+M8QZLnk+S5W3iDieXJDW0bPm6LG0Ya+DIuEXDyvTdPAuJeJ3eYD0Sp6W+OzIeL3rL1dm2c8ziZuxNuAyWxqDwyDhuF47/AMyOo+ywI4czw4ljqXEYawzm2+r7yfVKe/Fy92rtuHjbg5JddWwRz/B/Fjg9c/7ln7X/AN2i8u20dizg4IDmTpGuXi0Pduy+1h6MB0g6Z+Em+/H8n9h7v2v9P+0Yk5eQsYP1XjzyXJ8eNxsPC9Y7ueyJ8eBc2z4RhLh+gdU8TxMCZpdyc6fv9GBw8yc07j2tCazfGWiNYnBOJirZcE4lHgt9m69ynzLfNbR8kftLPwLXviNdTxYbq2m2Ejgnv+Cwr7G30+GP3sx1B8wsWncHzK8bIOB/ME6Lh0WDU5snC59pOoMY8D/T/J/YVo/9o2bs9NsgjUfTfMyXy+0N83mE/Ho2guaMyxt2eZ7isLhnu/JPYJx8LgudxI8yrX6EWHJaGktvnIPBwTcbFxepJ22npK13mW56nYxaW0nsZA5bXUtfMo9yjt4tciMPMl9WI4XKedniiHXKEWn0fzZDA2QmZOR3oz6LW8x2GwXsWUuTiwGyTV0u2xzjOnpdPfj+T/hWVNhZHlJeUOJbLw73fm8pc8+G3OeDhHlra+MYeZTYacih2DmHLeIkVlVfpN7lG2g5l12zfA7YgBMT1andusBCYGBLgXM+61GPUwMs1tnw2d1uGcdSh3Gee74Xfch4LBILwHP3s8UftKG6R8qT4+bkLWwYY2Gc3wXJhGFx7njqGxbauREzYHu4sf8AcDnW1d4xH7P+T/he3N8PD9IJmS+VOXY5Zt8QYT8D5jvhGG2Z4u1rZSwuO0johDkXEdnJEfNcR6vf04tS13Tq778hHytySS2hJ0EP22Zb6Sn3ancrfHPu9C4W5xD8yyD9oh9pFsfTO2nBGiO9Ll6lPcfZurHU69Qsm9wem09MgkrpxbnbGerXUH4teocxYOSC7f8Av7wDwsuPn13+5/Ycc2Ef7QQjvTbF+nQ6ll9E5zOs8gXB5XvxcU8Fj4TvgGFkeHtucYZe04+FuWHHc8vP1aPOQQSy271Z8sAdWMqFHqHfchaHq+BYHclhV+1p6I592HzYSmc6R7ITeLoI6xLAsesoWq8RAvRBlpOvFh1B7S/UF0xrsv2FoNObd+0F3BbRshPi+RvX8n9hBp+0Qz+P7SwJCWfFhFAIc8AReDeXfoO3C4PC9bTx5FgWpcrbxLhcdtDXxjL2lzc4Jgsyr688h4fQkhzxffLIEXMo4t/FqwO92Hrw18WNh7mEuYXuMPUPRcpFn1NvRL0LKTN4huSQGtsDbCcWMu006QlpbEeofZYTktemPaw53iQ7WfUCSBwHjMvZspsX7fyf2Hu/a/0/7VsPqDwzMvPb2weL2WVhcWeFdY7cEdSnHPhylh4F1ua4p4h7ljPMWFbivr9DPHB3cvRY2dOrHdwkE/G9riA5eZZfiLmwHbNh8arA5lT42fdg6LFkaNyOPEAukbuQx7i7tzgIudw1xdg4vco6t5l+y78Th14RmcnM9cpZMEWC4kNg+JE92HtmY/t/J/Ye79r/AE/7VzlxFwM+C/RR3YhvjyhwuLwOOvi4JwXDbQ24o5LDxLWHPgOE+W7x1BtcyVr+ga9R8oB1bY8dWb3JIm8mcWWHtkJecEzN7gJG8wZ1be4I7yvsSgc2/RLwEBzylk2HLZsYeLBKri4c24OxNVJZwSvuU92pjOZA5ObPzYMiczHu768Ne0G+H75vycxj6jy/t/JHPhT+x+b9j8wWufRocy/sfm/Y/N+x+YjfJFhDBfsfm/Y/MsXqRY+SNp9mJIyX02I84t67nhT0Dl+x+b9j8wu/To7fF+x+b9j8wu+YK4QQX7H5v2PzJGuSovLWT9j837H5v2PzNZ5GIWbxHs8Cn4SY4/Uxvpsz6QHrLtpbx2MGS5cHh3W5PGMLgeDkx24rp8Thz4DhPi7XBlCepR+oYNz6uZN7uSV6jJy+70d3JxdBgXgLObM/xJ7NynOEOOvFj1OevC4dcSc83fV13acFmy5Je5bVcuwjsTnMkcJjjteztPHjeMnH3QgvcDiwbzISHS2fhCOm0sSE9Fil/My4N+P5Icdtl8pMf0E6cTfokhos85PxikfKRrCafz8nhbMk4lXBzPpFOpV5fDou3f8AR5kHO+gtRsMeUg53nEEEj5SBNm75DzGn0SQTgzy5zDzGzM3GNkWv1EDo8/QC6sj6G+E8Sy4raGy74NwuCW2a+DAt5nc2Pg4FwXKLk9S6nHuf0csuvG9wJ+CHWzb3Ie7fQnokVzY92wO4+SAu7QZw/wCCXlFkl0zbH5sPcUm2W+kcnMjqC68L83yIM5uXUnbQxsZZ3DDTuWxecn8UvhchKk6uy08ZBNz+38n/AAwsc+Zy0nVskcPCk9nep541P0AoyfDPm7RhxYWlylXmDLQgGFh0uWVXX9NBDvU/K10uXRZ8rk1NjXAeF6u0z9sr1I892WBYWPrwxk9pPi0ukYlw4nI/K4K+/FnjlI5pfdPySh3mWSqV2w7Pdl1bcrruSDiywzx45sT/ANf8n/DckQmLSEwttreTbCzJB3HHExI2Bdu3Q2Wd2juE8t2b/psziJ8pM1vX+7oiOgf7uoudWewznt/VHuZZsYSJi2HqWwSkmNpKSHUz7s2x54uTIq2GDqQWvEDLEhc2Q4bEY7kLxCS6DojTIo57/HuZb46MI9QG4kECdIH3E7Dz4yTPVr1ClTvx/J/w4n6L75+YD2fmx9n58R66bPp/9/zfc/8Af83YF0iV6P8AfgFvct1QenfeXbOeYrVra2v07b+ueEHccEzzwQIyPcGWDw7Z8dwHcfezZgvUm6sYW71LYGyGB1F8rZAgQc2WzeTwwZO41hdXSzcDP5vSG+5z07cXFlgkZ2NmSbcOLudI0zrkh+bCSzx/D/k/4cKWtrb5Dzv07Z4yDLfo236Ms/WXO7Na2y4k9XKT5ZzZ/bYPaxx84PiyULX0WndqAaXOcS+LB3bdS7HwkVnGnG6Ak+49t6RkyyZwsWzZiG6X4kOkH+44/H73SuMBk+Luy2Q3J3IREjXdwzC/j/k/5x/7Rv8A3Df+8b778t95+W+8/LfeflvuPy33/wCW+6/LfcflvuPy33n5b7z8t95+W+7/AC33H5b7j8t95+W+4/Lff/lvuvy33H5Zft/lgPf8t9/+W+//AC33f5b7v8t9x+W+4/LaO6/LBCC5+7erX5b7r8t9x+W+4/LfdflvuPy33X5b7r8t9/8Alvvvy33v5b7r8t9/+W+6/Lff/lvv/wAt9x+W+7/Lfdflvv8A8t91+W+4/LA6U/f/APvH/8QALRABAAICAQMDBAICAwEBAQAAAQARITFBUWFxEIGRobHB8DDRIEBQYOHxcID/2gAIAQEAAT8Q/wD5iJX3L5VoGmHLRhgcKhEixE2f7igVaDKsx/u8YdaH/F2ebB8yxzqJg/Nn/BmBVYh0wv8ANcuXLly5cuXLly5cuXLly5cuXLly5cuXLly5cuXLly5cuXLly5cuXLlfBKIM0Ws4r3krV040y5cuEhC0UB3Zn0dZZ8DcuXLly5cuXLly5cuXKqeUI5yLLly5cuXLly5cuXLly5cuXLly5cuXLly5cufl9KrC7u8VLly5cuXLly5cuXLly5cuXLgyeDjauHvcxzdUCzRqGA4WBJdOIcjjude8alHvdRRQpLKDGM+cKxqJFcy1wWtHT+FNleAE13Fbq8Ybh+G1rhZQwvo1FxphXtQSizY1w3/gqFqRXMDESzXw/wBQ/wBM2j1APc2donKip4m18iPIn8T3lVVNFo9qiHy2rhdPJR8f8DUUFr2lG9HnbZo6qDW1z1j7hCiBbQlvmf4YxgYN3LeLHt6QTa2DJAW8oL5R/kdf6WHLup1olgySWWNVTp/Js3NrXCNqjR2V72000puwSV2uGBWpq6iledh7Xcvakvqy6DLwrrHgY+RSlT2oPrAR5fMOoLB3KJZO4ISXWYzWEDOG7uMdpuVd5L95+kg4PKADqzibvcfVz8Jk7f5fUegpw4UB0dqevSVbs1YC3orXpnDFtASz1qgvVPWO2CiK45ldWDT2gAAFBx/xlrX4SZAFqaAgoltLqxRouqLe11FxroGOqLQdzEqHKjEhkDB0JQ6oavKlZ/pSfxE92aFAgutWnzP0kCQmDdyqG8xX1L5SxtDbGhZ1jmtFxL8Le1QWJgN9owDJu8m7xUY7Mo6K75qOz0Ngo6dRZuychVff+Lx+g1dQWK+aD4m7sJjBXysoIMOijTgwTRi9fmQe9sKYPW9ZSmzpg9ruPXXAa8FdL0EPNXBTjkebBbvvYTtMuaWrrqy+iInZPXnwOFbK7KV9a6xnBOCkgB9DumbswUzcAihrA7Lrrpr/AA/cdfpW5zhp1D2KV3IC+qM4AB8i/EvJvroynKvGGr6WrcCpPtkAaxcI5qa9dCLfOEs3m1SzpZzWnUKi7gWroYv90HoqGNmyVk60/ATTurd0G15fQBtlp0cv0jqg1rCXvZYKstdoaGNZL6n0aORahl7rJ8Q4ZEqIFfYY5GIuEm4Kl9DRACgp3zwO+Ga2NOdEPf5N6ZUg6I10ezK9O9Rk1eVEVGBdvajnDDLJdP7RHctcOKJ9l8fyOv59abwtBhZQswbUixlQmKcmVBq86g2WIEVRqGd0irYLd5Y4d6uAnq8GR2NXO+AhHNXh1iivlfKLAdDOcGN5AhO6yXrbY8EoSEDB1VHdW3CQTxtchYzCqogCNODASvlHUIAc91qyjzNxTB0sV5i6pjz9SlnZIzYrOwT8i+1wTAeXB/4dkuVyEcjVXiRzfhUIoAhACAZXVvCR0t6xVpAPDWj3UHrOG6kp+5Xlj2lIUAbViXXXGjQjivpei+nHqXPafVo7jEiC3c8HF8ODVwAAFBoPRhbKgNd5eBy+OUhYRM9oxx+5KWpCxM6uVdM+zD4Hgoajxj4n1HoKbr19cFwO7U4GDl43qVjyjRfCrieFJLT4cagjPB94brPx/GoFoxONODAQEyygCdER87ZgP58wqr602nZjychqGBdR/a9LSdWMfeBo0LWagSRCANKzU5H2Q0DgTldbEvWYo+aOLcBcZwnc60Bj3s5WydgJXRI799QQS6e5p8SnbAN7A8C81FbtBj+/BeL4g1AZifUEaPAF9+JXKjOnzV9otYKMKssrRQT7aHqCPajKzCqogCNODASvlHUIAc91qwSF2zpBgdDleD2JvOzE/Fmb85cEGEoaN6rtPgMDJQMoL03Kp8OOipaXNVxrfi35jCoAtKs+xFVCPQmiQOEr4UV/Ea8fFK2TxYfESQddsSqCANqc8VK5Uj7NhfcIuEY3BQbNAs1hHRTE0g43jAuq/wB6JnO58wqr8th2InOQoCnQFfOyfD+M1L5q5iz2Ojr6YghTeLpqXcAL7puYnuIq5trww6YgYZrvGiCogqJkVD4RK01aDoDS+h8WFAGhf3R0PQKAD1ewebr7woC2hV9Z+o7/AMsTx/8Aciuo91SP0WH5ECoBoCBtr2GygvekPYg+FITOfb4KPAQb6zGUl/RRYOMndB+z0H40hQBtZklgC197By9hS1C2uPMLYrY3rL4TVvjc5ocHkaOQvTMOsISBjSS5pNj7eoNVVrXWLpr4jThXuJMqyFR9WrIboDrmiiCFI3Sc+lyrXWuLjMSTPSEk+BDnGNoBQBwRbzlcUK+iadQ6R7bFtA/SQLPCw2bT7PtwXiQuti60PsURBscwV+wIX3eqFUG9i37rCMUCgmDEChoMnyKlyZAaWTyVBgwPVKBPObys/YdJ+/6vRDtzUb1u/Hh1YmEeacAdV0ctEM4Wbb1V5VtXlYWbIvFoxjTHih/H8jr+dHtAN68co6mc9pY3YgtrZpMX0uMNgBwHuaTy06pAaCMI2JU/R9UwpdFojpkBcCknIgs6XAolVg6sNDPWnHpb1jLtveFT+ZXJYBabK+iwY+aoIoA4IPFGOa1o8IMGFRXiondAyypVylhXkEvtghGSHOTyrHgIxz5BCP1T0aIO77+IoG0RVvVzfiz5h+RUqAbViuhRlU1WZz9/DeuBC2JmrysW+xysPKi9VJu8W5TuwglurLavhH4xYmAASri3OrSPu59GaeCQr6XtDTlxq0e78AcR6gB7EKSdn2UgRn1H+iKavhx10EqyR+iwpwjaAUAcEx+hvDInRLV1DpGMUn6D9J8XpaQeZegGVXgjD1YB95UiueUJl73WVYXXTdxFKCnUt+4TNUiBleB8BHNdQV2+B4dziaMXCS/tk6Wji2aSkJXfIh2aELc2PNS/PX0oclirAPulHoOuSwC02V9Fgx81QRQBwRgLR7BF8fFOXA5CEXndeAh2Es1ZhO40j1JgACjhAYv2HX0CFX7ec+h+g5v+IuMg4OmXfg6Q1wwWIUj7SxehPZzfEYijfqHxD5pRoB95CdA06r1j6jG2gpE5Ir15avBC+9BL8vYuvvCCxKo5qk+70S4ez7+IIjP7sDpXtU/SvzGE9qkFoylDPGCKOizQQWPFIhxT6bQNv+Chzw8NGcjxFsPITT1Gji851P1Hf+WJ4/8AuWrz/wA3cxlrnEWlUkPyxo2MNsVu2Gqb+KidyjpBka2+KlnvM4oLRs5l5Dcqfg1a8L2Aey+WvQm7EknYjsip+58ReQLpH52hp6iO9aQ0dwtvcfkp5ioKLgAiO9EdR7MN6xb/AJJGzzTFQWGncpmrpVDRG2nLoZQHXPY7pogOplcH4s7DCKSKWCCnkjsyupH13n3k+1erslAnehmytrjkB/MXgZ07p3xkp7LCaoOkXBDsymLo7DJYH3fYSfsOk/f9XpQfei5a901xt1UvVSyAVv3SnsDjMKvIbTJ4PFg9jzhC6YvlfxKEtw4CmPq/H8jr+dUn4sVmauHKKsu3OJnhkpGztVD7XC51lwPF1VjdAOIZ2wxalPcwe0bRfiSpUMtbV3h5wokUQcoF51vcy1kkpi3fsK+eeSZKVOB0FD2PxLFZXKsE2oFA22xDoDJ0HyB7E1eXqqpsDCH4WCuo6y+zBuQ3u7Nez9KMXRxfYeujs9mDnwLUmVlw9Gn7xkjUZpRNgBQ5bY1L2kcwQB+AX3uI4yhazr06Tnb0N+sgKd8rq9hi7hI452VWq8MLUeK1cZFC1Ye5H1mbZyKFYDTd1ahrm8BcFhpBTxX4LlIINnRNCpXf7oR1TLc3hyq2uRc0SyKxVi9xwL1krWqoFK0U0lWrV4bx0jVGo2JaT6j0FKLxuOqHsF9oCtqstAUg1sT37QSdVdQOACmd6w/yuO/fMxD8kFah3/kjZ5p7RpkI3nIZq6VQyEaSQBQCW7tngelogEk1ulE/GAtngMbTbCeTWnMGsmI2C8AC73fSfousmjUOsCUjEtQdybMecJ79kuB8lZfkJPcRssYy+b2EH2ldujYF3H1ANZE2Qq0ALt82or+GEQErLsFbeq+j2ry9C50hti/sU292hgH9GDtAKIY1VBFHytKlWQWl4Ac7jQxJVpLsoL17GUCXlewO118iNmKOzlGiiK8VVR2XS8ktACrVOKpfb6H/AIjnu6aywhYAU7lngYtRYabrAzV2iDlY31qp/BIUeLY2tQ+RL8sFA0BYJPZAYLA8cCpsuwpxmkXUYCLWUL0sB8xAgmvNFX4A6td4NvqaYV8axQdxuknWo8V2Fs8h4gWg1EhSSKgtAbisEkYcNHWg35Ja+cQQx0JseWjGW/6Q0o4aU6HBveoSW4Q9JWmnJP1Hf+CIvZ82G1ZBWekPEB1hCsaHpSR0kQFFXb56RfHAChBaAujpKq5u6UVllxd1z6NmgYSLedqIJIAWCi0Av2j7YYxoFITYcR30IsIQruH1WDin6QHyIsLa18B+bfaaoFsXIrh6FHaXm/gV8vrDn4NB6upoFuEotVvX39L5oVgFyIg1ZpwsNj4oUNAUNY3k8FAV2rg/978RGpfoWsflYtHqLf1AFujSnWOXRDQQH1SNz/IXAqc3ezW+InIyJhMD2z7HX/C0WARoyfFh9krOA3On936oIVloiu8m/dESvpaGezdUPUIQjVIAoD2IFsFKt5iB56kFNgPPWHTi2FbBQLMa54iSwqZ3bglMXnHlh+RQrA7EjmgZb3UUtGqVxuVJXXNm3xYeyPPFgm7lHZo/kuv5z3FRU/Qqa7a7Rcnt3AeGU3nR7+oAscKKemoSB+VBF7lPeCqMClorAXhTNxW1bApfUMruMdPm6gOwt/m4NLqPoAPIA+ld83dKKyy4u659CyhDIqCXvTjcPGbUIVdOUDXHkRbA5Sppr9DL9Cx7V0PR7JwmSMCC6dsC2+VmddpDOoAHvV94SpFJN0lf4bdu0GSGGIcVPtrtHKu3UTxg/MMZWwdXwF+GztATGAKA4AncywVs42Zq+2sSphoRY6CltW+BgxYlsvaWnvMAZACYDaBduoczT1igPK290xP78KWlE2OIeOSwbVXdN3xAgMgWI7EhDF2uDwIni67RQ2LZlWABVtF5g5yYggFCmsOf5FJjSFiWwx72byr2RXgQ7RsOKa3qEB9x9HuuzRSUKdDmIJTkgxpI815sV4KO0zRJXJ0ALOLumNEPIJC8KvHWDY6qW0CYd4TUXRuzVrAm2zrmnEIHW91yjvWPARaLdSl7oIqau4p4yMAc+AfiT6Iv0eVly3oKgHbvGVEeaQi/Nyu+bulFZZcXdc+gMAhSJYkef9DE+JDxSXhRYf3Al92oe4RYLQBoiUKFktiOyOXS048XJ8xFJF5pBkUtNmUBCoQscbWIJ1jMCgoKpcdIlpJbJBYKocdfR5I5yULAOlz6HhxTW9Vj8AifIjkHuC/Cp2gnBtgINjQxeufRE2AdOl0g7Bhoaboo9l/pLoA2y1uqZXzMyRMinqOx7mYGHeOfFn1T70aEVD4JCI1QAeIUQHEIVW8W+u3ab+qAsOqAX7RyjxabVhV56xW09doAF1zj/gWh9blohqpl5IghFyszwgPljk23tv23K0eKA/wOHOrLdwdxB9omNRtqhiDCHGbOkKhC4RE8CH5JTPN2m21Sy3KvXBX+eVzZTE2zTLQeBKvh37ptd1te7/I6/wBukrbTdAACIUap8wkzGrDV1sdqO+MQAAFBoP5m4YvtFWOvZEmbN6G85HwRDGHIIdBRXwwkxm3+oD7HB/pHLduXdf1S6/hb6LggiubJnpCIdm7CFVHGg6XXoJNR+glJLHWvBuysB5WLqLoO/F/mackK3rnp7q9q/wCwOv8A8vdf7A3jJ7cMsLxeHN1n/F88qTxYUcU+ZYR7oBVXuJ7eihtr/NQLWj/HGJDKkOlJT4mSyaC6qBrJmuZmN2jgFcdBf9I1/Im5TtALVegRQNbBQIK41afMP2KnQDavEyASr+ez6oerbPoNOToif4U0nMvsnd4/wPb450RWLXNH5hkxHrAlifwZU4NwLqw3UWLCJsUaT5/6a6/gJBlwuwSzpMx1DvCZtcP+VlPMt1aodULxOSWAYFen8B81aKvyI8q5vP8Aj9P6XYEpWha0A4uZzorrhMQb7W8htrotDxFxprIE3Yh55bMVEHrpWmhFdEbHxO/+f9zDPl2KnQXlekBD9/oIDblXR2ejDRnVavuCjlM3jVwIEFjoe6x7hAkq61M2VtvSXnxM+RL4rXXZETs+gfHO0pQfcJdFI4NMC0Qu1WnXeBU23AKgQWL0cP8ATRGv5LMnUtOF+anwsoDruMioe9vcqWYGpW4O129kWQGzUS1iuL43XePeiBlL2h1VX3/w1ef+Chm9LVtWy3kaX2na7cgUHwfwUf3l5MtPP0KZMgc61jzl/wBNuv4BhEuJguMps+YAy8dioq9spiC5OSoUSxjMGFDBAdK/Rw1ArSacQ9Yrajiy5hznDKzoGNkTc9NRY0KMjHy3iuIBe4q9BY3Dndc0Ocvm1mFsu1wMrQk60PfEestIKRghgJnGEHBWXJ1y0muyXrjqAU2JXg2GcuQhoQ7VbRa0XqRQ3btgqrqq4ixYCcnNV1cheLS7JrpIETsTT2QhGFcAAUGnuU6iAS9GgItXF0E6rxPp/S7XxWkPIv8AZEMsKgFAdItTiVm88RVeyKmTJdCCHvb3h2U16AtfiV516RLTRzXwYObC+sjacgcPbgAmZ8FGyxsfZB9E3lTZQBfS2EWKVAU4l97vhPQYRLiYLjKbPmZbNbABV7ZYKk9KghLGMwL751Bva5TI71uAHcejrATwxXQlAPFPUrGvPIyNJMOqii8OwRLzkg/gjQ6pxTeNim6rIa9oFqnLr3PGcy5Ege2Lt+jPJX8Zr+TMET2IH4+iZyN11xX85gD1jKzoGNkOaumkFKoUZGA/kwwGy9gOcabckD2LK8vIi/eD36Kochas08jOkne5vYCPwzMo9BBLriyAG5QQaSNOmC9zLlJkTYF19hfFyyQlTaPJzsR6JKidQB2hi3zMoJavgI7V5xY7C4O10WGXYsazceggX3I8D5FHjvWlC5vDd4VfVGBi2Qs42qBSle84eTms+7OXWrq3sK9I5zrhgWJZVVU3TXHoUIMEMU3/AKa3X8H7Prn0P0HSuA9IAuZFD9+s3ftif2HX0CDIoJcIA+BfMC8AhkczwD2iARLHYyk7i1FjdrJ6OSxd6OV0fPzemryjP/JC1boByqgeYevJOjxaK+vmVEYGrAJYBkMsYsYVqP0/pdgV7y4X3D6A+B95Qfa45SnLqgn9OYyKVugBGu+Yd17DF7hn5JQZCnt7ryo7Pk9GQsLtg6/Fs+My7OdaH8AqlNVR2OcI2gFAHAHp+z659Dh9EwLiUYfjxB9vSmo/LuR8/FEwbJcCg+U+8NgRAyHJ2C7cU9YjxAZhWueB13qjZDIAoBQH8hr+RGtADx/6sAADAT9r19GgVNxpuik0KNAN06mSoJEngDDJu3nabpK0rrrEQttMGDodEYj517wAACg4Ilg3jKtr2UY6ppwAH5B8emtylCH/AKIKe8qRsRQLBni8734T9U/MVJELrlZDlos+sgF61zyhD3fi9H42wHFhr6+mX2FK62ff/prr+AVLCXlsHzUZPwgEEbVpQm89qgKW5O4ootaHK60iNbHzCkuigTrnoxqkKTwrYJ3WY6A7z5aYsOjgVXmbv2xLUj8Lvens0ea6wYJNBpCrFOazjF30VEEkaKR1eK8EK+KjwwKLFNkpuMIkNq9AlHTB3h7g35e8l7EqvUDrXq576vKK84ttsGHakFPqyQUwjhSmKy1zWmyAzQCzXQAW36Xfp/S7IBh9xVrQsj1U6WKSFEo2LB6Fn2lN1uVmMGLrAcZzmNYZ/NgwrgqzoLK6TbSlPReHyJ+ZSbeyPcMfDKAA1YLq/BRt+WUVOnsKW+rhR86pymSmNnSCjrWeCtguXFYYADEijQk0CQqz0hNS9aqqDlx9r4n7Prn0OH0TDpxVQGyDow9mDSWVR3A/J7safXrsqMXRrQXnbMwIhweadawOtHWBrcGYB90x5ULoIk6Wloot7/VT1ladUvh0A76O6nn+Q1/Iq4hr1qO+oqOQH8z9r19Gh4NirYrHUS67Inq5mIVYlOmT2gr9jcg2NYvDAtFdZ+j6SviLC1IJWbKuHI0NqdCFPTJ3ghccZ0AlgC8BbaekcYYVuqn7ha90cemt67VJa3Q7jT7RxRrZEdB5prlE3Sbir1F+camZOxmdr67EqnGbufVeoA/d9PownM3Uiflf+muv4c4QX162Au7bLQgIDBqxQwYKMQnQ0X5wxY7LaN8NPaDbtYMIJRKRlZsFnOlW2l4OYsUBAfRHcaK42i/HTwQCmJmA2+6q3zMcmrKvS2F8M0NiPqIPcgH3A6AaA4ldg8bEQbJ0vmWKvyMwFtrofHpS1P0hllVV2iWU5I0q7Sx8h9ESRFedgaD2SWr2OILrdW3UZdnxpcK7pvpMaZN9JZSuVcsTnAQB2I7IyUFp/wAWo9qlGAUhU6XLXYa9GU7dpHVUv3uDy98d9EYWDW6YXq9XuyiC04il6r0b9VFKHRPjBs3VviVnsdxLXW+V51vO5lJwCyUliJjozqy0qLqmNkSxHUNgG5BRSWzJ2iVEsJ/cB7BBEFVlc6XNO11B9L0FRq6r8OPiHu0YSNZVotxdZY04RtoKRORIh0VW1ZSUsSnSV/Ia/kXalU4os9gVN7MSd8l4sHuldWBYil6r0blpmsOrXaVyu2MKa04HqdHuZhK6DdmgfoxyIcLFoZblOeL6hotVfdiS+5OzK9yXFVFsq2qO1EC96uEwjS+EVfZXpcMK0EDAhgGDj0FkWRevqtruM7jP0LfWXOFtGW6ra92drpxQMoTIOGFmjf1A5VVbXX0d2EuhjR3LNVXaOEUwvZ95B7w0upUAX7L9j/prr/oBr+TraPSnk6JsepCxl0mbwBsz8v8AUCUWkKDBYcF3XWuksJSDKOtAYADx/wBNdf8AQDX/AG91/wBANf8Ab3X/AEA1/wBvdf8AQDX/AG91/wBAHEslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslkslks/5p1/2dR6Ex6LUyBPUyIBMjyfw/0xmz+rP/AM7NjZ04sFxY2WFKDb0kT+vKx4SiH3kX+rG3XthFtpo48Zpv6S1cDCU0RWDMC8oGdHFlzC4Lejm6ir4ZQCkKKpMRTH4Qe5JxjAuo/XvBgk5mW6HozWNNX/g8zMzMzMzMzMzMzMzMzMzMzM/3HMO26Sss1THX/ZlotxMkgg19kgDcaqI/WWeqvY+0x/7v/cZU4AZW+xHaU+3j8fwm6oor6vxBKtMQbWb6YtjUCqvN79N1gEFW1rMzhqqCu9tzqXEGiNkdibkspy4O7GAobBTLiXCWEb+sWeigVFE5JSoLxUa6JmwjAEOF5mRY325/4S11/wBbNyj/AAbgxFqGdD7mDrlQC+jKYbwBH3joKabK+kuAa6rFzR3VD4h1ffNzH2VNhlmM9Jb1+YowRlexG0G/4EIRQSlaPzAkqoRozm/aKFtb1KiYSuWByeZ3ZdzLRK4ppay11bftKAYIgs6MLbgKFl+s2xp6xmwcU2+GJaShp66f2b5mGYBJjpEHd0j2WHSAwPCWHuBI5WexjTudf+Ctdf7dSv4K/wCRr/GppiWweWF375GaUegxsE6pUcAM7z+zMoF1sI5Pu1jdS94IUUjJSxGxF9ViqIMCoWJaEFsVL2naUe+3U4cQ/Mrnr/AwzGAmFs+T6zzjnKOkMi37VDpUO3Z9zQPcgmLG0wD5bfBKWpl3Lg3EnZFurt6SkI0eZQl23Tol20DNEYTVF0ykS8enM6ioBK8AXUqtNOYrKajQD4gcLHSdKeIRSSu0dAQ2MSv+Atdf7FX6ONx3C94AfuQBFXWdmDcpC7qeWf8A0oDkR8S4uP8AjxqWRI7iERPh0nL+Ix+2Z1lkBX5mpNEl85JmDeIA+kq8hm1CkVXvNIKXAlqcchMqqUhUJYRoLZUoLFBSK10lGpUNi6xKbe1lpLwOlkUKwx4T+BBizXBpT5GBbaig4rL7ais2PGMFverl5TPbdBQ9qYO3hB3P0nZychWiZDMeyIqWKBTKdo5wBDmWi1GRiy4aa6TJeXBao1cW1AUrY7GZJepSr0YKCxxrpGNhzHRRNsfaHpXxF8bMIRcGMMSr18TX+9a6/wBdAtQIHynA13nRUsZbinpVymGoPKHEwPEY8vwjWpEWL/w6V6BcqKIF3NUE+/dDnFnEfCU5pCKe0BqNq4Gm/ZEHeSsaWN9YTAypjDrEYIgGHeXVBqAXAIvMw0GBgzFcx2S8Slzgz3kIiGQGYAPFQaLBVcXHMxQbJceA5vQEr/O8Uks0XmAscR9teyd2AUPggOX11TyOYawYqcLP5mvMyEBC2NGNZv8AMMyEmF256dyUnMTE5rEpWKXnuR7jvEFVVoYub1BC6XcDpYtoPLxHUChd7Rfl5mSWvMo90xF8Q25cHeFiRUQgcsdIeFabqMAyvDEYEHKSvf8A3bXX+rtoZdql5li3z61KlQx6lIiYmPUAdQTvxFNlidI9SshpTT0f+EN+gLl1edRtVqQ/VCkO8UotqdIGqV1WUteLiEfAyhDz3ihVLXKy/CP1GVFco5TSUGIWbctTC2mKH3x4HtuMxLMGWZYiz2gKT8TABRKhjMGviGp6SoSkQ6dsFSjtBPkw7xP8m3MVRxcQJk7mfiXBMMN0PPjEd4VPeBr2bfeLEBtW6Dk+pL3colDBw+J9A8pb6K+JXTcYMzPzBDMZVDQNXnKX7y0Zg2gsX4lRzCAGABL2d5nmfmfWw0LgXSq4TolwtOlN09ZyfM+Nl8TLgZVKMxIR7RGrTsI9Kbg5ip47Elf7drr/AEAv0IEItVAMBHIt+lnXrDSViVKlQt/hFzmJtmBsQ3xFdpIvQsh2VPeV/wAFd8Qr8WnH1iroKgFrDQ/eNhLbOYfEuaqYxbLcmmZG0scoIEuwhephXJbMPhBmk6AgS3gmDBXeO1+qVwm5WHYYRVZ7TNI8wW0HxBcBCUgGswbukE41iCS3aC6XmWvil6gbY9sRWDFv/PfUVqr9k6S1MsblTtkeEBjjKBeOzPxDIUnpML65m3hacRWRWwdVT+HwkSx0LJrmQXRDtII0cj3pP0mfnEWU7Q7Dz7biOyrWrE4R6JmPRrOEsZSW6l1rzKnLPVYqXOMLVZbxHyrQDxL62fXwvJ8pLAhdIDkhRQ4h6gPCRfMWUdIeinQiZpw9H/Qp6S/ScMme8rWZR1mO8C9Jjmz+GFUzlrXpuv8ASElOYw5uPLn11jzDOYggXzAGb0SvRTErUu8QfSaxZLGfRWMsFiUiidJSHpmEsb/3guBc7EPmg17UUS2Bks+5j77CPxPtLJx8Sj/Sdie0LNficyRYOlRmkxAwQQWQvU24ImiDpDiG4JO30i9lXER24I+0gbE9pTQCpZY1MuIYGvQRFqWCYEtBm2K2tBNXErg1C9rJVUFDk/zu8a6DFtXGrUdUoFyFIDtQe3dGQPKaluzrYU7E6y0vojGWdQgO8H5sVeH2CVfYeQtLwNBsEw/WXI3NeYESkOKbOhtPdmWbiFWcro2eIbOxWWThOjzLRk8ZlG0oOYkC0nRiLFtFtcEURlcBKs71W3vMUopgAtZkSJWyG0bOsvfM5eV2uIUJlDedk+RgEZ8W6jAv4qVNXMilxqUSqiHqTloFBhiMwcTH+NSpXeY6wrvHYIuhBKKOtpd8Tq0t4D1InVw40w0/JBoqOgS6NMQAFHS4QtmIZu/tHij7Qez4phjsQ6h+fR1/PVblgTOSJbO/UWxkxhnKRbLNHvzONXkG5MXx9008C07W7lEp0gNQNVCsEO8PaWuNFhQzEusSgxiORQ2NM3pXMuGRH/aNepklBm2PmtVZh7xQ7i54lxgyyg94xpxhLWEFuNXU6KApZBVjEqwCAEzCiKGBpfXPYRzH9tuGVFGbhe0bKFSgguENDLkI23UQITQStEjBN3FeqOfRBL3iDjs5i+rTf1C/zDP+TGET6P31hdG6x0md9arNFV9LKeYCyySYajy/olwsQ3CDWhcBrSXzL41ZnVRR4HyFHiKRVMLJw98hnVmrIAgK9o5PsnCJNeZSDc03MbmDoWRAhq+aNeViBbdYnXSk5mXcY8ywS5demp1krRBIqwy143GX5RWrqy5dpYcd7mIvidVMBmWOYjfxDHuHbcrUuXtlxPggOx6k7r62oi7TRuh7SrpF9WWF67zzKVoOxLQuxY+SwsrLV1FJd7TGxx0ivYKoCgcW9+ejDXECr75i3VgUwauaH+I6p3L8H2RBhuKOCXmiUiiM0IQIXyvCdH0dfzG4QSkYMru4o+gXBTKbQExS3fiGUo+97/SLkfzLDH1zIjA+sH7HEqvU6lxEpLZ0czM1JSRRMw6hShhFteRDOh/2hKjqZAHZcvtDLbHIOvaDqOTO4AldxqJxQxgDxLjqBLEJ4hgsgOJQ1DyKqB+UhAPrjK3MrjbbFUv7RlR2xCMFQFErYZW1t9AuCVHMvlxhx1QXENICCoNQ9A7uDkO7Fw+0Kf5HJRbGQ0MmB5TDTL4BDvJY+Bs843Qz9qqWhgZSacIiEsbXAeMt57QHGovFWq5sa70eJQFYkoNVnoQ32liEKtuLbqapVtKTc3Zlu0w8x6DXQYtq5g5jnuG2LKEKDxdSwFyYxFI5CbXanU+0KGlpbexDSRF8tArLD4KKCUpkR5NS6lzI5hjblV7lgXEwqx9hPJUvszM3NpcJW4swSjFfEHWBNndVtj4YNMIawQVFEzdGIZdAloatqOXHKZKwdXMX4LuIFRfBX0YRFTYNsCOk4HFdoKtFlX1HbYTKAD2JZ9GG+ybdzKbMW2eZYi5YOYG6gXdl5OxX1Jey53o9O6/mWi5sBimzGOUCBLgyEp1f4nKqgqXluEeYnCjcH70/S+D03mEI1mkq4QzHcoKZpZLteg3GnDAOfCAY5Lj/ALDQS1oAS1dR0jl/YWy7QAtm5rD7QzSO+h7AtQdobkHBsTHqXiDJMjM/siPY0mMqynVHeagMECiDiOJRBGA0UlzLv1HMfoA4YqBu3UdPfLWpiOLaKmFY+YqrK4Em0GnpZlKAT/I8WWMTL6qZC9rY1SF5lKdP3qpsEc0kuicTTTRxew9kubV8UrZuLRE4r6R8GZCVC/lD7Z9JfBFgzZVDs7gPMXU00uykxtQ8yh6sDFN0FH2Y/dbCP0O3tKBlhEgdW0xsh0tjokt2mDmVADuUbTLuIhKOxGbgboq3rOv5lchg7pI2UK6nEGzDZ/5KkvmEQFRGlDLkz0nWTJzMI3MlXG0BH4ZdMTQgB8EyVxt4YFyylZmdzMDmHdNOZ3pcmZZWZ3Jycday2yhv3xc2ECI2AIOVTRoPEQSdIauC3V0V36xlHaCpJs5HB8JYICKC9qXtviydDjpAogMXwTCFm5esyszzN+4lg3zOFGk+ZZeY7L8SvmVS9+ndfy1LiGJVysxE36HoFzDWM/icfmUE5imICgH9DM4H/wCZFojaUuoHWYXGSu5NEpVMeiHVOpbqLuoHpEFh2S9W6isTb+k3qVj/AFKxDMNXtiA92PARaVSYaHfmAktxt3CGTW4IsCam5gwDJlvBygZzi/8ApL4XmWzMFMy2pUEEtsK6leZnpCaBD2g1UJ5l0sLhPNRgSvvEDI+YeW+8AVjFpjeFmKZOG5ahGyihkXE1mKfFEpDMNQYE5zFALcVlTYbuWLZDvqKftL/xRnPxFshLYDky7kmC0pBAc9ThptapvcDfUYQK6oAJcMCkUcaoZRg6EAXA3xMifJmttuHanFN8MuAWGlIZMq7LZiPlSqnuCDohQuoeJkFwXmYq6r8QWecUrKaLui7M7rn6MhCwWIM2lZ6Rul2O+gLIeFQnXJDA6aG4jsj5AusYOhZuJbqONS10eplKsVNsC6K5rMrmj3gI6RmcIysF2Dg7TMzKlmGRgjpuHgd11IuEJFmo6kXw1rsK6t/Mqg7C5PBrxxFZTNAKs6y8S8S3aU7y69zAlym9zC3K1zLBzN+Yd805nfmrMrtcu2lKWiELd32aPtBE3I6t7B9gPaGEsoLQOW9pT3YoKqxGjR2MENlsyyBizruM2UXhS3bRQV75Ywgf4FuB2hPhRzCkKgrFGsMpOeZsnEyFyily4u5XtDptdYqEbkEJZqNvo6/lCrZirXmFDMF3USGtVFkDiecFRwDKX9JTFRd4qsC6pjj1/wDSft+hAsJw6zGzFrMGvXKCiKmU4YFZVmWF9DpdMU8al1PfAxf9QQjleYrL0ICBe4UR3XmAQcqwJQJFGJO8w8vzHZa8x5z+fQRXauY4CxbzSUNPzHCxXmHGjMQslMzMrrn1gDbZjCzMApY8SqKPiN6YdYRopDGQQud2DEE9pyGVzMyMRo86iiuPQzbHaOYdgrEKjTEaAnMFrZgsmIpGssGZde6srP8Ai6jVMGGLIh0WKzAOIV+PZEE4FMdJaIhpY1haNgPvwKIYh9CgHWAyxCU1FcyWLtjzHFVpPNyngMQ5pP1AcC8qUKRHWttS8DjKCiVDgZxFCu9N8r7y3Q5MBiysF0auqj4LoCFpDwkOLlM2VWriOc8i41AwOApKFQMHYK51MFb/ALQ2mLQ4Jy5luLlSZTYAqikaxAE+1LpgIIrRLecQJZgHXk6TGFIyvmZuYMqObLPaoObgGog3jp57ywDI8q8X1KjjRqzMXw6wYvp5lQ3Mm5yUZcyxMvEpeZaXcrsuWl3MLmZHMH1lZuOBHI3HdFyorLKHMq5mYMeWb9gFoviWp2ccijR1Xgga9fSQKq8AEcnKbMpYIrSl9yplBNQNiHVQhKyNAbsO9BXfpKOU74jQuwHgM/Mf5OclD1AFVBKNcQLWTPc02VjWL0suye0xfS4hrXQlAOSr4nMQAQVdlr3lo67Ev2lB9M6/kBViozLzMWYqaCW16RVcFcQLYAwAyvkPxL7hvzQ1qE7qAMqf2SkN19o9IKgX6LZTqBRLuMXd4qviXcwDpMiZpUzFmJOrNkI+UoiV/oJEXAHWVksUJxDom23sPEGiQ0EuUNcQhQDyXH8FHzEbfvmQavMT5L7S+BfESoJ7Q94mOqZMpgVUjWPxWLkkiUMBM1Nc3DmyCNGILX7Il6vGtBNxZNuqVkO2feCTnCQtuGBNR+gDiF6ymxi4GPCd1RHmGHLbGHG+JVhcHoEZ7Qte5D/FGiymkS/JuCtwqr45LOMTtKtwh7I5+G5RC9bhV8BHX1kDCAj3LnJPQkZ0S0FMZMgwJB7ajTAxZq0ezLy0plm2hu6cla46Q2V27iKoPBuj8RIijLUYF1EoNBohcZWoFYq6pmlK5KmUDEFNZKRapYZg20UrcdSxUHmIUjRJcKYLW6HOoSO84q+G2s2AFbMFn7qchM0vNTFLqOPABubfiFrAc6jvAsrTtLRRmhTi7l3D7xi9LBVBfLLkw6Ro7VvHioT8Q0NI8j9otsHVYBeO4+1VONkx5dt7y5rjMW0dFCtaqq65xG4abs0ma15izGK4q1ydp1GychOQljmc5MBc5GZXM3ZlwvrBHC13lnM1S2gxisQTbPC4pOI8YgU9cB8SrMiagrH2Ojquo6UwgakLq1cZZadqUXZRVpxjeeNukciMxraBeAwBawXb5fEULdCi6ZeNQKxF43QX2TTK6ppWKFhrAEo8CkDZeSnN4gff62mi3NANt4j9VmAYbICje0rvBoAlWrgCZ3Vp7xbTiqLOjfoJXEDYUs6nWZ2PHOvSdfyWtNQQX0LTBRGxBljEIsAWsBYsA9Jj5H4iWjFgQYhUa4lFWQ+sQ/vY9RqVg36BrXpdS+sOLkb2otxuzaoauHVRcqmSOPRp/oB4K7VTD0cmRLBDpS2JQep2luqXhX+4ML7puBlFTqTDli3APaLaEnKEP6wkuHtLL/GOFyoqXo554lQXiNSqyihi3PqmyZhOGDthDFBDp/CPYQg6SoVVR2owrhGcoBF3Lbz2nGqvmaRdsVkzUoI1RGAbhlu6VRoSm5AMBFBcnSyAE2Cxlf4AEKs6B6tX3g5M0Fuj+BI8IYI+4AXcSuKhQZxCnQRx5YIii19QoKvHsgyvRXV9XK9xSh5JTScNV5JfeHW0OnWBQa7QQtLFw5K6EX57wwkrII8tuF5VXEs80Gm8CAd4R0ZTaIbbotrDznvFflIUHhuhSG54EBi7w3I8Z6zmXHeNS2N6dpWZEJztqEOcFXphptJ3UsrQ7cB0jEDnS17nfKrd5bMKWQmADWUas6ctAnvELpSyA5EOW893tC+TNPAVnURRxZshDYwBoEnkbB1Y3FxEdZWzhXQQH0q60LkZd3uCUFNKL4JuoKUBTGN96mQvN6lxy3HXOpa48ORlS+lYx+Zpz6OUlC0wa3ReJSoPkobMdTrBtDD6ADhM5OFIPzAkQSkHrcXw1N57LzAOcLg557Va84qD6nX3ynTLZVRoKIlsWWe0KF0DRS6szCQ4IZsQLpotwF76rGu/rRPA6i8zOhIGpYgVxTVeZfQAoO8GF8x2VbMSXyPkdoy61ADdKLp2cQLez/qig4dLzKkKsEd0oeLqMwqqJt0aE06l6RIw0FpLHlUl2Y9HX8a/9FyTDNpqTSXSm84qaUCscmlwYIrG77zkXm/cgg+qBgiVxNbtERFavMDYbfxkWXjaEbgXuGZUzKREzSeZlMYprKmzrDDuc5pItxUI6lI8mP8AQPeBSMKOXYqIqNeAIiVr5glBKIJWYSiyYgKg3EsAzZA+Z4GdgnBkdaYTsiORV8TIuHLqHWIWWSLAsSAqEZYuczDFcRRhLSHEI3mUZsQ/moxDDOy6jp8T2zLUG7lvF5gBoFQgLlsiii7gEVmpYGKNoGZwUpvIxbIHyBH/AAZNGjCxaBwWgd5Z9GfbggvuSjtmCverftLqpn3Jke0SGshI3o5sF29aqVoAlBRBQM0c+GuIk02AUPUE7L5IA8fKMNN3w6c5IK9zQsoXkFYG83mXsJdaA/8AqHvLsyHoeK7jyMyVcEF6MQd6vzM5im0BZQiFbaTtzFmastpw1pnNVNDShGsAou+VIrAtVSsdulMje7ejjImSotWusUulmF3bpEUjnqqQWMrMgceyTJ6BSM27ZWcaqM13Z3NVlg5UPSIjgkMNC8rTYVnVy5lP0MbV2gMaXLctCG4xUgyxQ3eR6lo5VdBQC5IWdt1zCE3yUXyK4oM3qUSdtoslfiYp7xaqKy5iqOpdpMj/AISWo1X7FeyokXmo3AdS6XYjLgUlP3ICDpLDuGsELSpfLufSQec5VcZSYloTPJ7vvEoKIS31fxaq49yUJhDZVK9pBKC1LWoAVcl2kQtJaF6s8YqZCV01u4WuaDguI1qJO+8KB2zjrBmox4DS4BeCzN4uYjkLaMFZGytAQTyLXk0VS3bXvLmSAoDQUTeN8y0Sh1syVOHi7u4xatJ4jADpx3hGb8kYrTJRxYne/R1/EczguC0Zu0dYMwPhgEwjEFFzT0GMsrRLEGLp24/qEr0rMrjF9rMoDmXJq8x9ScKzV2t0zs/cIIc15jURbVRN0HkzbV9/7p9vZimx7JPoAFwbb5ELAHZgjX5EP/CQtwe6maTCLfMrTBtiZnlAp3MRxhX8/SAgdoLqmGJvjGOikr6IKUZncUsCoNswOUtLgcIu/rB//UFgl3Bd+hUqJZYuOKCALRSaIypHIuaRMGBJ+UIi3KLAuqDYYpc4RRFZiNiIeazF2xs/FRtp0iXoMVQnOYADZh6chDgCZCqoi6m9lzJynDl5a/xqwAVuNC8V0gLRVVhJ1TYxVlpwTtXEdtCtwMhU37zhpI5tLC16txrgjSjBtxoglLowh424GV8RBXYPAW2FW3Vug5wRka2cixhyYc+al/NsZSpBgHn3OsUnDQZPJqCHdiQWI6N4isY7xHEwHXY8VetUzQQ1gDWmhgVxcpwMOU+o+EXJc3/GkVyvFPDk8MZRACiYsGjQwtdm8QB3w3EbadLNZHsxQA37XhE6mfSJBlkWexRA4VBwrcPKFLkMIbN4S9kbhXfweGOjJZtVVcNz4ExBsAhSCri+GEIasekKYIonjmWBzCoUVaMpRkyZgFi0YVWOX4lRtFK4lDUzlZZYCNJmVrMz1qcfQJmDQKsGrr6+mwUQqoHZCj5gRhkVQHVoME0hDvXWUYKpB0DFC76zOw2Q56sS0Mt8h15lpruWI2TLqdZbSVzUDSuKBfV6FRQfUqILpjDgLcBV3EBip7gBVq5ra5avBLXgIdrk2rHJkxFYsAlABRujNDGe0IGyqzZeAUOMXa2Sw3coDdKFpCksprdGVDQVAokGeLqr8ME0gR6oDC109OMTAawI2zKFNFOKdQdC6mSCK4HrrfHo6/itmXRlcCmhKZ7Q6mB5e72PMpgFXpl+A3ajxEsmaLM+6R3ginvBCZa6R8S0WPeWGQNS7TmZtQVUAStCafT7RNhTUdoxn9oxsKYi3NId7up1UTTqALZVhUaNkS8CX86lt8QDMI6mrMivSdRjGm5TPH81y8JK+BMFZWrCAU9IZhOQmfmMLhKuE3QmAipgdowId5Q+ZAIIlRpdodLAC7p7RhQsnKoYGNTM2EGWYJMxBRmZ7Qa3CBlrMtbouYO+YNpvEF9ggqNxeXVQ4CPWRjUDELKqiIFWN1WHUQhpD9g2eLZgHt/hakVKYXAPOcsUzfBQPQGzrR7xs84TCgbK0UE05hVuaS6sOttR5zcNA5te1oe0xD4lBqBg3gc10lf6J0CqI0a6LzzKt3IRpSnS2cHjZKhetDFgMiq3z1jZbQQsN85pDjFyoKBZYMq3YTUYQWOZtbvgiCTOxxtjTyqY/qJUIUBpQUlN73NYoOhaqti7x5iPGhlo2lrhMvv2isR2WUssZUWPXqSzBfQUKDzz0arwMTV4wdiiiZW8ZHNnM6PFZ+uwrSyU8EmAG7oURrW+YcnLcLjNLVvPGZWOZFhStiygKzxHxSi8kcvaq1XEd1fHCW0Dk6HFwH0+jtzWMYs1MpxETJyRUsOGZEdwcw3KnlEBdOodb5YlkVK1O1esZewdlCeg8ytVTFubcsviVgA0qHVoK/SJYykDl4Zkl8AKOBZfBDS4VoBQW2qTGhiCdUjv10QsF7XomCeMLu0V5B40QyyZbyGhde/MEBcirFuB9yxiWeR4o4O6ly9SzvcOr7JuudRGjUIst0cbhU31jVfmcP8AxKnh4mCDGkdwzswn3RXI59K6/i9zg5QkMYRzNRmSMIgl2WuGIIymbxfocCgtWWmKslo8/DMcUYPAmpTibLvtMNSrPeFfzCbjrbJTt1n6Bx6LNel9mDyS/VDTWo+7BkZUXOpXHmY2n8xlRaIhuWA2i+kNoYtTIZlQXLUzU6oNaEr+Yhl0tx5HBMO4XBWGoVmKV5d5/UZW5y96MBD3HU5gKzGKuDRwhW7hpfpI5xBLseIFcHiXDpFGKjsFxBP5IjZlK7OZmRU1LjCZapcdI1Z5jZvEohziUog31xKSPErVLgK9FRVMMRqjZcCSmLopQkpJTVE7lBgg9Z5RK9Dgo/BT8UgcfySOiDD2I/mF7iOhqd6uHwx3bmrRrRpb7QWB5WzQF18Dyh5pOKDm4UMWqCHqdxV6pZvqBvm7iEHgtNHOc4dWViTqqNwI6ug6AeYQ2jS5ihsNaKr4jRdh6zK2AWu6rY9isa6y09vxNRfcuvVOAa3uCGWSlCquAkT6/uhyDxa/ECU9CyrRVu7hgMAdt7LF2JpxL+BjWwt56ZmoC0hUXa4qtQLYu4S0UYJp7S7klalXMuCWVvHSJw+T4m7Hh48SxHTS5vvIH3mIFXDFQUy4rBlNgtRxceDXB+n+GFAeAC2ZMQCaE4PEbBCQ69dg7w3Riz1uF6MsAIFsU5LA7kys0cwHwCe7CAhXDSzFXnexxGCjcZJKKdaNDhTiItQpG9orWg65YHDBYJdKXgYOiQHseqhkJd/okFLTHI5+Klqbvuy9zNmSUqVsvP0Lr+Grm/YIMohabhEBTd4jtSQjGx0/EYjbmtymTcHfau5bx+Y7WwDasJMsMIwl1wv8GxO1zO8OZyGKC2c7hM/TOCK2XHu+zARXXeXpePMr0I/lNxRZdMoKuU6s21ghWA7ojOZaF195LnKJcfVN1HDkgUh91H+YwwnaLa8ZhDlVI7JsziU2rFusMbit5zENwTn0F+sF5Q3UxisybjIr6o9WgELtCLMYdY6xBDWErgqwlZ4ilmUJjRmHZe5gSXjUpwRwmdDl+gjclgPTE1hxEVsbjL9R7JMS+1dx0nh0i/0oyWEpS0XUqURd1tfz6kqMrNHuOUwi6cpdS7iBswL2W4DWWK2PWMc5CL0Md5Y/arvOEheuAKxzNYQlixeVkA4xXS4L6rMBcF1ZHjq4YcLoq0GLFqsCYbmPH20+TLGWJbDthBVhkDFF7ozC2DYIc7XCgQHNYMswNpQpXdm0W9XnBC/Cg1jTa23wEbYqY0Y6ewt1/cS4s8wYM6ExfLcEY0xgtl5vg8RY6jFegcgbt5uAnIRBOLVz2MVUSPLErfU9ahtBZJkcoc1FwoW88YmHniaJ2SlzPECn0SYusLKmgFVdAfrEbFQGbmIAHlKAAgcEqKzJWu8UfNS6X6GyqIgqX2Xg93iXIXXExgAa4HuRQKQX6C+kN4oUIb9TV+ZcBNh+rjk44IgBxbmAhdBy195RzL+rflsvV8QlxruKZASucEtwEMY6hYygXgVzQ5tGJEsUasitbpd2dbgMoVJSps99N3NTObZQ6XxMGXLMyIZww3MkoXoXX8K2MVztblwZtBhoaUYqoT9TiVDGYutwC4AMsI0m69HH2TURWaRwWZlPXAvEV3JqxjBG7OiUOcw1My6XoxWOv2iOvbKV4T6oIRoifMYKi82TFTERfeUdFRYhqL5xHBubTdfeSl1Eg6AblKAspoHHoMOHHoS2VVRV5yL/AD2JpKZsBwfCWisKNtx25irp9Aak1wYQ4QwYIuVSu8TcuZ8uIiszrJXRYFZuKkBSpZexCaI4w9EuCpNig5UMkscCK9Ao7xg3Pm0FT1NG4bl1+BC4YfhEJs9GIBsmZR9EsWkdsVTHHoDwATb0LcowhE23pKeGp9ouiNVX0rWV5o8QDiaINhbLmdC63HvKbWPgXlrQ0b2x1XoWgdj4cUW8QzUtrMLTRgMoYDmKhoIKsl1FvQOgL6QGVYMlqXvV1ly30iKPVLrYByuDjmA6UCEjG3Sjb2u22iArtIKsUvuAcudxMRLWw94sF960SvHLTtyHPWjJMpCC3IToVljrLaMlG4AOVfYEFozZtoPQVyr0juZzsALN5CsFcsTNJwqNYl4Cmm7JUqbk6PSWrMzJVDNQtFtdJn3LXKGOgX2JaI8n6xIEgW10izSagQpukGjEsIoSpJZrBZbwg/n044d0zzTK2FxYux8OsNshQ4tnnsN4gvFQpabNe1X7ETJgIAasR4/uXdyCILYCkyqtfWGUJJSsgh92PFWEFBrr1lSZ5Cx5tz/4mbpbdXqVDMtHMZvitX3jSLuanelBv0br+GyTknPrtKi5EuLQBBzKngE46wQNGXIhpiRV2eq2zBEupYjSCOuZnAAPFSoVC/aNSQP0gCGsS9MzJ2wS7qPtopYOn3UtV8egXzYnMQFeoKhfVClZDY0y21D1lWxLbSYL3ippRihx5hMm4rjx6jMNMIdx4li5GO11P5jcSGHWAmCi2x25sjcLmk3LAYE6mYjViGH9I9v0hVVfSFVRtxHl3mIzMUMy+FpLCTN3MeIoszLGMvUIjRkVM1kerZJQMNetQj0FaN0ZYcmIbkwE3AitlFCsQQviOKF3AMriCFEFMlyoDD5IwhpHxKR1BsS76+rsWqXPgQA9CzfMOEwG8NugDrFua6sNY0sccKS83n8auWfo8qIpS9pmVQXRWpv1ZloqFoat1AthZji106qL7GlRbTLhdXkHpbwQgObil7qnTGVb5eYAKAGhV9Wlp0jkCwNJ38Ay91Ep+i3SBdiubDPUgeqCRVC2x7CBXECwZKbXg5WVbXlnSSAqtfYis6hbjBvzl+Zc1ogPH9rmd+dVLlzBXggbtdOqgDe+Zi4zYu2TLrhgWhtjGMyjaODSl4lW0sZa/Ij0KqptZtr+oiLVVVC0XvEo2QOWrrJmGrIMILt6QcMjhyqiMqVTxiSrWNDrWayqEIRjdg++YVkKLwXdQiKnBmFfrZoP9w3CAIOz74OrL1ni6cWCdN+1RJidBoKa72Q7ZWhMswblhuV7zGZlhuWrmZdzDuYJWfTuv4lzLyzD6XUGRVU6ftDQ4tt8ywgUA4WG/vMcFsVrUQgsWYwbhIULYb4BTMwQWacRZZIB2j4YUt6Q7vUL7JRqUU5Ng2bRLdDTLx2hOgKBnH5pA8ymJN1Bh5OjBWz7sQ0rG1mYlAq2Db28RmvgQbk9yLOB8zOWuVBr00T6WP8AMtjJnEX0WaaEu40xsxHgRoqCMkZrEESz0n/wJlYfEdpM6iYnFShSoilYuWDMsMpeZQoLcdScJLqYi5qHmHkS4Q5MEMY3+UwrjJD+9xC0kQsLvL0OCFcVCDVxb3GIcIpal0dSMyuZXCdHowiCrKdaX64A5V7p2605+6MraAb7LsL1YHaAM2eG89sO2I2Y/us/wPFG/io1HqFa6ESmznsMRSCEsDVPRr5I6GaGypEaEoVTqED39Ai7tj0KK6Ucwz4oi0Nd5WMd5cbqAombFYexWEoR1XvWZVcsDXaEGjK1dg8L94SN/ZZZ4vr4lhVy5Z3Zl3O5MG4280wTT2ayxvPTh5lGBhmcv7+Zi3MjmY7TvQo7hqL2iUnqpnvUSqOLAabrMq2GiOSi8hvUWqKriinHSyyIzxjdBY7wRZZhVIBluNtPQEF0ZhXW0uumIArHKquuXGIInIClu2qOZvLBn/0+kxxe39VOvXtwQvDCAwYAOQbVgFULR1wQvLj6sNJoWnRNg0mc+8eug7jIWj11ue+JbcbBkgBKscjMm5h3MG4VinmYdy9ZUsKu/iPdKT6Z1/DeCEsIllQI586wq+x2MUw3tFocArmGsmDggKKdjkbltVgeYyQviOWtvtEQF/EAqZGUD0qXFcQMtyoM5vSoEkpgAiMcMokxiItbGlkRU9VB+kuTWKZGCNLzmEKvS2+kX5xLZTklwPEI3IQ4hQdLUC1eoSTARFt9u0KVIbG0rh/c0YTmYcLln8RNBaoyPfUKhTXdPpGVUGkn2hSwP2YhTvvGU7Huy1je4sKgF7QbDc6wQALqyOv578ZfaYJQhdPdhrEIVDAIR0ipqHjHpNSAqCeIOcZlgoQy8Qy/QlBUS47nORwpiy9czKpTA69xYLhxFhN19IiVUWunWUHfMzX6xKLwKLCge0I1h1mCuYBHaWGXbRBErdnMqTzGVBrvs69aaq8OUU2HctxsiDO+3oL1p5xcYDrKZ8mI+DpjECPEW2YV9cY5dwELNZKDk+HmqM+0NtnoYM3ODjeXncr8NqgC0Ha9B0L6R9xZiqNttpW3YJUyDCoLZU204+bhicqZpQDWtuBesYqq9BXH7KBxlHdOVtncmHcw7jnuaRYlbd6HMXYjoA4Zzto4w7SsfoQNLUntoItKFh6yvy3W+svVttzFuW3mU7Qrhx5nlLhe8Zh/UAb7F/iFV9KiCZDHkmIQllBUcVyxh1gANmChA3Xa4VXLzm67neFh6BaDm/N37YlZL3AmykvLwblgo1mlZBix0euINaMYI6tU4pBzH77gqoXgzprS3ETLdmiKuy8dTUQy3CHJ8IIp7xKqq7EzYIMmQlKP1IbYQYC9xwwuhNbC0aDRkYYubOnDA8oVmhvCbq3dOE4YAWCZ6Lo9rndgVuXczvSvmd2XKLrW/Mz7hHlKXe/QOv4LeyJ0CIWRCUD5JY4XSFrF4UiGV7qUg685/qVj7H/keitnl+IoFV3H9SgIwoC2Zy0zGg07wEUlK1bDYAZWkcwUEvszaC9o5+a55NBaZ1CwcarV9JgAB0JfjVHC64hZQhTofMsxl6/2R/RvvFGndmTB4RX+m8xEM8//AFMAU4UeqQso27QPXMIJuz4QMRbp+vMZIuuRZ4YKSh2KFY05Y+ah7qHFrHZIYUuaJE8HxEtHxGcIjhF6Mzi49YlsalbZaMbiCDY5/nNxzYe+sqivtMCqFRigIQlkoGILAGiW7RoyTlr0HtalQiQgUMy1xKVKjVR0Zl2SXpLCw3FBWVyqvThBsS5ldPonCvmPYbSMyv0Q5PSCEe2XWq9DmLEPwwm9ZjZtWye02ES44RWzYCvggWejK6nOjotexcqhuhba0r3Ml4qOsugottlqeau+eEL1cU3CMm8WChb1xMfCdT8wJwsWl8wUzG5i8NPAKvV30jmLQltAzy2HaHg6CKhFC3yufgjFtYa7xFjYtOWvEqwRHWANI8BodbjPCfpLwsX3rvGKUBZdkul69ZihSd+ZdxWQpRgCQ7G+OcxKjbJqs5ANraxNvBYyt07S3KlKSmD81U5LgtCU9Jg3L+YOFKC92xZUpgbsV8VEAN3NW2+8W0RCRoeC4QgrE8Zr8QLNEAlFBb6y0sVZLYBOURYskK2NfEE1HCBFsr4aiwBY2CbzVZEL5WXKZOtKLx3IkVGhBMWFNeYszP4S9N41l2x2c9AAKwGDErkWtgD1y3BWXk6QYKRwMqh0ygaS8OsjMFv6jlpGVtbq7WqGGm3GMuWNpMsC88X2jciwFl5IkdsqUtbwGp0L5geKxhGOcIrom6D2YAbFg3uUKpkY47PeWJSL9A6/zqGf48XDhjLlgIe+W44tS3UemCcIgoxLgJiwl4WugEeX4yXw7Sv9S+lQ9/6Qgr+U/qVlfIf1Gqr3dP6iQQ1u3/ybn2WVhT3hQuIW/Gg9fW4MF6dYSv8Aw1OfRjY93aXxUzb9Xh/SAT2KCmf/ADz+5qBVoC/rAOP4iWfpw4H24jVuGql+/jf3P/gn9wNq+mqPsJoWLCXkVb7RKg6WwZ9yYUqCFzuwaGIU64L8RzQw2WMFDQbPrC9Awi8+zO+HuPrFMg24ikFPs/0AtVaDgsjFbLDsZTxExKO8Oyba/wAAJm/rMh5iCV7QqWoYz28p70ewMxUfoiElBJTBEkoUdGZ+ZTkhGGVdFt3KYxkhk9F3S5BUCIjS+H3gvhIr0jCLi8puUHlYYAdoVvJSKdYWPWJDgysm+SKTsWgTFCDrlixTFqnQjfbNqVpxRdpW8pAjTAgpyFU5s+YmW8sYZ2LA4cHm3Fj/AKMgGIvNW9GL5jPO8CmGwegC62a1cscdqjlUYAoywpWrhbWuWHKCCwsvVrwTI54yKCLeOBtBe49JbQr3jQqCPCZu++pTzCTE0bcK7A9yyy0F16wp7G+I8ia7yaCy+lk6ttXCJ32K6GNYMenfC8rMA/uoLRbeQDbTEGNRY77s9IPqy2j0uYMAy9Mygs2F82EDDvcsNkFEjRSGqICtbYzl+BvvCboNtpSJbFE1a3uD+IMQsJaqzdeCZCAWxS9B+alYsM3sLa1wESUxOjAWWmgDZw3HdCkhEKIXnmEdVjezwY1DLxgiB0itq+HpM6gN2uJjliZxF6Xn4j0xzmhEGk6DUCJauGWRRXulX63bs2jrWL7wFpLihqI0XwS1al8pD6hlCNEnDZ8Sx3j1EUKZSmPD0HX8Cou6fKNtO4raDwjUwpXQH5gMQGluXvKW+uRV/SayuLD8T63v4CWVnVD8QAsuaT8TLbgLIPavdTKAehLLBf25h/7T+4SVrSv+4ZrfL+5/9H/cE/t/3BP7/wDcE/d95++/uaz3P/UyQCqvfFxBr6j+5+zfmf8A239zqD7v7j4LuchHV9cKUmaRUjK+J+jfiKaP9OkuyV0lq+kphTmrnyS9yH6cQY0JofZOFmFB+YdR3dPzEIat5GU6YvUxyJw2jSKmHAfBBCA3W6vep2AV/oCgWJVQyrwOKq1hkD/FUqJcw95QMtsJQRRcVxo9IvWCr0csXmXM0zUHT0M5vGaWCMLWmO6wMMvCKPiQw3RfR95ajpLGd5Qht5hUS71xLLiMnyYTU4/KRq+8MiZrBWa1HhUI91fHmFuqxwo8nPvDMkI9yCH4QwPRQoab7fL4CILFRFTNhaXNKHm4QYvI6exgUUYDEov8ERt1F0gvsVyxeIjklspwuC+gIqqqq5XmXgBwN31eJrxYEaRZTniKKTeu7tEZe5ipXqSz5g4rZI5ejUZMKyvJ6OVWgm2RLX+kcncl0GLVmSOkAlnEHMZVVGClvS5TjJoQlTWgBkLMms9IKiBjdCg8EWmlj2z0hlL2w3IUxdcR2GFTrkZitSC5QGFYRQ56px3mesGrFqXweBhgkGTAROSrpKqDI57opvWeZdmByePPaFVbjt8do5YjYOfEWIWpRoav8+gkI0mSEmDYEcRY3sPtKOhcaBKZtjBAOrJ7wdqfEo5GwFnRwHteOYhSpTSJ8m4IKFHVhaB6hj8kgMQX7EqBFI645Ys7S4W4fuEAs8Gu36Ov4HvcBsTpMgzjqOgFVTLbxdYh1yjkILWz7GJbHz/RMe50Ylstl/M0mUgZzFOCC2JluNMxVSkG5QnxL7kGotwKtst1ZVyjO1ZsNniUVXES9vEqYlneWWC+0HPZmymyX0/qhRFyG494GeXP/tDSk8oa+GHCRyf+852RFvZJbIqqkD7RdIcDb4hg6+Yt/wA4XAplOZdbgIKOsG/S2Wy2DOk0mkzuLDHGj6RrDbLwuSJKTI6QiRiJeOtxNETRFFOkyZ4lVGNq3GqEUOosrYMqe86P3qC/AhqeqP1mUL2JS/EodMbbrNxBfi9DK4sjljswRxOPQM5uJioKBgbx4+Y+K1tyxdB1mk84JAWrgAjUBBBSl0xrdGGg6OvzA23YEWrDogFQxTpx7X7x0sA6E11nVlKBtTPJE6zolwd6qNXfK6iyhoujW6i5QUN9ej9IwgteekdSBfvtw9e8RFIUiimxQ855h6aM8mAWYKXC4ilO65UdukA5ewuoZmTwQWQNGLiqrCMNZh5Yp790h5RnGeEHVUiiBAMCo7Lbjs8BsK2L2o+sBjaDQ5WcJZK3iCUZ8GGhbZ4feWcaRTZvZmAGLlA4JdpclEw62X1iENwg22Kocby3qJjjc+MetJ2AV1aXUSqUBsCDOL1bD0A8UqWGlFilxAYcfCCZGIbVhfH1lgJBUOHWteIottwkECC2CYnh5AVUD1cNXLrF1bAGbqKxVrR9F1/CNS8y3ynUuUhHcywDc2U+yTD+WSTRPNmvll2RYZPrKrB84X+iBd3hf9Eot5xQfiX7xT/EOOvy/qf/AEn9T/6X+p/9L/UeU+7+oD/c/qf/AGn9T/7T+p/6p/Uw/mf1P/tP6n/1n9SpOo3v4lNdHP6JhpE4RT9JQR4/TiUFfs/pg6cPH/hBgg6N9I3aiVQ13wzzUX/pKkB+usMMFAW+8GAdaoy8LdQEDoFejmGX0vt/o7ehAit3Et1swnSVX+RmkdEqFgUzPlBVh1iLhcshXIYGmZSl5j5EQFOYyKszUKxCVKDeYyV7mccy0VM8KIcNylDnMuxH0/0d0/rcqXKIq8EolQJhEyI3xfH0lSdfMbv6RWO0q9PU7Au2/pDJohO3D4jBrVLBxKdARWPvDJiVAbSuvSVQgVOk+8DqI8N308ZGIGAeQ0u3vipeawsM8m3zGECpRxopnN3Gc4hDKuOJdGkFDCs6qrXlWGWvzVAk1o1dxGNUst3M/wD5enjxKQFPETQBm21XDnFjZ9J0/YIwaay20VfaAHYGqOTzKIxHah+Y0y6YGVeneCxAwcLAYtjAYuC0SjyekFPTCZPEKJXLgFAGfrFeMyPQzKnYoB2AVXzGdq3Kqma4iYyV0WFkvdCvUxNu+YBoL1x1jXXq8bfmNXYuFeYElUKq1Zz9YApV00/NTd2HneEemopGEHIucfMLxjVI6nfSxBY+1pBC3qgA/OY4k8A/WwwcEGl8UrXiOQ2xsF8lJLcFVd5r2gAIdNogXcQ+J6QFKIrmBMFRYwa8RbgNRn1fugBRackDaXJXS/Po6/0L/jtg5/ydy5b/AI2y2W/4W+tv+nbCSyIkpVGCvOLjGEvD0DED0dyiUKZEFcoeVwM0zUMxUw9NOqJUrjq8uDvFVCPgykuCh6QXJLuPicy7pxKx6S7DmWi9xq/Wp9H9DFD9blniILXiJYRaRQT4L01lwByoNdOZYm/39ZgBS4wOt+8qIMAc6q4NnXy3OTcG4WlHNBwNGqI7Hqja2q7hSicR8uDt1gGqD15y35liaJOto94KB4WVrIidG4xEFV8qNyZ6GWZjIF26IVUA6FS1bX7xdDcMnVNrUMUGmLrcwQLev4hOkUI7LtQhbjiIUeC7tXS7xgMuMQQrATEAVbhywHeLaJSliFlm4GHiw17Rd+SWpES1r3OPdIiwtKJRnlzLhWBawHnEriDZnFd7g09gAUNNO77QbCEN5A9Rt8TYpzNQ79yoWh53PdjmXQ3cA9gqEkTitfvx8R5ReRfe43obwfhL+1LAn8Cpcri7r9iWYLNvBUfcT0usmzMFkClch5iEQjL+oEtXBwmEYUOhn53F76k6WSi2Fzsn0IEIk0c3vDhWckjFV0zl/LNyftivtF7K7v8AIRLInqqHsy4lrKog9SBlJ9WPZU6UX83FAo3f5vR1/uG/W4saMsxA7DA25x/fpt/whqZfL2rm8QpuDbDUr1WpXKrblRlKrzAbzLDLCwwhSVBrEr3KARaFgdTmJhXNGiB4qEUcy5yme7y8VK7XELx8xSDL8bY/Y7THw4qsEP63MX2ll4gp5g1liiewPTGd0AGa4abs7wADRiBqBYKI1zUdVeCKN/8A0RiowKTHSECxclAgz83GOXDKoMxGcLCXnahMgLQeYEUgjIW77hJg9ZF2803aezEO4LxReM7e0LJVRTMAwCORXAwdPiJvFHQiUCvbRFbd+hcwmVxVETZ2cMR4XN2WHDVbepiY80Y5sqso8ZXtAkhFeEqOzi9dJZjZRpsOIvWqOJdjbpBW7aLvrAlNAWtDk/8AWPDMLa7i+IFVSFsNsh9pz2Mx2YOu9doYI3YM52b76dwVF7opO1UwyHfkz4WVdK2hHsXKoCGqb+Y8FB4X1qIATzYfwLLQr6J8QCAOsL+kBbMlp9luAkQRD29ALGdfJJTwFdGHDsa6DQsQrzyxXxmGgLbWHsiIBECqr8sfGrv29rv7R7YBrElqo9ld+GWzUcn6UXciDTxHgDyVz2uL3o0bHwNzp540Ha9w3D1yTxiNQFhAp96g0Xc0fi5gMMssde/R1/uG/X9Xsz9V09G3/ClVelcpEUtZuybHob9aCAErHMPZMzMsXMamW8I7gmYGIQ8QEOkyZyxB5l6h8MyngM7TmuZfF7i21LBUAuKm/cemTsW4FiQd2RZjg1UOBZZ7YLYQK+hKzFGLKnQogHsMAEuWVFbdimy/b4hyoUFG7HX3lyVAMr5X3mdrisH67esOAO29F7SxwoBrB1f3rCLSqugDWc+8VooC14azAbkoRZ0e2PvG0E2zIaGt+9y4UcNFLKUSPWoHCCmTfKrRZC0JSM2wupkIEoB5itMS+rel0COc8R5iy+yI2YghgWx2Lh1Wqsm5TmO7JFB7HRmf4wFrKvvZQuvdKEsco0da4mK3Bmiil1d8xrqxKG8O0NL2uImwrUPci5l3Ng3X2kDSS3hg/EHIEXFV0zUETkM2fBmDqJZXZ4Llva4W15WWHdrA80wMu2LPqxG0bFVUvhqHQW3SPqf6iJWEotfBUD8IYU+CFmqLIuzVugge8ArUg2os35igpC15+SMsSxzZfiIDyxh9biWPBimflMeNstl/HxA+wmAlPZLhNRuCkPpEA2l2H3EOOu1D+o2vLEZ+LkFT3W4MLFoXTxmWpdlt8vBcFg0pEvaCVBurZ87nZ4LF2D6Ov9w36/q9mfquno2/4QaggKCkZjYVg7KpKXZ6G/SkrGEDM7MOwzMblhTLwuZfghPUgFxClrhuCC0wnrWx+tljTMIcSvXDWjG9eKrlKxUYnEILlQYMzDnJDxT8Aiq7iu3ec5PoYsLPhKM9I6zQDlwB53K1glfOGSbSqgCES0+DHWJN7BqDdmIJ1LgPN+IQlCDhOSUyjXcvSGqZLXQ+0QyjhYdD+2JURVp5YswHwW0ykFlMGGiQbvB1MURV7VoPZ4jo2KP0QvbUSHgIsg4VQKd1Amghhe9Ss/SZl+42PaUQc4hDdgTrofoypJvbRbRHMVoQXoOXxDqjaJO1n1laIwt7z3jnToRbDFv9R4DLVl1iz+4xtUmHOtGvdjq4aosOarHtFhnTaPymhgBgPmOmiUEh8uJqGFGae8VwZswz70hIp4+JCL6oNUPvl7wPchT9jzu18uv4+0y1vAHxQX8xItDVY+8HWdl+IrEXpSyos80+0asBAwLizpIj5Bd8RcZyGmv7I9CelD5Fv4iRRTKOHw3KNKZ+524TXlyH0dImtTZqvtUEOF1DEeN1Up7Q4N7Sv5hkuvIg+twrxHBT4q4iJpsAeS4tbKyhrmjcpe9Sg8Yg6uWqWfFy5doEL7ITWqk0Kt9wfR1/uG/Ut1Y/qxLYl1X49G3/AA1r644wUYiU59VUoKGOIuACXBLzmbMxEBhaAiUs5gqmLhiCBATrKUMQF4lY7zNLgYmoKwMuIC9xUVeZWaQAxTARfEtG4oLvMZZVNwJQwDDiV37zAwfHL1VDRqUGogQ6oHmOapTFA8/SBvrDU0gtaV4gdP8A1hGmoAcVfvBIAoeHh69YWUOW2Jp+8W5eyIS2nAQFFWZSg7DKm39KD3BiDYbTakUgxZXa8y8bHy5faX6LTnDfmYSdGFJ0MY9oStDgflXMcOR112HB8QeFsmfAIxVluVfySVRraqns/wDIIyFPD8j8xaQtAX9llzR5b9ZWNzQvgy3lcZK7WQcsZMQd4oB9WIeAXcLSw4S5+sX1uoSN/JB+8CaYBo+zmIBgYIa85uGiXgOnuzMyl30e6VBVVcFL+sYYDoBPMu4bss8EYZQby7pmY8M/WUyHc5hOl4rm0qIiYt6fBHL11QPqkpBQazPgqOcSqNp6tzGWtaG8fmVUPmqH1JTONCR5ggWueN9IfB5Rl2RZh1T9dS62aqUp4QYDJ1ONdw1FJiO4dzUvATbYfWLUzesP0YzzvfPSdf7hv1YdKFVZgOsRcwvpt/wo0RcAKjXTMb2jb0lQww5gU5ghXLbblqGMkMqXMKyUBHFRULByNE1zmKvdjsSVaJg6qAi6IorDOsx0ViWCoOTglIGo+ZeZU9Ljm5QdpfviKLw4D2HWZY5lV4lhhLq1LnTEvnJa67IC8KAoINehbi4IoYHmGi2XC5PiKl0FHCWGNNNxFWqem1lwgBvNR5R+/EVBr/4Mbix7Bu3XsQv2QOYxULu41xnVaeYzhQ4KoagZo6hQtGiAHljorbStwAbhdsBUOvDqu8RVJhAq+f8AwuV7BsBdDk+CcTmUfLwQqDIXMwE+A+qMOvsWT5jJYihM9kbKi8IKQBWDAofmPD3ef6zlRhieRPzLggHV6LTmc6lD9yyXi15L6xziNAROu7lWTMih5cksTbk19gI5c27Z8CVAcpSe2LLH1nf5MV6waQ31KMShyptukZO2ID0mVsQZjdCyvY+K2/B0coWrAn7A4PJEYlKTSjxiZL95Gp+WcRi0/kR884u+pGrQvG9wl/EO/pZD2WKy6G49qSFOwo5E9mq+kFcppbewJDaVdC766SDnTWbtShgQkvDgd9h+YfSnRA7n4S3bPKr8sMjCMGz0XX+4b/y2/wCFMRB6CMd4fw1CRhDuCi4FJdSgcwUTCJpxECZiI7y8YlFYgA1qCSWspooiN3KLEG+AYNRDrDzYAXzKO93OluCZVY9ENYh2B5l9JCdlPGkdgZwlkxFuYwr5l03iZ0McQs2DXB1g2CjINvX/ABWPBtalNRxMa7kvI2nN646B3mTR6DFdIOYpkHAdqlwAtoljH2utuWf3pPo4357YRlnoV8DoQCrMNsVoDf0p48sbRXUTdEVhHrXSC19XLBHLBQ8U4mdI5Nf21GTfHPbUrrcvFowFlW+wCUwIttTLnSWGwZVyuTQnaOiyadoCsIjQ+I7QyRAkWuiB8FS27Wh4qu2WNZ6AnnEWUVaK/aIrbMsr2vB8Sh47CfKREovKw13WXgBxdYs2iACuoNYCkwPy4i+uCyvrVn5jQVWCFWFG08PzLQstszncfMvZIiRQ62OHcBJW8BlAWimMZgrP2F+YmgIBC276L8A1LUh0SPcwRrIHQHiIX4tjRCSDoWssoKHy19ZeS5yXP0Rl69Sbj4dxCkJl49h3MXD1Sn0uCqs0snkiCxuav0QixlZz3GiVh4VB6w5+/o6/3Df+W3/D8dLoZywMusNbzDzmBlYvtwIyS5XzmNmIzMR0FRQuJm4IywEQ8hHLliq4JgIOpShxHVuWnmI+nctSejQA+gZRd59EjFVYlnTUtfclkBo7TFXWYPhyy46AyvEuausGiB1Y/wCAJ42TO/LxBeWzITqro7S6e5eJ8SgD4Bqa7YdOIoiR67R1pnRdsYUugWoV651J4MviAK7twDtl0eIzELgGPglulWYbld63AWQKAsfBv3Zjtd/cJWA42D9IzcmHI/Ji1MW1FPrGWEYAfSlt4e/rKGk8l+MrgFM081ASSCrllTqgC1HtNH1pA+alEPEg+gYeEfNKo8HVv4KIqshDVhOm2IOwy+l1KnJq7aWQTpNDxxEgBzg37ViKKKlmJ0WPw6rJs8jFhg45HzKVWuu+5B9bVFb8TVVuo+SpFlqFike6EZfNxj5ZZU7S1UR8EyXw9txNdmG3HzGzi4WVKtkLEfdFShNEBl8RcHQ7w5VToXEYgbWn2hZFcj7NkfsHJfMRq4YT+WzHyCZU8l2PZl+BOQH1/MFmMLnBNmvQ6/3DfqLDKg6t6QyeBbfo2/4ZzDurZnXUVWwmJ1RM63L8XKVDFTHvblJiGgCHTEI+IfFCvmWIMRDmUOOYFqDBqohqeJsUbPjWcXLzqBjaJfeJU3aiC3cu9cwg6hRAqoizfEV/DSUDsjNriJTCZN4gUzEuLAE2hUBQcEq/8QE6r309fMpXl6oGMRoXnrGytXa1EWtTjCFJftUpYMeevBMEgut489IJvul9x2+Jhh7tfzWOjzJp7jmZDD6B/Ev0S9U/NR4NgEv9cRoidYn0qD+yAj7wdicon2lTsqNzBNkW+4RvvLjAX3jTHYCBGgw4PxLiQcKBy6CsdegUqp7Yhixd4CPBAQcBd/7Idwmbx88EwkLSLeWp0t5VV8C49gWsM/LL442APiCw6THKsvpAkujkhkKmhZ95tsDf9+koYBQEMKwRiw0/eKPdhT9txcp1+FqG23Qh+hBfaM1DJauWc/MECLoM/WI2PqKitEcVPuS0WOwFQ4P2wL8JLJOsPA+8ScqXIPa4rFOAtKEIc1iHQp3NRUruIX0uIJY5qXymPR1/uG/UYX0/ZgcwEDxj0bf8KFy6hbWw9UyRCo6LZ9JqIfOY+6K97jmoiAimFYYMGswOaOoFZqWy4pr5ihZlmkwSvEpRwRkL8xRXLBXMvvRAGVo3KBA07Irq5hO1iW4StrQQbjnSCh2J7fnRVQo+0shFL8SjkAeY4Kl4/wAXCp1pRKgAg6xlgi7+t9TxH7U5rRCPeRyfcOPLHAdFZVGluMDB9iWb1pxvLj4IDuNfYKQXQ9CPvA4i2KxIaGwxI2P0CALB2fqbleH7cA4BdEPoSpeer5LChV1kKvQcEprb1D6S4+QnPXtbDbg6vX0PgmawZqHmF76yngqIFL1b6R9mQp78FZmxA5YMFXWcW/uYgRSCPmGSWWjR06oWJjCtmUoo3Vw7iXMRZKfkKamSh1tr0S4AlFLvRIahYwbY+iVsVAr+mLKZaPiJbjO1gioEzDSYJHhJ8aRaFA/N7P1miWlD6Q0dYA/FzuIiF7lkwADwVj5zBoCVi38sy163F5jETnKlr5JRgxv9gylMKsg83/caYgp4gltbkLGVrylW281EFSm2ldUyojpx6MplMplMplMplMplMplMplMplMplMplMplMplMplMpgZ9f1ezP1XT0JbKZTKZVelSmUymUymUymUymUymUymUymUymUymUymUymUymUymUymUwEiXEvEELKWDQ0CKuGI5uO9XHRcEMVNOIqMUQzx6JWZcRwS+RqKqEQFzMyLINRGJ7TIkNi5i7lmGZl7pYvaV1YBDbKNSYHUrCI/oj7iddxb4iKioNzWZk5WtExvgYTRxLjn/JVpOgGTwizQHC3KWOZqzcobYgjPXlDWplU37ELHesB5CA1Awf8A6RbCPZ+hBoPgoX4NsCC7nPe+T7EVezX5nl7VEN+xj2d1lhBqb7wXQp1FEPWHamdHVm9OewMMhzFWPmXKY62jXn8KIu5Gbk+xGiKzkXzAkoZ9l+lEtbMEQ8uYIdKP0hEdDQt2+JTngEPdox7xPbP5AixAOAx+YTCEvGge0zSPrDwQ3JVZkHeLAFo3H+CEOIjH2g+M0g+WFzukUPZAU+IoWGwTqIXLlYvIg8y1aoFpz17eId41SKFHSYowSdSrHEPFhizt0uEBKLyn7kU2Sb27Lmpj7b2vMKgLxvPtE6r+OPrMOgs1RL4XTCULkzsYrZQ4CamrlUv3mbfUv2lgIxSfeZ2FKMF/8C/q9mfqun8Aa/4B1C4Jk9Zmw/QQjItxEsjKUS2XFKXGrEGuJQIhLwQRFUz5Td4tcxFSpoE1KSdBIAAxUIgqXcdWK3NQcisS3eb1ZcRqTCiD7OYk5Je7mQ4gexQ392oenz+ZTYV20uCCVQUBH/NvKfj5QRFZoOvdisgYQ0vvuN5Lhh36J+sTzSsHsbnV7oUHuxE20GflDs6DKNgjdUe7Ov8AZg+OI77PP9CPQ0MoZDzDp1zdL2JXVLknyrMsKF08YINUCvCBm+12AOAbY8DwLECHbLdGgUHM/EBOmmyeUZiADMS35MQ02AiykMoJ76I+ltWs70j1dbD9dZvM7XlEEbu2NZYph9EcbrZWykg4CC6jqLJYOQxtJvIG7fBwCWMo8/y3HswhK4W7skCTdpMPDMyGaouJElRcMW7hHPY2V8RQPdZ07o6i0I7zfREh8dCr4lRV0OvuTNl5KWhFuL7vk9opBZhDYbiGGoXxAICW4wIoc2oDDniCcHLVlrzLPR8gW+TMMKjgaSO/Md8YT8QGdC2ErurPsJ+nfifp34gImhQPtPIWXq/ENNie0/TvxP078T9O/EykUVr7k36DMDarUDK5F0+hP078T9O/ECwkFw+agfC2I3fpqW9aYfhP7W/1P77f1P7Zf1ETCgmld/n/ABymwFkU5iIYSNcH9ejXN0aWBo6ufp34n6d+ILc6oNvr6jUyNguVRSXjWP6J+nfifp34gtzqg2+vqSc1qqh3oEumGuCfp34n6d+IKAlCoPtF5swvp6jEM1s+E/TvxP078T9O/EUGU1q+HqOFpC0viXDEqxJ9p/bT+p+XF/UOsVXMytHEakBYn+RO34WFP3mBhHUoaGISFNiVViEJZATE6aWYRQwXGUaRH5i3o7jt1Fw4KAlmLAcuYyD1ikqM+tSj+sMl8SxNzpOY+D6Wu8x8qMa9w5kIZooL8dUumWZDwimV3gv8CFdR1BonRFZQpn1Zm7GlU3H3R/uKFadOHmawkCJhlgbHliKiEpdrPx6QXTpECjsEDHVmFQ1ZJ8Cj2+WKXfCixa4aN492FujIV3E6exQfqJncukH0hMOp0uZUBgEU7Eq+hWA+Ic3Bt3sC4tvcESo6yofNy4O2VC+xxGgUUZj3j7Pe+6FGrgWlMV2DR3SCHmBX8ENZXSmBhnIFKysENkctolhBcNBBkasiD/c0eGVh8kIhDhr7wVa6NS+WlR2qTC3s1qEWPgosEFilji0xQ0niPYbwBv8AqPsLrX1uAW6AaOF8LEft3Hncp52020w+uc0qSKS1X3ShvGKMzBOrdRVRDVqktrJdSnvDQBwjcYvg9JKVW4q4U0Jiy4d7d1XEfed3KCdcG9MufrP3v9z97/cNUl5bf3Arq2p19TzpOy7xP3v9z97/AHP3v9ylauaJV5gUB6KPVgy3Mtg0fM/e/wBz97/cA4Cixf1hOKUH0Fh1KgdZVLSVm3H995vi/febX93vBgqr1mg/H+KkHQYTIGg9CUpavksfTP3v9z97/ctuksCvUajAgwV1cAgBq+X1n73+5+9/uW3SWBXrh5COcBQTVt1ufvf7n73+46wLtp9ZepGLynrqjNqXgn73+5+9/ufvf7m441RWH1u+QJww1T3Db+5sT/fecLfvvNa7z6b6w6qEP8s4clKAHC1frHAvhEpwm3LiBiAOYQuZJcIZZiPLERNolu7jmELJAFio24AC6lzKW9SJHR4MioLUapFLHO5RxhE5mzYqchLjzGR3mVYjV10AdWIyGwLXJXR3Nv8ACUKz5mgB7JiEr0alYVNXGad+stHAR0XmWr4VKcm0ctZic4gYr2CJ3qmxUciRVNC9CIS82SR3ix5wCdoPFNhR8Wyho2Kvqv8AqXV1baRWVDdLO18xJBLQHa3SvhlDS4BeCZ+sK2h1WguZ2NxS4U4uPsdaTZNMhTDYPhBbhLngIveLwatIofmVZYaHLMsO9X2JywngfEX4PIxgGeQ53HIvPE76NYP1i0sTASw6x0LGlfDxEWx1aVOgbjB6VCFK9usD0IgUU9/xEgm5VMGpI4sHvKzZmIDIPZxBcIoLLnfU+JjrAVyG67vWUaUEWwdL58xm7BwyiHNXTqEVGjeN/MaspNbyEwKdUsl1HQXHzFoWrBmUbkexzKVGjqcQYycDWVlvstjZ+P8AgVzDX8A1/wAA6g59OPwAZtx9oejJKFEAJkhm2pWQZaZzHzsRUl4mscxCWWBKrEoYKHNRVAx2NxzvMCnU9hT2RAvOPYAR6wFhuKWmZcK3UskRiI3NEdsETVpxLQgAJ3D7QgABgD+K7ZBd+dUqVRRyj/4gsxtCW/diWRvVoRJTV3Ke16jfwld4HQ7ZZTmuVEVvXpVfhMsLMb/eWulZUMHe9AZfeDZvZ2QnTTovrF8C0No6sJKC6YkcBsVGjwiu4B16xMUyZV4vLT1I0wqAzlD4i4OaRFcGLtXUcGOFxC3yg4gqId1mRKVIkY3vpoBtCi2WbjaFVYuSPWlZyS6IgWoXcrRcV+U8R8plku3JcbGVgMXzgjAl5435YLBaNQZpVxfERKaG37Ri8HPK92E1EUt5igWfpp4I5skpaKVqZgErwtS3SFghkw7WgkCyVdRKVa8lwwPAFQuFZV9kWq3ki1Emde8hIFZfBUSHuXP0lhnRT/gd3Llstlstlsu/Q1/wDr0ohiWIJLuWkWqiByQtthBziUqoAXnLSFSmVrMclNwSBDBTMFcSu3vpHvgTw8Io2fLr8TPBc/8AnBDoNP8AEEFlcs/EZ1L1SSxGOrKGTYbtieM3ErwRsAw7h+usporcZ/mLa9w+9cZLW2i/rMSCcqfmLiVOqTiY4l/xBta9iUY3OhD5ld9uro10hwADgKbTQEQd8AFnp27j5hciaSveqPapV0JlVuBAg1ZiWkK4BjnFeqRhRjEolOIOiBWvkxQUz0CCO1+BVzNjdbX0hZhOsSwVdrfMa2L2gQKJwSqBsYB9Qm8qgvZMul2TcwUOr0Jvx8Ycy2itGBMJQOBltsbrcChW2ErULYG3lZb8rzfWVFh2OsCaRQS7exzL8FULaPNuj2jWVq+AvaX1h0Z2jRKSxx+38QYZqxtVxQxOs4lXXysd2NropA6oVQtDlbWj3OpSwnTXvcQbDWzZKdldtBIdqT5h7NrectuWrmyKCtLsviXB1aMjHuq1hrCS9MDlbgh/f8SvDPUrukEPD2ansxpZRgCmfoPo/wCyAAABVloP64CwFXAbY5C7Eo00UdxR4YWU5Sq0UUd1A5YU3r60tIlnJx6ERvZRTQ10Ly0w5xMrTqk+oP0mKvpRwXEWw6xkg2R/wiw21XAd4D072EShCcaJyIPc/dfSUcRPvSoJ2D1uv+AAAAAALfrxiEBQrHOsxvslV/cvKLqP9o4ovd/tLQJVdnwy4sfoqB5hUd2rwwZHIk/EbFnsV9ptL5H9RURV0n8TR+LKUs71FgNeRMAjnNUZWUHZITANAQDhEmglK19IAiVL/wAAv/AOP480Ud4aSHxgX1IkBrGlT2j6bWy7esQEnlGY66+FuNEu9UIDQXhLblo2rdcvvENBo3qLh9UwMcImy8SzZNwHYR0+MWpfYiwpcZqh/cvgOZy13T9og2GeVenaAFDgrGgSqQfVN8po3X9SjY2i5+CI6prGX4gWpNYUSs3bBMmC9rgsDTARx0Yh/i62jasovVZ2SsZjJVXqsOAUapwMEG3NgH0EqSu3mDo494a2HAKsHurxOt2iPdfqxWB0C0utfeFS04F6C5XgCckEyR7PukzgjplEbmGE5YCOom0UaL0LlpUTvuCnilNMkJQRrVHvBnNw31hilubEVSvUkQrm3y8RbiwcRARRiclOjqCtFpWv5RLSDlz6Lr/YBusMkllgrRbqIB5VU2ejZujYQgHcYCOnngo7sBug5CrICtUuBdVbLNBuogOWDAL7CyuWYAUhQrtZsjUXFwv0+IqUNErtAixpYqOpVdumNrvCAdVvAsQcgASmxGLR8GxYGzJm6ZoQtZC448nCXf3EBKHddZEqWODHIlwKR+vRHZgdUhwGqXioliEsTcKrB5Qx3mgY9A/4ZUUPkudh8SnQ+IF6JRqiWEGL/iPmLfoNRfQt+g+hbf8AEa/wDn+NKiOiY5Dfj3I+IdWVe1xOljLnIjC3lh3qGwoyWrsBEeB7RgIi3GRAFMluS9sRtGm24rpZzzx0XXXN5gFWeMgRYwdYFd6ZTD46zPoG8B8xIo7FZLFv2mchO7NGPC5uE2hZcIS5Exw7XHQabELFDY1BShsS4bMpwIDBLbxtYUYt3giV4ob6BFXGObbd2WIeKzUhwWtbF3SInShY/kQ2Bpmo6sbKtRwXt1jGV341cIyzNDglel8rICFQYoNvTOo816k4PHMvIdNf0hmwli9IS8LUX8QkHCZtAVVnFdRyCuTnswIOXZxEOAuaaix467j5eRWCFhAcXkg01WcfwjPE6ihOmiLao2ixqEWRyD0XX+y7CMJmiKI6DSjp6XrFSWkd2QDv0uWm/TxwsOC08CeIQ2hK8gVFDM1aTVAsB2qr6K8UwQGc1ZDkT0tl0vT6KAq1OOGyxIVFUEA0ADsQT0QzkMEWpcAHMNZUgCjNcNF6C4zj+97AyAkeR/6hkuok0QFb0ydeZnIpSk2l2Y4+3UtCMoKn1qJ2t1f7pb5nDVv6xpVnlX5lL+x8xwVTSCvrF9v+/WZbzfvzB6WdH++YP3vmftX5hiBOEU/MNAY0H90W+gz943heh/smW8/6cz90/Mo8F0/shWDOn/vNgn79Zb+p9YXQv6lMMAM4d+YHr9vvHebz/fHXMdf74OFmAOPxmdqABH3n6d+ZQOcOHRp1LWABevTLHtBPnSJTvmdn7gfeKWJ1f+0/UvzAtfvd4F+99YaBeP7ZT+j9ZUYeSn3nfgA37wYAThH5iCrPV/sjRY2Bj9Yq22frzDqO6H9s+p6/5me8v6cwH2J/7y7P6j/MMoDu/wCZVCdF/wAz9K/MyKEgKcwvX0df7RUtkKDAuQA5QTLrH0toDU2sGQouaTE+EyeXrk0Yt9RkHPySudmzmDwoQX9oLtHSCDQBwJt5JWt80sr4CgAigVQDKsrWzUeoA0EwHe4ojDlZo5sa1ewcMIAUYP8A8Jdf7WR+FaUiH62YTaaaw0QFaef8AzxEUBIGT5XDxdCl64bbHO+tooqBSqZbW9otAOBuwRiyYzDLGoCgOn/4U6/2lZSZVqsKoCwMrdA5Q7mlnUEYYNc0r1YlCWRe1FQAXRa5oFd2ZLJMqJLatZq30OaWaOGYpq2A1bKbi7WFlKXAwVYtggEyP/4U6/2jv1YwQQTIUEFh2K98ONIEnFeQBJWb/wANcECK2lIsSvJSGA7ItA7dfBdAHAHHrY4SQACaIHFiWLEgag0ABQWmB5D/APC2UymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymUymU//mH/2Q==","type":"image/jpeg"},
-{"modified":"20230428145910492","title":"Draft 2 of '$:/webxr-notebook/boot.css'"},
{"modified":"20230504093652627","title":"Draft of '↪ URI.parse(url,flags)'"},
{"modified":"20230804102946971","title":"Draft of '📜 XR fragments'"},
{"modified":"20230428112728789","title":"Draft of '$:/webxr-notebook/boot.css'"},
@@ -907,7 +904,7 @@ Error message and password prompt
{"created":"20230808113746326","text":"[img[xrfragment.jpg]]\n\nHere are various ways to enhance your 3D assets/scenes with XR Fragments:\n\n| | ''difficulty'' | ''how'' | ''notes'' |\n| 1 | easiest | the xrfragment.org \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\">Sandbox\u003C/a> | open 3D file (fbx/gltf) in \u003Ca href=\"https://blender.org\" target=\"_blank\">Blender\u003C/a>, add \u003Ca href=\"https://docs.blender.org/manual/en/2.79/data_system/custom_properties.html\" target=\"_blank\">custom properties\u003C/a>, and load exported files into \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\">the sandbox\u003C/a> |\n| 2 | easy | hosted sandbox by \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-helloworld\" target=\"_blank\">forking xrfragment-helloworld\u003C/a> | Basically #1 but it will be hosted for free at your own github URL |\n| 3 | developer | fork \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-aframe-helloworld\">xfragment-aframe-helloworld\u003C/a> | requires javascript- and \u003Ca href=\"https://aframe.io\" target=\"_blank\">aframe.io\u003C/a> developer-knowledge |\n| 4 | developer | fork \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-three-helloworld\">xfragment-three-helloworld\u003C/a> | requires javascript- and \u003Ca href=\"https://threejs.org\" target=\"_blank\">threejs\u003C/a> developer-knowledge |\n| 5 | developer++ | use the [[XR Fragment parser|https://github.com/coderofsalvation/xrfragment/tree/main/dist]] | lowlevel approach, more suitable for other scenarios |\n| 6 | developer++ | implement [[the spec|📜 XR fragments]] yourself | the spec is simple: parse URL and iterate over a scene |\n\nNext to that, familiarize yourself with XR Fragments by checking these videos: \n\n1. \u003Ca href=\"https://github.com/coderofsalvation/xrfragment.media\" target=\"_blank\">All videos on github\u003C/a> (tip: star the repo)\u003Cbr>\n2. \u003Ca href=\"https://www.youtube.com/playlist?list=PLctjJGlTmeE64XPSQER2BSbjmqVGaWM4J\" target=\"_blank\">All videos on Youtube\u003C/a> (tip: subscribe or add to 'Watch-later' list)","tags":"","title":"Getting started","modified":"20230810163253952","type":"text/vnd.tiddlywiki"},
{"created":"20230425160210102","text":"\u003Cshader-doodle>\n \u003Csd-node name=\"motionblur\" prevbuffer>\n \u003Csd-node name=\"rotate\">\n \u003Csd-node name=\"basic_gl\">\n \u003Cscript type=\"x-shader/x-fragment\">\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n vec3 color = vec3(st.x, st.y, abs(sin(u_time)));\n\n gl_FragColor = vec4(color, 1.);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D basic_gl;\n\n const float PI = 3.1415926;\n\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n\n float angle = 2. * PI * (.5 + .5 * cos(u_time));\n float scale = .7 + .4 * cos(u_time);\n\n mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n vec2 p = (st - vec2(.5)) * rotation / scale + vec2(.5);\n\n gl_FragColor = p.x \u003C 0. || p.x > 1. || p.y \u003C 0. || p.y > 1.\n ? vec4(0., 0., 0., 1.)\n : texture2D(basic_gl, p);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D rotate, u_prevbuffer;\n\n void main () {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n gl_FragColor = vec4(mix(\n texture2D(rotate, st),\n texture2D(u_prevbuffer, st),\n .8\n ).rgb, 1.);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D motionblur;\n\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n gl_FragColor = texture2D(motionblur, st);\n }\n \u003C/script>\n\u003C/shader-doodle>","tags":"GLSL","title":"GLSL template","modified":"20230425170513931","type":"text/vnd.tiddlywiki"},
{"created":"20230428150217784","text":"[img[xrfragment.jpg]]\n\n\u003Cbr>\nXR Fragments standardizes and controls ''custom properties'' 🔒 inside 3D assets & scene-graphs using URI's.\u003Cbr>\nThis enables interactive ''design-driven NOCODE XR experiences'' contained in a \u003Cb>single 3D asset-file\u003C/b> (gltf/fbx e.g.).\u003Cbr>\u003Cbr>\n\n!! How can XR Browsers surf 4D URLs?\n\nUsing an \u003Cb>URL-bar\u003C/b> in your browser or app. They refer to the current destination (scene-camera settings). They are mutable by the end-user (therefore in the docs indicated with 🔓 , not 🔒)\n\u003Cbr>\u003Cbr>\u003Cbr>\n\u003Cdiv class=\"border\" style=\"border-radius:5px; padding:35px 30px 20px 20px; display:inline\">\n\t\u003Cspan class=\"big\">://\u003C/span>\n\t\u003Cspan class=\"big hi2\">url\u003C/span>\n\t\u003Cspan class=\"big hi1\">#cube\u003C/span>\n\t\u003Cspan class=\"big hi3\">&\u003C/span>\n\t\u003Cspan class=\"big hi1\">pos\u003C/span>\n\t\u003Cspan class=\"big hi3\">=\u003C/span>\n\t\u003Cspan class=\"big hi1\">0,0,0\u003C/span>\n\u003C/div>\n\n\u003Cbr>\nThe URL-processing-flow is processed as follows:\n\n\u003Cdiv style=\"margin-left:30px\">\n\u003Cb>1.\u003C/b> \u003Cb>IF\u003C/b> a `#cube` matches a custom property-key (of an object) in the 3D file/scene (`cube`: `#......`) \u003Cb>THEN\u003C/b> execute that [[predefined_view]]\n\u003Cbr>\u003Cbr>\n\u003Cb>2.\u003C/b> \u003Cb>IF\u003C/b> scene operators (`pos`) and/or animation operator (`t`) are present in the URL \u003Cb>THEN\u003C/b> set the scene-camera and/or animation-range accordingly.\n\u003Cbr>\u003Cbr>\n\u003Cb>3.\u003C/b> \u003Cb>IF\u003C/b> no camera-position has been set in \u003Cb>step 1 or 2\u003C/b> update the top-level URL with `#pos=0,0,0` ([[reference|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js#L31]])\n\u003Cbr>\u003Cbr>\n\u003Cb>4.\u003C/b> \u003Cb>IF\u003C/b> a `#cube` matches the name (of an object) in the 3D file/scene \u003Cb>THEN\u003C/b> highlight it (bounding box e.g.) and \u003Cb>look at\u003C/b> it.\n\u003C/div>\n\u003Cbr>\nFor more scene operators see [[the reference|📜 XR fragments]]\n\n> \u003Cb>NOTE\u003C/b>: the [[AFRAME/THREE libraries|https://github.com/coderofsalvation/xrfragment/tree/main/dist]] do this for you out of the box.\n\n!! How to enhance existing 3D assets/scenes?\n\nXR Fragments can be embedded as \u003Cb>metadata\u003C/b> inside 3D objects/asset/scene, which give scenes HTML-like powers:\n\n* `href` links to other assets/scenes\n* `src` the 3D version of the \u003Ca target=\"_blank\" href=\"https://www.w3.org/html/wiki/Elements/iframe\">iframe\u003C/a>\n\nIn the [[XR fragments overview|📜 XR fragments]] they are indicated with 🔒 and can easily be inserted using:\n\n* 3D editors: [[Blender|https://blender.org]], [[3DS Max|https://en.wikipedia.org/wiki/Autodesk_3ds_Max]], Maya etc (see \u003Ca target=\"_blank\" href=\"https://docs.blender.org/manual/en/2.79/data_system/custom_properties.html\">custom properties\u003C/a>). \n* Programmatically: frameworks like \u003Ca href=\"https://threejs.org\" target=\"_blank\">THREE.js\u003C/a> (`obj.userData`), \u003Ca href=\"https://godotengine.org\" target=\"_blank\">Godot\u003C/a>, Unity, Unreal etc.\n\n> \u003Cb>NOTE\u003C/b>: the [[AFRAME/THREE libraries|https://github.com/coderofsalvation/xrfragment/tree/main/dist]] automatically recognize and apply this metadata for you.\n\n!!!! Example scene\n\n```\n \n 🌎\n ├ #a: #pos=1,0,1&t=100,200&q=sphere .foo\n ├ #b: #pos=0,0,0&t=200,300&q=-sphere -.foo\n │\n ├── ◻ button\n │ └ href: #a|b\n │\n ├── ◻ sphere\n └── ◻ cube\n └ class: foo\n \t\n```\n\nWhen the user triggers `#hide` or `#show` (*) it will:\n\n* show/hide any object with name `sphere` or class `foo` (in other words: the `cube` mesh)\n* update the camera-position\n* update the current animation-range\n\n> * = by navigating the browser to `#hide` or `#show` or clicking the sphere's `href` e.g. \n\n\u003Cbr>\nCheck the [[List of official XR fragments|List of fragments]] for a complete overview.\n\u003Cbr>\n\n!! What about interaction?\n\nDuring the XR experience, [[🔓 XR fragment values|List of fragments]] can be modified (by other XR Fragments)\n\n* ''embedded'' 🔒 `href` ''values'' can modify other [[🔓 values|List of fragments]] (`href: #scale=2,2,2` e.g.)\n* ''embedded'' 🔒 `src` ''values'' can modify [[🔗 external embedded values|List of fragments]] (`other.gltf#q=cube&scale=2,2,2` e.g.)\n* ''embedded'' 💥 [[Predefined views|predefined_view]] (`myview: #pos=1,2,3` e.g.) can be triggered by `href: #myview` and `src: other.gltf#myview`)\n* some ''embedded'' values can be modified by the 👩 browsernavigator (entering `#t=1,100` in the URL addressbar e.g.)\n\nBut also roundrobin-values 🎲 (`href: #pos=0,0,0|1,0,0|0,0,1`) can create fun interactions.\n\n> see [[Getting started]] to get going!","title":"How it works","modified":"20230810163427383","type":"text/vnd.tiddlywiki"},
-{"created":"20230522115709081","text":"\n\nnavigation, portals & mutations\n\n| fragment | type | scope | example value |\n|`href`| string (uri or predefined view) | 🔒 |`#pos=1,1,0`\u003Cbr>`#pos=1,1,0&rot=90,0,0`\u003Cbr>`#pos=pyramid`\u003Cbr>`#pos=lastvisit|pyramid`\u003Cbr>`://somefile.gltf#pos=1,1,0`\u003Cbr> |\n\n[[» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/href.js]]\u003Cbr>\n[[» example 3D asset|https://github.com/coderofsalvation/xrfragment/blob/main/example/assets/href.gltf#L192]]\u003Cbr>\n[[» discussion|https://github.com/coderofsalvation/xrfragment/issues/1]]\u003Cbr>\n\n[img[xrfragment.jpg]]\n\n\n!!!spec\n\n> version 0.2\n\n1. an ''external''- or ''file URI'' fully replaces the current scene and assumes `pos=0,0,0&rot=0,0,0` by default (unless specified)\n\n2. navigation should not happen when queries (`q=`) are present in local url: queries will apply (`pos=`, `rot=` e.g.) to the targeted object(s) instead.\n\n3. navigation should not happen ''immediately'' when user is more than 2 meter away from the portal/object containing the href (to prevent accidental navigation e.g.)\n\n4. URL navigation should always be reflected in the client (in case of javascript: see [[here|https://github.com/coderofsalvation/xrfragment/blob/dev/src/3rd/js/three/navigator.js]] for an example navigator).\n\n5. In XR mode, the navigator back/forward-buttons should be always visible (using a wearable e.g., see [[here|https://github.com/coderofsalvation/xrfragment/blob/dev/example/aframe/sandbox/index.html#L26-L29]] for an example wearable)\n\n[img[navigation.png]]\n\n6. in case of navigating to a new [[pos]]ition, ''first'' navigate to the ''current position'' so that the ''back-button'' of the ''browser-history'' always refers to the previous position (see [[here|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/href.js#L97]])\n\n> above solutions were abducted from [[this|https://i.imgur.com/E3En0gJ.png]] and [[this|https://i.imgur.com/lpnTz3A.png]] survey result\n\n!!!Demo\n\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/href.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\n> capture of \u003Ca href=\"./example/aframe/sandbox\" target=\"_blank\">aframe/sandbox\u003C/a>\n\n","tags":"","title":"href","modified":"20230804104808508","type":"text/vnd.tiddlywiki"},
+{"created":"20230522115709081","text":"\n\nnavigation, portals & mutations\n\n| fragment | type | scope | example value |\n|`href`| string (uri or predefined view) | 🔒 |`#pos=1,1,0`\u003Cbr>`#pos=1,1,0&rot=90,0,0`\u003Cbr>`#pos=pyramid`\u003Cbr>`#pos=lastvisit|pyramid`\u003Cbr>`://somefile.gltf#pos=1,1,0`\u003Cbr> |\n\n[[» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/href.js]]\u003Cbr>\n[[» example 3D asset|https://github.com/coderofsalvation/xrfragment/blob/main/example/assets/href.gltf#L192]]\u003Cbr>\n[[» discussion|https://github.com/coderofsalvation/xrfragment/issues/1]]\u003Cbr>\n\n[img[xrfragment.jpg]]\n\n\n!Spec\n\nBelow is the related section of the spec (full spec here: [[HTML|doc/RFC_XR_Fragments.html]], [[TXT|doc/RFC_XR_Fragments.txt]], [[XML|doc/RFC_XR_Fragments.xml]])\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#referencing-content-href-portals\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n> solutions in the spec were abducted from [[this|https://i.imgur.com/E3En0gJ.png]] and [[this|https://i.imgur.com/lpnTz3A.png]] survey result\n\n!!!Demo\n\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/href.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\n> capture of \u003Ca href=\"./example/aframe/sandbox\" target=\"_blank\">aframe/sandbox\u003C/a>\n\n","tags":"","title":"href","modified":"20230918085752284","type":"text/vnd.tiddlywiki"},
{"created":"20230706161915394","text":"> Let's look at the browser thru the lens of XR, and not the other way around (it's a trap).\n\n* a \u003Cb>2D hyperlink\u003C/b> navigates/replaces the current document (or opens a tab)\n* a \u003Cb>hyperpreview\u003C/b> simply links/shows/summarizes an 2D/3D object/document/image\n\nA \u003Cb>hyperpreview\u003C/b> promotes \u003Cb>approximated summaries\u003C/b> of text documents, instead of fully supporting/rendering them.\u003Cbr>\nThat way, opening the content (spatially) will be offloaded to (other applications) on the client or operating system.\u003Cbr>\nThis is in contrast with traditional 2D (space-restricted) way of opening hyperlinks in new tabs (or replacing the current document).\n\n\n> Basically: the moment you want to implement HTML iframes into your spatial experience, you're looking at XR thru the lens of 2D (a common trap). The higher-dimensional recursive nature of XR Fragments \u003Cb>already allows\u003C/b> recursive (spatial i)frames.\n\n## Spec 0.5\n\n1. mimetype `text/html` instanced by [src](#src) should should be \u003Cb>hyperpreviewable\u003C/b> (a non-interactive 2D image-texture).\n\n2. When interacting with a \u003Cb>hyperpreview\u003C/b>, the XR Fragment host/client should offer copy/share of the adress (to clipboard and optionally other applications which can handle the mimetype).\n\n3. \u003Cb>hyperpreviews\u003C/b> should not aim for achieving 100% render-compatibility of all mimetypes. The goal is \u003Cb>addressbility\u003C/b> and \u003Cb>approximated summarization\u003C/b>, not embedding javascript-supported browser-iframes.\n\n4. Designers can solve unsupported mimetypes by using `src` for an image-thumbnail and `href` for the content (which should be offloaded to the (applications on) the operatingsystem)\n\nmimetype behaviour when user interacts with `src`:\n\n| mimetype | render | hyperpreview | action | update URL fragment | clipboard contents after clicking |\n|-|-|-|-|-|-|\n|\u003Cb>unknown mimetypes\u003C/b>| no | \n|text/html| no | yes |\u003Cb>summarize\u003C/b> HTML-text (first paragraph hinted by a fragment identifier e.g.) using crude html-to-image | name of object (`#website`) |\n|\u003Cb>3d objects\u003C/b>\u003Cbr>model/gltf+json\u003Cbr>model/glb\u003Cbr>model/obj\u003Cbr>..and so on | yes | no | highlight \u003Cbr>(draw boundingbox e.g.) | name of object (`#cube` e.g.) | `src`-value + linebreak + url with fragment: `http://other.com/other.gltf`\u003Cbr>`https://foo.com/#cube`\u003Cbr>Sharing such 'trail' (with the clipboardmanager) promotes backwards-reasoning (`other.gltf` is a cube in `scene.gltf` e.g.)\n|\u003Cb>images\u003C/b>\u003Cbr>image/png\u003Cbr>image/jpg\u003Cbr>image/gif\u003Cbr>..and so on | yes | no | highlight \u003Cbr>(draw border/boundingbox e.g.) | name of object (`#poster` e.g.) | object url with fragment (`https://foo.com/#cube` e.g.)\n\n\u003Chr>\n\n\u003Cb>Example\u003C/b>: embed an HTML document into your scene\n\n* create a plane with custom property [src](#src) and value `https://mysite.com/foo.html#summary` or `https://mysite.com/foo.html#chapter1`. \n* add custom property [\nso that the XR Fragment client can easily render a html-to-image conversion to a texture.\u003Cbr>\nThis is perfect for simple text.\u003Cbr>\nCRUD/scripting/animations don't belong in \u003Cb>hyperpreviews\u003C/b> and can partially be re-used in the 3D assets (using [src](#src) or fbx/gltf animations).\u003Cbr>\n\n\u003Chr>\n\n\u003Cb>Q\u003C/b>: How can I embed text from a textfile on a server?\n\n\u003Cb>A\u003C/b>: create an [src](#src) with value `https://mysite.com/foo.txt` so that the XR Fragment client can easily render a html-to-image conversion to a (non)scrolling texture.\u003Cbr>\n\n\u003Cbr>\n\n## Why are hyperpreviews so limited?\n\nBecause \u003Cb>hyperpreviews\u003C/b> separate the following concerns of hyperlinks: navigation, addressibility, interaction and rendering.\n\u003Cbr>\nIn \u003Cb>2D hyperlinks\u003C/b> we click links, which \u003Cb>navigates us to\u003C/b> AND \u003Cb>renders\u003C/b> the destination.\n\u003Cbr>\n\u003Cbr>\nIn Spatial Experiences endusers are better off \u003Cb>hyperpreviewing\u003C/b> hyperlinks, which optionally can (due to their \u003Cb>addressibility\u003C/b> be opened in another application or device).\u003Cbr>\n\u003Cbr>\n> The aim/goal of forcing a user to interact with all mimetypes spatially is not realistic.\n\nIf we would indulge on the latter, we're opening a can of worms regarding:\n\n* security (malicious actors thrive when going beyond read-only previews or `HTTP GET`)\n* the spatial browser becomes **mimetype-rendering-silos** (ballooning in size & support)\n* rendering speed / framedropping","tags":"","title":"hyperpreview vs 2D hyperlinks","modified":"20230707090417999","type":"text/markdown"},
{"title":"image.png","text":"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","type":"image/png"},
{"title":"interlinked.png","text":"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","type":"image/png"},
@@ -954,16 +951,16 @@ Error message and password prompt
{"created":"20230527171212961","text":"!!Bold redefinition of URLs\nMultidimensional Cognitive Transformers (MCT)\n\n\u003C$image source=\"feedback.png\" width=\"300\"/>\n\u003Cbr>\n\u003Cmedium>\n\"//an interesting feedbackloop of experiences becoming metadata of text and/or vice-versa//\"\n\u003C/medium>\n\u003Cbr>\n","tags":"Slide_FutureOfText","title":"Slide_FutureOfText/16","modified":"20230528181858689"},
{"created":"20230527180848742","text":"\n\u003C$image source=\"neo.png\" width=\"700\"/>\n","tags":"Slide_FutureOfText","title":"Slide_FutureOfText/17","modified":"20230528153959478"},
{"created":"20230528154003553","text":"!Thank You\n\nhttps://coderofsalvation.github.io/xrfragment\n\nleonvankammen@gmail.com","tags":"Slide_FutureOfText","title":"Slide_FutureOfText/18","modified":"20230529112652163"},
-{"created":"20230620103309687","text":"`src` is the 3D version of the \u003Ca target=\"_blank\" href=\"https://www.w3.org/html/wiki/Elements/iframe\">iframe\u003C/a>.\u003Cbr>\nIt instances content (in objects) in the current scene/asset.\n\n| fragment | type | scope | example value |\n|`src`| string (uri or [[predefined view|predefined_view]] or [[query|queries]]) | 🔓 💥 🔗 |`#q=cube`\u003Cbr>`#q=cube -ball_inside_cube`\u003Cbr>`#q=* -/sky -rain`\u003Cbr>`#q=-.language .english`\u003Cbr>`#q=price:>2 price:\u003C5`\u003Cbr>`https://linux.org/penguin.png`\u003Cbr>`https://linux.world/distrowatch.gltf#t=1,100`\u003Cbr>`linuxapp://conference/nixworkshop/apply.gltf#q=flyer`\u003Cbr>`androidapp://page1?tutorial#pos=0,0,1&t1,100`|\n\n[[» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js]]\u003Cbr>\n[[» example 3D asset|https://github.com/coderofsalvation/xrfragment/blob/main/example/assets/query.gltf#L192]]\u003Cbr>\n[[» discussion|https://github.com/coderofsalvation/xrfragment/issues/4]]\u003Cbr>\n\n\u003Cbr>\n\u003Ciframe class=\"border\" src=\"./example/aframe/sandbox?./assets/src.gltf#pos=0,0,0\" frameborder=\"0\" style=\"width:100%; height:70%; min-height:500px;\"/>\n\u003Cbr>\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/src.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\u003Cbr>\n\n!!!spec\n\n> version 0.2\n\n1. local/remote content is instanced by the `src` (query) value (and attaches it to the placeholder mesh containing the `src` property) [[example code|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js]]\n\n2. \u003Cb>internal\u003C/b> `src` values (starting with `#`) means all included objects (from the current scene) will be copied to the instanced scene (after applying the query if any) while preserving their names (to support recursive selectors). [[(example code)|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js]] \n\n3. the instanced scene (from a `src` value) should be \u003Cb>scaled accordingly\u003C/b> to its placeholder object or \u003Cb>scaled relatively\u003C/b> based on the scale-property (of a geometry-less placeholder, an 'empty'-object in blender e.g.). For more info see [[scaling of instanced objects|scaling of instanced objects]]\n\n4. \u003Cb>external\u003C/b> `src` (file) values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are:\n\n* `model/gltf+json`\n* `image/png`\n* `image/jpg`","tags":"","title":"src","modified":"20230808110232979","type":"text/vnd.tiddlywiki"},
+{"created":"20230620103309687","text":"`src` is the 3D version of the \u003Ca target=\"_blank\" href=\"https://www.w3.org/html/wiki/Elements/iframe\">iframe\u003C/a>.\u003Cbr>\nIt instances content (in objects) in the current scene/asset.\n\n| fragment | type | scope | example value |\n|`src`| string (uri or [[predefined view|predefined_view]] or [[query|queries]]) | 🔓 💥 🔗 |`#cube`\u003Cbr>`#q=-ball_inside_cube`\u003Cbr>`#q=-/sky -rain`\u003Cbr>`#q=-.language .english`\u003Cbr>`#q=price:>2 price:\u003C5`\u003Cbr>`https://linux.org/penguin.png`\u003Cbr>`https://linux.world/distrowatch.gltf#t=1,100`\u003Cbr>`linuxapp://conference/nixworkshop/apply.gltf#q=flyer`\u003Cbr>`androidapp://page1?tutorial#pos=0,0,1&t1,100`|\n\n[[» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js]]\u003Cbr>\n[[» example 3D asset|https://github.com/coderofsalvation/xrfragment/blob/main/example/assets/query.gltf#L192]]\u003Cbr>\n[[» discussion|https://github.com/coderofsalvation/xrfragment/issues/4]]\u003Cbr>\n\n\u003Cbr>\n\u003Ciframe class=\"border\" src=\"./example/aframe/sandbox?./assets/src.gltf#pos=0,0,0\" frameborder=\"0\" style=\"width:100%; height:70%; min-height:500px;\"/>\n\u003Cbr>\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/src.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\u003Cbr>\n\n!Spec\n\nBelow is the related section of the spec (full spec here: [[HTML|doc/RFC_XR_Fragments.html]], [[TXT|doc/RFC_XR_Fragments.txt]], [[XML|doc/RFC_XR_Fragments.xml]])\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#embedding-content-src-instancing\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n","tags":"","title":"src","modified":"20230918090216052","type":"text/vnd.tiddlywiki"},
{"created":"20230830155333431","text":"","tags":"Reference","title":"The Future","modified":"20230830155347095"},
{"created":"20230622104423767","text":"The parser is the heart ❤ of XR Fragments, and used by XR Fragment browsers.\u003Cbr>\nIt's available as:\n\n| language | link |\n|-|-|\n| python | \u003Ca href=\"./dist/xrfragment.py\" target=\"_blank\">xrfragment.py\u003C/a> |\n| lua | \u003Ca href=\"./dist/xrfragment.lua\" target=\"_blank\">xrfragment.lua\u003C/a> |\n| javascript | \u003Ca href=\"./dist/xrfragment.js\" target=\"_blank\">xrfragment.js\u003C/a> |\n| javascript | \u003Ca href=\"./dist/xrfragment.module.js\" target=\"_blank\">xrfragment.module.js\u003C/a> |\n| any language | \u003Ca href=\"https://github.com/coderofsalvation/xrfragment/blob/main/build.hxml\" target=\"_blank\">using HaXe\u003C/a> |\n| spec | you can literally write a parser yourself, the spec is kept very easy intentionally |\n\n\u003Cbr>\nWith that, you can immediately add 4D \u003Cb>addressibility\u003C/b> to your app like this:\n\u003Cbr>\u003Cbr>\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:205px;width:100%;max-width:800px;\">import xrfragment from './dist/xrfragment.module.js';\n// read URL\nlet url = `mysite.com/#pos=0,0,1&rot=0,90,34&t=500,100&mycustom=123` // replace with document.location.href\nlet spatialAddress = xrfragment.URI.parse(url)\n \n// share URL\nlet player = {pos:[0,0,1],rot:[0,90,45],t:[500,100]} // position 0,0,1 rot 0,90,45 animationrange frame 500-100\nlet {protocol,host,path,search} = document.location\nalert(`${protocol}//${host}${path}${search}#pos=${player.pos.join(',')}&rot=${player.rot.join(',')}&t=${player.t.join(',')}`)\n\u003C/textarea>\n\u003C/div> \n\n> Congrats! After connecting `pos` and `rot` to your camera, and providing back/forward navigation, you have a \u003Cb>XR Fragments navigator\u003C/b>-compliant client.\n\n\u003Cbr>\n\nFor example, the [AFRAME](#AFRAME) / [THREE.js](#THREE.js) client-libraries use it like this:\n\u003Cbr>\n\n\u003Cdiv>\n \u003Ctextarea style=\"min-height:130px\" spellcheck=\"false\" autofocus class=\"sandboxify\">let out = {}\nxrfragment.Parser.parse(\"pos\",\"0,0,1\", out)\nout.uri = xrfragment.URI.parse(\"#pos=0,0,1&nonspec=1\")\nout.query = new xrfragment.Query(\"foo -bar\")\nconsole.log(out)\n\u003C/textarea>\n\t\u003Cpre class=\"result\" style=\"min-height:300px\">\u003C/pre>\n\u003C/div>\n\n> If you want to build your own client/browser, see the documentation for these functions in the sidemenu\n\n| function | info |\n|-|-|\n| `xrfragment.Query( query )` | see [Query](#↪%20Query(query)) |\n| `xrfragment.URI.parse( str, flag )` | see [URI.parse](#↪%20URI.parse(url%2Cfilter)) |\n| `xrfragment.Parser.parse(k,v,store)` | see [Parser.parse](#↪%20Parser.parse(k%2Cv%2Cstore)) |\n","tags":"Reference","title":"The parser","modified":"20230627095652938","type":"text/markdown"},
{"created":"20230523125247478","text":"\u003Ciframe class=\"border\" src=\"./example/threejs/sandbox\" frameborder=\"0\" style=\"width:100%; height:70%; min-height:500px;\"/>\n\n","tags":"Examples","title":"THREE","modified":"20230523125511253"},
{"created":"20230426160615931","text":"\u003Cdiv class=\"scene\">\u003C/div>\n\n\u003C\u003Cscript>>\n\u003Cscript>\n $scene = document.querySelector(\".scene\")\n\tscene = new THREE.Scene();\n camera = new THREE.PerspectiveCamera( 75, $scene.offsetWidth / $scene.offsetHeight, 0.1, 1000 );\n\n\trenderer = new THREE.WebGLRenderer();\n renderer.setSize( $scene.offsetWidth, $scene.offsetHeight );\n $scene.appendChild( renderer.domElement );\n\t\n\tvar geometry = new THREE.BoxGeometry( 1, 1, 1 );\n\tvar material = new THREE.MeshBasicMaterial( { color: 0x0a84ff } );\n\tvar cube = new THREE.Mesh( geometry, material );\n\tscene.add( cube );\n\tscene.background = new THREE.Color( 0x18181c );\n\n\tcamera.position.z = 2;\n\n\tfunction animate() {\n\t\trequestAnimationFrame( animate );\n\n\t\tcube.rotation.x += 0.004;\n\t\tcube.rotation.y += 0.004;\n\n\t\trenderer.render( scene, camera );\n\t}\n\n\tanimate();\t\n\tlog(\"hello world\")\n\u003C/script>","title":"THREE template","modified":"20230523125639178","tags":""},
{"created":"20230425154949623","text":"\u003Cscript async src=\"https://unpkg.com/es-module-shims@1.6.3/dist/es-module-shims.js\">\u003C/script>\n\n\u003Cscript type=\"importmap\">\n{\n\t\"imports\": {\n\t\t\"three\": \"https://unpkg.com/three@0.151.3/build/three.module.js\",\n\t\t\t\"three/addons/\": \"https://unpkg.com/three@0.151.3/examples/jsm/\"\n\t}\n}\n\u003C/script>\n\n\u003Cscript type=\"module\">\nimport * as THREE from 'three';\n\nimport { BoxLineGeometry } from 'three/addons/geometries/BoxLineGeometry.js';\nimport { VRButton } from 'three/addons/webxr/VRButton.js';\nimport { XRControllerModelFactory } from 'three/addons/webxr/XRControllerModelFactory.js';\n\nlet camera, scene, raycaster, renderer;\nlet controller1, controller2;\nlet controllerGrip1, controllerGrip2;\n\nlet room, marker, floor, baseReferenceSpace;\n\nlet INTERSECTION;\nconst tempMatrix = new THREE.Matrix4();\n\ninit();\nanimate();\n\nfunction init() {\n\n\tscene = new THREE.Scene();\n\tscene.background = new THREE.Color( 0x505050 );\n\n\tcamera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.1, 10 );\n\tcamera.position.set( 0, 1, 3 );\n\n\troom = new THREE.LineSegments(\n\t\t\tnew BoxLineGeometry( 6, 6, 6, 10, 10, 10 ).translate( 0, 3, 0 ),\n\t\t\tnew THREE.LineBasicMaterial( { color: 0x808080 } )\n\t\t\t);\n\tscene.add( room );\n\n\tscene.add( new THREE.HemisphereLight( 0x606060, 0x404040 ) );\n\n\tconst light = new THREE.DirectionalLight( 0xffffff );\n\tlight.position.set( 1, 1, 1 ).normalize();\n\tscene.add( light );\n\n\tmarker = new THREE.Mesh(\n\t\t\tnew THREE.CircleGeometry( 0.25, 32 ).rotateX( - Math.PI / 2 ),\n\t\t\tnew THREE.MeshBasicMaterial( { color: 0x808080 } )\n\t\t\t);\n\tscene.add( marker );\n\n\tfloor = new THREE.Mesh(\n\t\t\tnew THREE.PlaneGeometry( 4.8, 4.8, 2, 2 ).rotateX( - Math.PI / 2 ),\n\t\t\tnew THREE.MeshBasicMaterial( { color: 0x808080, transparent: true, opacity: 0.25 } )\n\t\t\t);\n\tscene.add( floor );\n\n\traycaster = new THREE.Raycaster();\n\n\trenderer = new THREE.WebGLRenderer( { antialias: true } );\n\trenderer.setPixelRatio( window.devicePixelRatio );\n\trenderer.setSize( window.innerWidth, window.innerHeight );\n\trenderer.outputEncoding = THREE.sRGBEncoding;\n\n\trenderer.xr.addEventListener( 'sessionstart', () => baseReferenceSpace = renderer.xr.getReferenceSpace() );\n\trenderer.xr.enabled = true;\n\n\tdocument.body.appendChild( renderer.domElement );\n\tdocument.body.appendChild( VRButton.createButton( renderer ) );\n\n\t// controllers\n\n\tfunction onSelectStart() {\n\n\t\tthis.userData.isSelecting = true;\n\n\t}\n\n\tfunction onSelectEnd() {\n\n\t\tthis.userData.isSelecting = false;\n\n\t\tif ( INTERSECTION ) {\n\n\t\t\tconst offsetPosition = { x: - INTERSECTION.x, y: - INTERSECTION.y, z: - INTERSECTION.z, w: 1 };\n\t\t\tconst offsetRotation = new THREE.Quaternion();\n\t\t\tconst transform = new XRRigidTransform( offsetPosition, offsetRotation );\n\t\t\tconst teleportSpaceOffset = baseReferenceSpace.getOffsetReferenceSpace( transform );\n\n\t\t\trenderer.xr.setReferenceSpace( teleportSpaceOffset );\n\n\t\t}\n\n\t}\n\n\tcontroller1 = renderer.xr.getController( 0 );\n\tcontroller1.addEventListener( 'selectstart', onSelectStart );\n\tcontroller1.addEventListener( 'selectend', onSelectEnd );\n\tcontroller1.addEventListener( 'connected', function ( event ) {\n\n\t\t\tthis.add( buildController( event.data ) );\n\n\t\t\t} );\n\tcontroller1.addEventListener( 'disconnected', function () {\n\n\t\t\tthis.remove( this.children[ 0 ] );\n\n\t\t\t} );\n\tscene.add( controller1 );\n\n\tcontroller2 = renderer.xr.getController( 1 );\n\tcontroller2.addEventListener( 'selectstart', onSelectStart );\n\tcontroller2.addEventListener( 'selectend', onSelectEnd );\n\tcontroller2.addEventListener( 'connected', function ( event ) {\n\n\t\t\tthis.add( buildController( event.data ) );\n\n\t\t\t} );\n\tcontroller2.addEventListener( 'disconnected', function () {\n\n\t\t\tthis.remove( this.children[ 0 ] );\n\n\t\t\t} );\n\tscene.add( controller2 );\n\n\t// The XRControllerModelFactory will automatically fetch controller models\n\t// that match what the user is holding as closely as possible. The models\n\t// should be attached to the object returned from getControllerGrip in\n\t// order to match the orientation of the held device.\n\n\tconst controllerModelFactory = new XRControllerModelFactory();\n\n\tcontrollerGrip1 = renderer.xr.getControllerGrip( 0 );\n\tcontrollerGrip1.add( controllerModelFactory.createControllerModel( controllerGrip1 ) );\n\tscene.add( controllerGrip1 );\n\n\tcontrollerGrip2 = renderer.xr.getControllerGrip( 1 );\n\tcontrollerGrip2.add( controllerModelFactory.createControllerModel( controllerGrip2 ) );\n\tscene.add( controllerGrip2 );\n\n\t//\n\n\twindow.addEventListener( 'resize', onWindowResize, false );\n\n}\n\nfunction buildController( data ) {\n\n\tlet geometry, material;\n\n\tswitch ( data.targetRayMode ) {\n\n\t\tcase 'tracked-pointer':\n\n\t\t\tgeometry = new THREE.BufferGeometry();\n\t\t\tgeometry.setAttribute( 'position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 0, 0, - 1 ], 3 ) );\n\t\t\tgeometry.setAttribute( 'color', new THREE.Float32BufferAttribute( [ 0.5, 0.5, 0.5, 0, 0, 0 ], 3 ) );\n\n\t\t\tmaterial = new THREE.LineBasicMaterial( { vertexColors: true, blending: THREE.AdditiveBlending } );\n\n\t\t\treturn new THREE.Line( geometry, material );\n\n\t\tcase 'gaze':\n\n\t\t\tgeometry = new THREE.RingGeometry( 0.02, 0.04, 32 ).translate( 0, 0, - 1 );\n\t\t\tmaterial = new THREE.MeshBasicMaterial( { opacity: 0.5, transparent: true } );\n\t\t\treturn new THREE.Mesh( geometry, material );\n\n\t}\n\n}\n\nfunction onWindowResize() {\n\n\tcamera.aspect = window.innerWidth / window.innerHeight;\n\tcamera.updateProjectionMatrix();\n\n\trenderer.setSize( window.innerWidth, window.innerHeight );\n\n}\n\n//\n\nfunction animate() {\n\trenderer.setAnimationLoop( render );\n}\n\nfunction render() {\n\n\tINTERSECTION = undefined;\n\n\tif ( controller1.userData.isSelecting === true ) {\n\t\ttempMatrix.identity().extractRotation( controller1.matrixWorld );\n\t\traycaster.ray.origin.setFromMatrixPosition( controller1.matrixWorld );\n\t\traycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix );\n\t\tconst intersects = raycaster.intersectObjects( [ floor ] );\n\t\tif ( intersects.length > 0 ) {\n\t\t\tINTERSECTION = intersects[ 0 ].point;\n\t\t}\n\t} else if ( controller2.userData.isSelecting === true ) {\n\t\ttempMatrix.identity().extractRotation( controller2.matrixWorld );\n\t\traycaster.ray.origin.setFromMatrixPosition( controller2.matrixWorld );\n\t\traycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix );\n\t\tconst intersects = raycaster.intersectObjects( [ floor ] );\n\t\tif ( intersects.length > 0 ) {\n\t\t\tINTERSECTION = intersects[ 0 ].point;\n\t\t}\n\t}\n\n\tif ( INTERSECTION ) marker.position.copy( INTERSECTION );\n\tmarker.visible = INTERSECTION !== undefined;\n\trenderer.render( scene, camera );\n\n}\n\n\u003C/script>\n","tags":"","title":"THREE template #online","modified":"20230523125650516","type":"text/html"},
-{"created":"20230508095631417","text":"Here you can download \u003Ca href=\"./dist/xrfragment.three.js\" target=\"_blank\">xrfragment.three.js\u003C/a> or \u003Ca href=\"./dist/xrfragment.three.module.js\" target=\"_blank\">xrfragment.three.module.js\u003C/a>, and here's how to empower your [THREE.js app](https://threejs.org) with XR Fragments:\n\u003Cbr>\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:205px;width:100%;max-width:800px;\">import xrfragment from './dist/xrfragment.three.js';\n \n/* enable XR fragments */\nlet XRF = xrf.init({ \n\tTHREE,\n\tcamera,\n\tscene,\n\trenderer,\n\tdebug: true,\n\tloaders: [ GLTFLoader, FBXLoader ], // specify 3D assets to scan for embedded XR fragments \n})\n\u003C/textarea>\n\u003C/div> \n\n> [`xrf.init()`](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/index.js#L4) injects itself into THREE.js. It'll automatically detect any XR Fragments in 3D assets (loaded afterwards). \u003Cbr>On top of that, it'll reflect changes in the URL-bar.\n\n\u003Cbr>\nThe snippet above can be found \u003Ca href=\"https://github.com/coderofsalvation/xrfragment/blob/main/example/threejs/sandbox/index.html#L92-L112\" target=\"_blank\">in this source-example\u003C/a> or see it in action here:\n\u003Cbr>\u003Cbr>\n\n\u003Ciframe class=\"border\" src=\"./example/threejs/sandbox\" frameborder=\"0\" style=\"width:100%; height:70vh\"/>\n\n\u003Cbr>\nThe example above loads a gltf-scene which contains \u003Cb>embedded XR fragments\u003C/b> which:\n\n* specifies the unit of the model (`1m` aka 1.0 is 1 meter) for roomscale XR/AR/VR purposes\n* initializes an **env**ironmentmap for lighting (by referencing an embedded **envmap** image)\n* replaces certain objects with \u003Cb>tiny clones of itself\u003C/b> by instancing `src` selfreferences (`src: #q=cube` and `src: #q=* -sky -cube`)\n\nFor all XR fragments see [the list](#📜%20XR%20fragments)\n\n\u003Ch2>Events / Customizing \u003C/h2>\n\nThere are various ways to customize the behaviour of xrfragments.\n \nThere's the `addEventListener` which allows promise-ification of events:\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:240px;width:100%;max-width:800px;\">\nXRF.addEventListener('href',(e) => {\n if( e.click ){\n const promise = e.promise() // optional promisify event\n promise.resolve() // teleport\n promise.reject('nope') // do not teleport\n }\n})\n \nXRF.addEventListener('foobar', console.log ) \nXRF.emit('foobar',{x:1}) // emit custom event\n .then( () => alert('hello') ) // optional\n\u003C/textarea>\n\u003C/div>\n\u003Cbr>\n\n| event | info |\n|-------|------|\n| **init** | emitted when xrf.init() is being called |\n| **href** | emitted when user interacts with [href](#href) ('hover' or click) |\n| **eval** | emitted when *any* XR fragment is being (re)processed |\n| **predefinedView** | emitted when [predefined view](#predefined_view) is triggered |\n| **selection** | emitted when [Selection of Interest](Selection%20Of%20Interest) is triggered |\n| **updateHash** | emitted when top-level URI (XR Fragments) hash changes |\n\n\u003Cbr>\nYou can also override/patch the init-code per XR fragment:\n\u003Cbr>\u003Cbr>\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:120px;width:100%;max-width:800px;\">\n// modify the original init-code for href fragments\nXRF.href = (xrf,v,opts) => {\n let { mesh, model, camera, scene, renderer, THREE} = opts\n xrf(v,opts) // runs original init-code\n}\n \n\u003C/textarea>\n\u003C/div>\n\u003Cbr>\nAnd in the same fashion, you can introduce init-code which reacts to custom properties embedded in 3D assets (which are not part of the XR Fragment spec).\n\u003Cbr>\nThis is handy for attaching framework-specific logic to your assets:\n\u003Cbr>\u003Cbr>\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:140px;width:100%;max-width:800px;\">\n// optional: react/extend/hook to unofficial custom property inside asset\nXRF.foobar = (xrf,v,opts) => {\n let { mesh, model, camera, scene, renderer, THREE} = opts\n console.log(\"hello custom property 'foobar'\")\n}\n\u003C/textarea>\n\u003C/div>\n\n### Navigator\n\nTo navigate manually call `XRF.navigate.to( 'foo.gltf#pos=1,1,1' )` e.g.\nThe [default navigator](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js) is tied to the browser-history, but you can also provide your own navigator:\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:250px;width:100%;max-width:800px;\">\n/* enable XR fragments */\nlet XRF = xrfragment.init({ \n\tTHREE,\n\tcamera,\n\tscene,\n\trenderer,\n\tdebug: true,\n\tloaders: [ GLTFLoader, FBXLoader ],\n\tnavigator: {\n\t to: (url,event) => { ... },\n\t\tinit: () => { ... },\n\t\tpushState: () => { ... }\n\t}\n})\n\u003C/textarea>\n\u003C/div>\n\n> see [default navigator](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js) for an example implementation\n\n### Accessing the parser / internals\n\nBesides `XRF.navigate.to( 'foo.gltf#pos=1,1,1' )`, you'd probaby never need to mess with the internals (besides using `addEventListeners`).\n\u003Cbr>\nApart from that, here are some internal functions:\n\n| function | info |\n|-|-|\n| `XRF.reset()` | completely wipe current XR Fragment related meshes from scene |\n| `XRF.add(mesh)` | add mesh to scene (which gets wiped by `XRF.reset()` / scene-replacement |\n| `XRF.parseModel( model, url)` | evaluates all XR Fragments found in mesh model |\n| `XRF.parseUrl(url)` | helper function which breaks down url-parts |\n| `XRF.URI.parse( str, flag )` | see [URI.parse](#↪%20URI.parse(url%2Cfilter)) |\n| `XRF.Parser.parse(k,v,store)` | see [Parser.parse](#↪%20Parser.parse](k%2Cv%2Cstore) |\n","tags":"[[The parser]]","title":"THREE.js","modified":"20230622111700625","type":"text/markdown"},
+{"created":"20230508095631417","text":"Here you can download \u003Ca href=\"./dist/xrfragment.three.js\" target=\"_blank\">xrfragment.three.js\u003C/a> or \u003Ca href=\"./dist/xrfragment.three.module.js\" target=\"_blank\">xrfragment.three.module.js\u003C/a>, and here's how to empower your [THREE.js app](https://threejs.org) with XR Fragments:\n\u003Cbr>\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:205px;width:100%;max-width:800px;\">import xrfragment from './dist/xrfragment.three.js';\n \n/* enable XR fragments */\nlet XRF = xrf.init({ \n\tTHREE,\n\tcamera,\n\tscene,\n\trenderer,\n\tdebug: true,\n\tloaders: [ GLTFLoader, FBXLoader ], // specify 3D assets to scan for embedded XR fragments \n})\n\u003C/textarea>\n\u003C/div> \n\n> [`xrf.init()`](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/index.js#L4) injects itself into THREE.js. It'll automatically detect any XR Fragments in 3D assets (loaded afterwards). \u003Cbr>On top of that, it'll reflect changes in the URL-bar.\n\n\u003Cbr>\nThe snippet above can be found \u003Ca href=\"https://github.com/coderofsalvation/xrfragment/blob/main/example/threejs/sandbox/index.html#L92-L112\" target=\"_blank\">in this source-example\u003C/a> or see it in action here:\n\u003Cbr>\u003Cbr>\n\n\u003Ciframe class=\"border\" src=\"./example/threejs/sandbox\" frameborder=\"0\" style=\"width:100%; height:70vh\"/>\n\n\u003Cbr>\nThe example above loads a gltf-scene which contains \u003Cb>embedded XR fragments\u003C/b> which:\n\n* specifies the unit of the model (`1m` aka 1.0 is 1 meter) for roomscale XR/AR/VR purposes\n* initializes an **env**ironmentmap for lighting (by referencing an embedded **envmap** image)\n* replaces certain objects with \u003Cb>tiny clones of itself\u003C/b> by instancing `src` selfreferences (`src: #q=cube` and `src: #q=* -sky -cube`)\n\nFor all XR fragments see [the list](#📜%20XR%20fragments)\n\n\u003Ch2>Events / Customizing \u003C/h2>\n\nThere are various ways to customize the behaviour of xrfragments.\n \nThere's the `addEventListener` which allows promise-ification of events:\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:240px;width:100%;max-width:800px;\">\nXRF.addEventListener('href',(e) => {\n if( e.click ){\n const promise = e.promise() // optional promisify event\n promise.resolve() // teleport\n promise.reject('nope') // do not teleport\n }\n})\n \nXRF.addEventListener('foobar', console.log ) \nXRF.emit('foobar',{x:1}) // emit custom event\n .then( () => alert('hello') ) // optional\n\u003C/textarea>\n\u003C/div>\n\u003Cbr>\n\n> Above you can see how [XR Macro's](#⏯%EF%B8%8F%20XR%20Macros) extend the XR Fragments parser with custom behaviour.\n\n| event | info |\n|-------|------|\n| **init** | emitted when xrf.init() is being called |\n| **href** | emitted when user interacts with [href](#href) ('hover' or click) |\n| **eval** | emitted when *any* XR fragment is being (re)processed |\n| **predefinedView** | emitted when [predefined view](#predefined_view) is triggered |\n| **selection** | emitted when [Selection of Interest](Selection%20Of%20Interest) is triggered |\n| **updateHash** | emitted when top-level URI (XR Fragments) hash changes |\n\n\u003Cbr>\nYou can also override/patch the init-code per XR fragment:\n\u003Cbr>\u003Cbr>\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:120px;width:100%;max-width:800px;\">\n// modify the original init-code for href fragments\nXRF.href = (xrf,v,opts) => {\n let { mesh, model, camera, scene, renderer, THREE} = opts\n xrf(v,opts) // runs original init-code\n}\n \n\u003C/textarea>\n\u003C/div>\n\u003Cbr>\nAnd in the same fashion, you can introduce init-code which reacts to custom properties embedded in 3D assets (which are not part of the XR Fragment spec).\n\u003Cbr>\nThis is handy for attaching framework-specific logic to your assets:\n\u003Cbr>\u003Cbr>\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:140px;width:100%;max-width:800px;\">\n// optional: react/extend/hook to unofficial custom property inside asset\nXRF.foobar = (xrf,v,opts) => {\n let { mesh, model, camera, scene, renderer, THREE} = opts\n console.log(\"hello custom property 'foobar'\")\n}\n\u003C/textarea>\n\u003C/div>\n\n### Navigator\n\nTo navigate manually call `XRF.navigate.to( 'foo.gltf#pos=1,1,1' )` e.g.\nThe [default navigator](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js) is tied to the browser-history, but you can also provide your own navigator:\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify noresult\" style=\"min-height:250px;width:100%;max-width:800px;\">\n/* enable XR fragments */\nlet XRF = xrfragment.init({ \n\tTHREE,\n\tcamera,\n\tscene,\n\trenderer,\n\tdebug: true,\n\tloaders: [ GLTFLoader, FBXLoader ],\n\tnavigator: {\n\t to: (url,event) => { ... },\n\t\tinit: () => { ... },\n\t\tpushState: () => { ... }\n\t}\n})\n\u003C/textarea>\n\u003C/div>\n\n> see [default navigator](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js) for an example implementation\n\n### Accessing the parser / internals\n\nBesides `XRF.navigate.to( 'foo.gltf#pos=1,1,1' )`, you'd probaby never need to mess with the internals (besides using `addEventListeners`).\n\u003Cbr>\nApart from that, here are some internal functions:\n\n| function | info |\n|-|-|\n| `XRF.reset()` | completely wipe current XR Fragment related meshes from scene |\n| `XRF.add(mesh)` | add mesh to scene (which gets wiped by `XRF.reset()` / scene-replacement |\n| `XRF.parseModel( model, url)` | evaluates all XR Fragments found in mesh model |\n| `XRF.parseUrl(url)` | helper function which breaks down url-parts |\n| `XRF.URI.parse( str, flag )` | see [URI.parse](#↪%20URI.parse(url%2Cfilter)) |\n| `XRF.Parser.parse(k,v,store)` | see [Parser.parse](#↪%20Parser.parse](k%2Cv%2Cstore) |\n","tags":"[[The parser]]","title":"THREE.js","modified":"20230914082857897","type":"text/markdown"},
{"created":"20230427204906096","text":"comma-separated coordinates e.g. which after parsing can be accessed using `.x`, `.y`, `.z` etc.\n\n| type | example |\n|-|-|\n| vector2 | `1.2,3` or `0.4,0.6` | \n| vector3 | `1.2,3,4` or `0.4,0.6,5` | \n\nhere are some interactive examples:\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify\">frags = {}\nok = xrfragment.Parser.parse('pos','1.2,2,3',frags)\nconsole.log( frags.pos.z )\n\n\u003C/textarea>\n\t\u003Cpre class=\"result\">\u003C/pre>\n\u003C/div>\n","tags":"","title":"vector","modified":"20230427205327718","type":"text/markdown"},
{"created":"20230427103350051","text":"","tags":"","title":"WebXR","modified":"20230427103400217"},
-{"created":"20230424092557827","text":"A specification for 4D URLs & iframes for XR innovators, 3D designers, browsers, AI and [[IA|https://www.gartner.com/en/information-technology/glossary/augmented-intelligence]].\u003Cbr>\nDiscover, link, navigate & query 4D assets & experiences.\u003Cbr>\nStart surfing 4D today 💙\n\u003Cbr>\u003Cbr>\n\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs autoplay controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/bumper.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n\u003Cbr>\nCheck [[How it works|How it works]] or see it in action here:\u003Cbr>\u003Cbr>\n\u003Ciframe class=\"border\" src=\"./example/aframe/sandbox?example.gltf#pos=0,0,0\" frameborder=\"0\" style=\"width:100%; height:70%; min-height:500px;\"/>\n\u003Cbr>\u003Cbr>\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/bfxqm1q_GXw?start=1445\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen>\u003C/iframe>\n","tags":"","title":"XR Fragments","modified":"20230804105042877"},
+{"created":"20230424092557827","text":"A specification for 4D URLs & navigation, which links together space, time & (text)objects, for hypermedia browsers with- or without a network-connection.\u003Cbr>\nDiscover, share, link, navigate & query 4D experiences.\u003Cbr>\nStart surfing 4D today 💙\n\u003Cbr>\u003Cbr>\n\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs autoplay controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/bumper.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n\u003Cbr>\nCheck [[How it works|How it works]] or see it in action here:\u003Cbr>\u003Cbr>\n\u003Ciframe class=\"border\" src=\"./example/aframe/sandbox?example.gltf#pos=0,0,0\" frameborder=\"0\" style=\"width:100%; height:70%; min-height:500px;\"/>\n\u003Cbr>\u003Cbr>\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/bfxqm1q_GXw?start=1445\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen>\u003C/iframe>\n","tags":"","title":"XR Fragments","modified":"20230915085734089"},
{"title":"xrfragment.jpg","text":"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QMC6ZmWPKD6jHRMpTT/PKVC67qFODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODygCrH8cdkBarQE18FEU34RZTVGt1zH+txgdV3MYUXQiz68RZcFRhvKXh+ZBSGnlhAAwnqVMUDwm8p1D2g1okplwilqqtjumLetS3UecQ4ZaxbcOrgAz6S2MPQzRDT1aV8D5w2LlzEuCWskucSupmA73gjSBiSpgOzzLGNG8Z0LXnTSCyE3Y/UbFIbEb+4eCK5zYXfoGdYBehai1PJYXWggTWEcpXO508HWXajtWGy5rrWm2Yyp6R96rxB0wKyCsziga2qzGFbQx5bkdg9WssSWTQptvAlXY4TXEH46gTTXOsecbRZa1Rd6todzEA3lTLgzAoNRq2Fgxg5JYVU637yvM+L6zTC4H7zRZSkAPnMA2nDZJTYZriIZgVbcBixIgKUxJWiDeSLpDBkvNLvP8qi04bCe1DNBgGBWjqeoQPEOdgXWjBg6r2ZLwLBFis4bVWJi+ejJnKdRWUF7gkBljOQhCZg7Vq/8Am8Lqe3XgB5gbkC6NesQOozK7B/bhyKui5O0tzBpkhUXgUoQU1mizkOSXQ8BrI2C/pE2FwGkNQVZXUWDMyXe8oRCpnN7CD+vqWBIFTkSzlUE8PRJCwARWoA/59lqd1abyrrhg3heA1vdg8MDx2UCop3Rr9OZt5caejED0Zk9GY0itYmAJm7COuZQts8kNLOy0AzIFqLAAuFy0E4EgUuFu13lwlny015u8MMtHhglLDdD6Q0LNFF+iYETw+0GNJej2lMOuFJ5hBIOpjQFiF0tiZaE2SA1IAFGvSAsEABvAdUMIFR1Co5iXjSK5ZcIvsCaHfzgZEQrkc4LreKkzYRUqvKQPjUKsXu2fMhyAiRy6UunVrvgtjrh90Upk1PjEhijVNQZvV0qoFoXi9pno61GkpIQ6z1wWq8cKGp35V2BrcjVeC16xdCe//wBQQ2w0D3htucW9oYAEteQuVkfMs3lpKccOqDkFPzNOQ4RvvKHLLCE3QSjQeSVyNJwKgfliJWIjyP8AOoUJHSxTZWLXOmsBBoksqGr+DQ4gAJUgjXY2ZPLLmIVo/KBblCWwgq4n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","type":"image/jpeg"}
]