From 6302d5fb9052d7cec5be08a299b4587664d1d67f Mon Sep 17 00:00:00 2001 From: Benjamin Summers Date: Wed, 31 Jul 2019 22:16:02 -0700 Subject: [PATCH] Can now |hi to King Haskell over Ames! (and merged Master) --- .gitignore | 1 + .ignore | 3 + bin/brass.pill | 4 +- bin/ivory.pill | 4 +- bin/solid.pill | 4 +- nix/ops/default.nix | 5 + nix/ops/ivory/builder.sh | 22 + nix/ops/ivory/default.nix | 19 + nix/pkgs/urbit/default.nix | 2 + nix/pkgs/urbit/release.nix | 9 +- nix/pkgs/uterm/default.nix | 37 - pkg/arvo/app/azimuth-tracker.hoon | 231 +- pkg/arvo/app/chat/css/index.css | Bin 75059 -> 77478 bytes pkg/arvo/app/chat/img/Tile.png | Bin 1125 -> 1775 bytes pkg/arvo/app/chat/index.html | 3 +- pkg/arvo/app/chat/js/index.js | 2 +- pkg/arvo/app/chat/js/tile.js | 2 +- pkg/arvo/app/clock/js/tile.js | 2 +- pkg/arvo/app/dns-bind.hoon | 37 +- pkg/arvo/app/dns-collector.hoon | 28 +- pkg/arvo/app/dns.hoon | 3 + pkg/arvo/app/hall.hoon | 2 +- pkg/arvo/app/launch/css/index.css | Bin 74351 -> 75676 bytes pkg/arvo/app/launch/img/Favicon.png | Bin 0 -> 2872 bytes pkg/arvo/app/launch/index.hoon | 1 + pkg/arvo/app/launch/index.html | 18 - pkg/arvo/app/launch/js/index.js | 2 +- pkg/arvo/app/publish.hoon | 26 +- pkg/arvo/app/publish/css/index.css | Bin 76328 -> 78658 bytes pkg/arvo/app/publish/index.hoon | 1 + pkg/arvo/app/publish/js/index.js | 2 +- pkg/arvo/app/publish/js/tile.js | 2 +- pkg/arvo/app/talk.hoon | 4 +- pkg/arvo/app/timer.hoon | 125 - pkg/arvo/app/timer/img/example.png | Bin 20543 -> 0 bytes pkg/arvo/app/timer/img/volume-high.png | Bin 15817 -> 0 bytes pkg/arvo/app/timer/img/volume-mute.png | Bin 16077 -> 0 bytes pkg/arvo/app/timer/js/tile.js | 1 - pkg/arvo/app/weather.hoon | 11 +- pkg/arvo/app/weather/js/tile.js | 2 +- pkg/arvo/gen/azimuth-tracker/init.hoon | 3 + pkg/arvo/gen/azimuth-tracker/listen.hoon | 14 + pkg/arvo/gen/azimuth-tracker/watch.hoon | 7 + pkg/arvo/gen/dns-collector/complete.hoon | 14 + pkg/arvo/gen/reload-event.hoon | 26 + pkg/arvo/lib/hood/drum.hoon | 1 - pkg/arvo/lib/tapp.hoon | 18 +- pkg/arvo/mar/publish/action.hoon | 8 +- pkg/arvo/ren/publish/comments.hoon | 2 +- pkg/arvo/sur/publish.hoon | 8 +- pkg/arvo/sur/tapp.hoon | 5 + pkg/arvo/sys/arvo.hoon | 1 - pkg/arvo/sys/hoon.hoon | 26 +- pkg/arvo/sys/vane/alef.hoon | 2 +- pkg/arvo/sys/vane/clay.hoon | 60 +- pkg/arvo/sys/vane/eyre.hoon | 17 +- pkg/arvo/sys/vane/gall.hoon | 3 + pkg/arvo/sys/vane/kale.hoon | 103 +- pkg/arvo/sys/zuse.hoon | 79 +- pkg/arvo/tests/sys/vane/eyre.hoon | 2 +- pkg/hs-urbit/lib/Arvo.hs | 3 +- pkg/hs-urbit/lib/Arvo/Effect.hs | 8 +- pkg/hs-urbit/lib/Vere/Pier.hs | 60 +- pkg/hs-urbit/lib/Vere/Serf.hs | 4 +- pkg/hs-vere/app/test/Main.hs | 26 +- pkg/urbit/.gitignore | 1 + pkg/urbit/Makefile | 14 +- pkg/urbit/daemon/main.c | 6 +- pkg/urbit/include/vere/vere.h | 1 + pkg/urbit/vere/daemon.c | 7 +- pkg/urbit/vere/ivory.c | 134397 -------------------- pkg/urbit/vere/newt.c | 3 - pkg/urbit/vere/pier.c | 18 + pkg/urbit/vere/term.c | 8 +- pkg/urbit/worker/main.c | 6 - sh/boot | 4 +- 76 files changed, 705 insertions(+), 134875 deletions(-) create mode 100644 .ignore create mode 100755 nix/ops/ivory/builder.sh create mode 100644 nix/ops/ivory/default.nix delete mode 100644 nix/pkgs/uterm/default.nix create mode 100644 pkg/arvo/app/launch/img/Favicon.png delete mode 100644 pkg/arvo/app/launch/index.html delete mode 100644 pkg/arvo/app/timer.hoon delete mode 100644 pkg/arvo/app/timer/img/example.png delete mode 100644 pkg/arvo/app/timer/img/volume-high.png delete mode 100644 pkg/arvo/app/timer/img/volume-mute.png delete mode 100644 pkg/arvo/app/timer/js/tile.js create mode 100644 pkg/arvo/gen/azimuth-tracker/init.hoon create mode 100644 pkg/arvo/gen/azimuth-tracker/listen.hoon create mode 100644 pkg/arvo/gen/azimuth-tracker/watch.hoon create mode 100644 pkg/arvo/gen/dns-collector/complete.hoon create mode 100644 pkg/arvo/gen/reload-event.hoon delete mode 100644 pkg/urbit/vere/ivory.c diff --git a/.gitignore b/.gitignore index 02b9bc0c10..067c6b3c18 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ cross/ release/ .stack-work \#*\# +s/* diff --git a/.ignore b/.ignore new file mode 100644 index 0000000000..b27325c3be --- /dev/null +++ b/.ignore @@ -0,0 +1,3 @@ +.stack-work +./pkg/hs-vere/.stack-work +./pkg/hs-urbit/.stack-work diff --git a/bin/brass.pill b/bin/brass.pill index 1fce9caad9..c4542539a2 100644 --- a/bin/brass.pill +++ b/bin/brass.pill @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e534cb57dc8b2bee35004d843c7e0b2d028ba699e86d47a58efac4b065ce2f1b -size 6047224 +oid sha256:8f6e93cb3ee5fcb0970851bd10d2d2a640ff968292d147c35385623b86570296 +size 6662042 diff --git a/bin/ivory.pill b/bin/ivory.pill index 771574fe14..b8eb687de6 100644 --- a/bin/ivory.pill +++ b/bin/ivory.pill @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96b1f1ad730789b1d557aac66b847047c98341bcf436e1927f40f082a728d641 -size 3816083 +oid sha256:0e520b9ab0232d1765e1dacde96a1210845768e7334a334b5705d1c40348c82b +size 4464201 diff --git a/bin/solid.pill b/bin/solid.pill index bc8df50a1b..1a0fc416d7 100644 --- a/bin/solid.pill +++ b/bin/solid.pill @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4a4f8f86b18de5e410caeb491eecf8cf4fe24fbaba03ad8183b55a13eee154a -size 9108350 +oid sha256:a4a8e1daf0bfe86d5fc4ef7060b0c6a6c2678a344787926f14bb4b8cfabe8752 +size 9549390 diff --git a/nix/ops/default.nix b/nix/ops/default.nix index 7412ecb58d..0a56254637 100644 --- a/nix/ops/default.nix +++ b/nix/ops/default.nix @@ -48,4 +48,9 @@ rec { pier = zod; }; + ivory = import ./ivory { + inherit arvo pkgs tlon deps debug; + pier = zod; + }; + } diff --git a/nix/ops/ivory/builder.sh b/nix/ops/ivory/builder.sh new file mode 100755 index 0000000000..1e929a84fd --- /dev/null +++ b/nix/ops/ivory/builder.sh @@ -0,0 +1,22 @@ +source $stdenv/setup + +set -ex + +cp -r $PIER ./pier +chmod -R u+rw ./pier + +$URBIT -d ./pier + +cleanup () { + if [ -e ./pier/.vere.lock ] + then kill $(< ./pier/.vere.lock) || true; + fi +} + +trap cleanup EXIT + +herb ./pier -P ivory.pill -d '+ivory' + +mv ivory.pill $out + +set +x diff --git a/nix/ops/ivory/default.nix b/nix/ops/ivory/default.nix new file mode 100644 index 0000000000..059bc2902f --- /dev/null +++ b/nix/ops/ivory/default.nix @@ -0,0 +1,19 @@ +{ pkgs, tlon, deps, pier, arvo, debug }: + +let + + urbitExe = if debug + then "${tlon.urbit-debug}/bin/urbit-debug -g" + else "${tlon.urbit}/bin/urbit"; + +in + +pkgs.stdenv.mkDerivation rec { + name = "ivory"; + builder = ./builder.sh; + buildInputs = [ tlon.herb pkgs.coreutils ]; + + URBIT = urbitExe; + PIER = pier; + ARVO = arvo; +} diff --git a/nix/pkgs/urbit/default.nix b/nix/pkgs/urbit/default.nix index 5e971e684d..4bac93c1f6 100644 --- a/nix/pkgs/urbit/default.nix +++ b/nix/pkgs/urbit/default.nix @@ -1,6 +1,7 @@ { pkgs, debug, + ivory ? ../../../bin/ivory.pill, argon2, ed25519, ent, ge-additions, h2o, murmur3, scrypt, secp256k1, sni, softfloat3, uv }: @@ -30,6 +31,7 @@ pkgs.stdenv.mkDerivation { hardeningDisable = if debug then [ "all" ] else []; CFLAGS = if debug then "-O3 -g -Werror" else "-O3 -Werror"; + IVORY = ivory; MEMORY_DEBUG = debug; CPU_DEBUG = debug; EVENT_TIME_DEBUG = false; diff --git a/nix/pkgs/urbit/release.nix b/nix/pkgs/urbit/release.nix index 171a891610..7beda08b66 100644 --- a/nix/pkgs/urbit/release.nix +++ b/nix/pkgs/urbit/release.nix @@ -1,6 +1,12 @@ { env_name, env, deps }: -{ ent, ge-additions, cacert, xxd, name ? "urbit", debug ? false }: +{ + ent, + name ? "urbit", + debug ? false, + ivory ? ../../../bin/ivory.pill, + ge-additions, cacert, xxd +}: let @@ -22,6 +28,7 @@ env.make_derivation { EVENT_TIME_DEBUG = false; NCURSES = env.ncurses; SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + IVORY = ivory; name = "${name}-${env_name}"; exename = name; diff --git a/nix/pkgs/uterm/default.nix b/nix/pkgs/uterm/default.nix deleted file mode 100644 index 5bf5669909..0000000000 --- a/nix/pkgs/uterm/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ pkgs ? import ../../nixpkgs.nix }: - -let - - compiler = "default"; - doBenchmark = false; - - run-hpack = - "${pkgs.haskellPackages.hpack}/bin/hpack"; - - f = { mkDerivation, stdenv, - base, classy-prelude, lens, hpack, megaparsec }: - mkDerivation { - pname = "uterm"; - version = "0.1.0.0"; - src = ../../../pkg/uterm; - isLibrary = false; - isExecutable = true; - executableHaskellDepends = [ - base classy-prelude lens hpack megaparsec - ]; - license = stdenv.lib.licenses.lgpl3; - preConfigure = '' - ${run-hpack} - ''; - }; - - haskellPackages = if compiler == "default" - then pkgs.haskellPackages - else pkgs.haskell.packages.${compiler}; - - variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id; - drv = variant (haskellPackages.callPackage f {}); - -in - - if pkgs.lib.inNixShell then drv.env else drv diff --git a/pkg/arvo/app/azimuth-tracker.hoon b/pkg/arvo/app/azimuth-tracker.hoon index 5d5bbecec3..30a5c92eb4 100644 --- a/pkg/arvo/app/azimuth-tracker.hoon +++ b/pkg/arvo/app/azimuth-tracker.hoon @@ -6,12 +6,19 @@ $: url=@ta from-number=number:block == - +$ app-state ~ + +$ app-state + $: url=@ta + =number:block + =pending-udiffs + blocks=(list block) + == +$ peek-data ~ +$ in-poke-data - $% [%watch =config] - [%clear ~] - [%noun *] + $: %azimuth-tracker-poke + $% [%init ~] + [%listen whos=(set ship) =source:kale] + [%watch =config] + == == +$ out-poke-data ~ +$ in-peer-data ~ @@ -183,40 +190,62 @@ == =/ event-logs=(list event-log:rpc:ethereum) (parse-event-logs:rpc:ethereum json) - =/ =udiffs:point - %+ murn event-logs - |= =event-log:rpc:ethereum - ^- (unit [=ship =udiff:point]) - ?~ mined.event-log - ~ - ?: removed.u.mined.event-log - ~& [%removed-log event-log] - ~ - =/ =id:block [block-hash block-number]:u.mined.event-log - =, azimuth-events:azimuth - =, abi:ethereum - ?: =(broke-continuity i.topics.event-log) - =/ who=@ (decode-topics t.topics.event-log ~[%uint]) - =/ num=@ (decode-results data.event-log ~[%uint]) - `[who id %rift num] - ?: =(changed-keys i.topics.event-log) - =/ who=@ (decode-topics t.topics.event-log ~[%uint]) - =+ ^- [enc=octs aut=octs sut=@ud rev=@ud] - %+ decode-results data.event-log - ~[[%bytes-n 32] [%bytes-n 32] %uint %uint] - `[who id %keys rev sut (pass-from-eth:azimuth enc aut sut)] - ?: =(lost-sponsor i.topics.event-log) - =+ ^- [who=@ pos=@] - (decode-topics t.topics.event-log ~[%uint %uint]) - `[who id %spon ~] - ?: =(escape-accepted i.topics.event-log) - =+ ^- [who=@ wer=@] - (decode-topics t.topics.event-log ~[%uint %uint]) - `[who id %spon `wer] - ~& [%bad-topic event-log] - ~ + =/ =udiffs:point (event-logs-to-udiffs event-logs) (pure:m udiffs) :: + ++ get-logs-by-range + |= [url=@ta =from=number:block =to=number:block] + =/ m (async:stdio udiffs:point) + ^- form:m + ;< =json bind:m + %+ request-rpc url + :* `'logs by range' + %eth-get-logs + `number+from-number + `number+to-number + ~[azimuth:contracts:azimuth] + topics + == + =/ event-logs=(list event-log:rpc:ethereum) + (parse-event-logs:rpc:ethereum json) + =/ =udiffs:point (event-logs-to-udiffs event-logs) + (pure:m udiffs) + :: + ++ event-logs-to-udiffs + |= event-logs=(list =event-log:rpc:ethereum) + ^- =udiffs:point + %+ murn event-logs + |= =event-log:rpc:ethereum + ^- (unit [=ship =udiff:point]) + ?~ mined.event-log + ~ + ?: removed.u.mined.event-log + ~& [%removed-log event-log] + ~ + =/ =id:block [block-hash block-number]:u.mined.event-log + =, azimuth-events:azimuth + =, abi:ethereum + ?: =(broke-continuity i.topics.event-log) + =/ who=@ (decode-topics t.topics.event-log ~[%uint]) + =/ num=@ (decode-results data.event-log ~[%uint]) + `[who id %rift num] + ?: =(changed-keys i.topics.event-log) + =/ who=@ (decode-topics t.topics.event-log ~[%uint]) + =+ ^- [enc=octs aut=octs sut=@ud rev=@ud] + %+ decode-results data.event-log + ~[[%bytes-n 32] [%bytes-n 32] %uint %uint] + `[who id %keys rev sut (pass-from-eth:azimuth enc aut sut)] + ?: =(lost-sponsor i.topics.event-log) + =+ ^- [who=@ pos=@] + (decode-topics t.topics.event-log ~[%uint %uint]) + `[who id %spon ~] + ?: =(escape-accepted i.topics.event-log) + =+ ^- [who=@ wer=@] + (decode-topics t.topics.event-log ~[%uint %uint]) + `[who id %spon `wer] + ~& [%bad-topic event-log] + ~ + :: ++ jael-update |= =udiffs:point =/ m (async:stdio ,~) @@ -224,41 +253,86 @@ =* loop $ ?~ udiffs (pure:m ~) - ~& > [%update block i.udiffs] - :: ;< ~ bind:m (send-effect [%vent-update i.udiffs]) + ~& [%sending-event i.udiffs] + ;< ~ bind:m (send-effect:stdio %new-event /ne i.udiffs) loop(udiffs t.udiffs) -- :: :: Main loop :: => |% - ++ watch - |= =config - =/ m (async:stdio ,~) + :: + :: Subscribe to %sources from kale + :: + ++ init + |= state=app-state + =/ m (async:stdio ,app-state) ^- form:m - =/ =number:block from-number.config - =| =pending-udiffs - =| blocks=(list block) - |- ^- form:m - =* poll-loop $ - ~& [%poll-loop number] - ;< =latest=block bind:m (get-latest-block url.config) + ;< ~ bind:m (send-effect:stdio %sources /se ~) + (pure:m state) + :: + :: Send %listen to kale + :: + ++ listen + |= [state=app-state whos=(set ship) =source:kale] + =/ m (async:stdio ,app-state) + ^- form:m + ;< ~ bind:m (send-effect:stdio %listen /lo whos source) + (pure:m state) + :: + :: Take %source from kale + :: + ++ take-source + |= [state=app-state whos=(set ship) =source:kale] + =/ m (async:stdio ,app-state) + ^- form:m + ?: ?=(%& -.source) + (pure:m state) + =/ a-purl=purl:eyre node.p.source + =. url.state (crip (en-purl:html a-purl)) + (watch state url.state launch:contracts:azimuth) + :: + :: Start watching a node + :: + ++ watch + |= [state=app-state =config] + =/ m (async:stdio ,app-state) + ^- form:m + =: url.state url.config + number.state from-number.config + pending-udiffs.state *pending-udiffs + blocks.state *(list block) + == + (get-updates state) + :: + :: Get updates since last checked + :: + ++ get-updates + |= state=app-state + =/ m (async:stdio ,app-state) + ^- form:m + ~& [%get-updates number.state] + ;< =latest=block bind:m (get-latest-block url.state) + ;< =new=number:block bind:m (zoom state number.id.latest-block) + =. number.state new-number |- ^- form:m =* walk-loop $ - ~& [%walk-loop number] - ?: (gth number number.id.latest-block) + ~& [%walk-loop number.state] + ?: (gth number.state number.id.latest-block) ;< now=@da bind:m get-time:stdio - ;< ~ bind:m (wait:stdio (add now ~s10)) - poll-loop - ;< =block bind:m (get-block-by-number url.config number) - ;< [=new=^pending-udiffs new-blocks=(lest ^block)] bind:m - (take-block url.config pending-udiffs block blocks) - =: pending-udiffs new-pending-udiffs - blocks new-blocks - number +(number.id.i.new-blocks) + ;< ~ bind:m (wait-effect:stdio (add now ~s10)) + (pure:m state) + ;< =block bind:m (get-block-by-number url.state number.state) + ;< [=new=pending-udiffs new-blocks=(lest ^block)] bind:m + (take-block url.state pending-udiffs.state block blocks.state) + =: pending-udiffs.state new-pending-udiffs + blocks.state new-blocks + number.state +(number.id.i.new-blocks) == walk-loop :: + :: Process a block, detecting and handling reorgs + :: ++ take-block |= [url=@ta =a=pending-udiffs =block blocks=(list block)] =/ m (async:stdio ,[pending-udiffs (lest ^block)]) @@ -274,6 +348,8 @@ =. b-pending-udiffs (~(put by b-pending-udiffs) number.id.block new-udiffs) (pure:m b-pending-udiffs block blocks) :: + :: Release events if they're more than 30 blocks ago + :: ++ release-old-events |= [=pending-udiffs =number:block] =/ m (async:stdio ,^pending-udiffs) @@ -283,6 +359,8 @@ ;< ~ bind:m (jael-update udiffs) (pure:m (~(del by pending-udiffs) rel-number)) :: + :: Reorg detected, so rewind until we're back in sync + :: ++ rewind |= [url=@ta =pending-udiffs =block blocks=(list block)] =/ m (async:stdio ,[^pending-udiffs (lest ^block)]) @@ -300,11 +378,31 @@ =. pending-udiffs (~(del by pending-udiffs) number.id.block) loop(block next-block, blocks t.blocks) :: + :: Tell subscribers there was a deep reorg + :: ++ disavow |= =block =/ m (async:stdio ,~) ^- form:m (jael-update [*ship id.block %disavow ~]~) + :: + :: Zoom forward to near a given block number. + :: + :: Zooming doesn't go forward one block at a time. As a + :: consequence, it cannot detect and handle reorgs. Only use it + :: at a safe distance -- 500 blocks ago is probably sufficient. + :: + ++ zoom + |= [state=app-state =latest=number:block] + =/ m (async:stdio ,number:block) + ^- form:m + ?: (lth latest-number (add number.state 500)) + (pure:m latest-number) + =/ to-number=number:block (sub latest-number 500) + ;< =udiffs:point bind:m + (get-logs-by-range url.state number.state to-number) + ;< ~ bind:m (jael-update udiffs) + (pure:m to-number) -- :: :: Main @@ -316,17 +414,20 @@ |= =in-poke-data =/ m tapp-async ^- form:m - ?- -.in-poke-data - %noun (watch (config +.in-poke-data)) - %watch (watch +.in-poke-data) - %clear !! + ?- +<.in-poke-data + %init (init state) + %listen (listen state +>.in-poke-data) + %watch (watch state +>.in-poke-data) == :: ++ handle-take |= =sign:tapp - !! - :: ?> ?=(%sources -.sign) - :: (handle-poke %watch +.sign) + =/ m tapp-async + ^- form:m + ?+ -.sign ~|([%strange-sign -.sign] !!) + %source (take-source state +.sign) + %wake (get-updates state) + == :: ++ handle-peer ~(handle-peer default-tapp bowl state) -- diff --git a/pkg/arvo/app/chat/css/index.css b/pkg/arvo/app/chat/css/index.css index 83068c326faba69ae4cc1df60078f8cb9dce0d75..504262bb6df8aca2b705a3044d443c8b62b4f6df 100644 GIT binary patch delta 4547 zcmb_gPmkL~6j#Jb(CkW7f{J$AF4JVUn-y_tJIQW0D?|$|f(xP`aYT%raWY!RW7(4? z+f^|qByN>*$gM3x;zotE2R;C|aw>O(_yX`1cr*6IPVBT*wOu)pXWsk0-}^IfUV8F$ z<>$Xve!XM7p^b=jNVzt-W4u#3fX`~W^yHaXdh)DVIaXpkz+ULEV9*H|$DGuRX1hyz zI|q|L9&VnQiA{e*rSqi&@pWOc_GtAv0H&D$Tzr%T_;y7Cz*lB<;{OS#@VS2SvHA2? z%Jl5$^5ooTZN5OjeQXKe)L_AQ6;C5VMM)z)KwsM^-RiUXZ*qCoMK0@F~L@UTuW^|7{6UQIC(Js zcPm{}>8wm1KU_(dRZ2HEy>OPT)Zu(mQ!@)Wee+75VWOT%X+}NG=+10I|t?auV$EX>{9#1hWniRVdvVl0qN4|`|G9i)4$hCYp2O%NeK29Ly%(< zeaPHyBMC%NU|uC5OX5<*X4+aWU77xOv2^x}S4d3dOEwIkR6b%|f<6yeWg+1=E|os{ zN+dX`Bvl%wh|3F-{u0>x-?*aGWcUiKG*8Kj6_DQ0#lbQ=vd~Y#o9Ws{X|*U^?Nf5Z z4#|L8s^AJDwtGs3qURZrWeDLaH$tC!9tkv`cwOrCWXJJYNI7L*2L;5%oZcm(dTi)Q z#Dk_%ktJrapbL5d?$Tk{L58kx38{Y4d5mb+AB%+%?eaeC%U5`}uzlDI*wE{0Hgj13 zMtT;mneBF6Jx1J)7P)mg*n#FJDK3)9gGK_?Ft68Vk30i&bTV`kwyEpb3Yk0P()A_2 z+Aj4)jBH-h>(WE@dEFmJU=G~H9)&(DgDFCdj1bvFi`tq+?okrd^u}JRT}OIDkH4A_ z2Lv;ZuJ0h~In<+qf~f36a^wVfKtd#ejsaZXLh$c6cLC`z6t3>v2MMz+L?*vHyKn~H z+EQWq7?sw=>t4M1kMY*@!Aj}%2$n<|ix8W;0#iT&m04mu7IGYLnUN&0;CZ$TlGkMc zOiF57UT9IiG%ObqE8Q>qb<{WDG2v;#(}D*=)!(fnT!&EkFi;{+#z2U`f;Hrvd6L-x z2R#_}ESK4b8k9L)gZjfe&}JnccA1SYrW|GYwee?@{;liu#s(_4?~TAY6NWhH&^XjzL7e>taB(hK*+GF?5cq}#{Rc>BCC zej$xVm%6{clm0z=CH-^!eER;umGs;Fm(#!Y>uGmE>^gt<{sUQ91_uO0n%f60&-XTeZHyr#ler=crnggsApb((Bu zlfge7_hhLe*w6USh#y5SmNN)p&LLK$S@FxYOyQf~&ucfXzPs&G!hs8I6sy$``(yJx z!Vw!}mXMEqWD?4T(9bO+guPvE_H=y^GTV%p-#C0&)z%I_e^p!gxLI}OUf!sUsOuWF zX7aQgm_r}i|HJWSRa<@rjs@NF(oELKIHfg8l*qIeP!Z4 zv9nbUHK8jmVr+{`iU>DrwSh&MBcK^{a1@#yU0)yU=J&C)5$q2}*x|dTTs{G=uq=q(ABf4v^;HwTblal2(Tu-XZ$c4T22 zSm*#F)@X0``mMGuzq7$Iv9b1>b2#K1(0eOddJOU>u)*??|^LPHQDhTSAju$3nlB46}wmLZL}kBOY( zM4Y{cjmmPaf->ZX5sG6rt@t_~29$9~_}qLEw|M4Bc8xfHA@Bh*yN1wKk^prads6Jo zuilI7YFN}612rZJ(VdAryv1;%R|=OmwVj2F3FE2fDwNcQz92Sf`_MxEA})zsrkYIm zhvJ#@!H^PKOs`zrEISuw{V0vsmIMd`@vN$xRmngoSj0W4dZJXD0nc99q#gKC2&9&U z*i7GY8G?2yxvJ$e+iYrI>(l$$>ZL$ouJmJHVI!2hzuHR3`40 z{3LCHZ3H}q5Sbn-1H#Qs;juhWaGne!$E+L3>1=JNScaTwBtrdO*GSq}{wK*ZP@-r5 IQi_-0A6Rp&l>h($ diff --git a/pkg/arvo/app/chat/img/Tile.png b/pkg/arvo/app/chat/img/Tile.png index 58f4ccbea72caf0032dab97ade5420bf1ce2050a..684658d0fa9bc779e1fdc5527e91880039bd871d 100644 GIT binary patch literal 1775 zcmd6oX*8Qz7{_0lG-@xZIiw4%Z7i|Wt~BUkXlT(ON@{I~P8tj)DNWnap(JgcAuXYn zwxiVA5^B;ICPl_FEwxuA=oBpxOYCzq-{hA8_jU)LpbjKk<)w$XzO^leVk z{QP)JM9eK4%HZ&D6kEt^eQ&pgwLcSb-{IQY3*?xXTmJ`zU=ri={`1^^!g>88nF)sSJHEHg{uL~3HSrH+lEK>21 z?T^CAT7-LVzQqf@;oPL9Y2Vn3YQcusg-jw!FnsH%pHB7CrdSv%S}(&@#((&ZJ0V{D z>@7+X@_&D+n3aJhQf6up?lGdN&MC_}wxy!mkYS{jVq&8?`+`jQeU=Z3-&2y!GTK)W z{5nViGp5{VtR}lfVa#5Vr*5x9A&u-cl19x6h7h-NwDD zYZr6P*ryj&2CQ25gt!lynzZq4kCFGJx440)20ejUr@D2YH>DnVE+!ZS-v4o?t z;6{HWgZ1c@D)99R-9axY+5budhp3tZ&yl~B1Kig1fp;gANSJ&~vW#7{+&?!Rxa|HdiY&tUQ%)!Dd>$SfLn9D~aQWG0 zMxOZNh!`3*Q$}VT$!>#j!!osM+L<@MpbVlPx3si4(Sx=ew}RGV)l=>CY7wF4TX^Pn z|Hit@*LE1UB*WO8YGxan?m_T)>!+=X%(6@cBT5wZJ>W2!v<|5v@fUsp;5|~?oLcR> zM)M#+urv@7a9~gPoCfn0l z1JYf%ge=JC1d&a3``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&di49vegT^vIy7~kFv^n2_f(st1(Ni-$?gVih9 z15OF-iz`#(Q=}*RUGX*FG1=nC*W2$tSx##0_#~t`|6T9WkX?7<8e3m{^K#DP5>Pha z5RzcI`%V5vjv4E+O?UIWPy2v{IC+{_*c_Rf6&f8U98mB`5KtKq;a$2L6n5{uBp}Sw zG;40c?YG+w+yS~T>!0zBw9T3ZQ~y0nX&O-X0Rs;yq%Pz}cKrVR`_rdSK?_v7XC(0R z^FLbTxtYDJz=Y}I~T!YY=ujk8Q`U4HEKyD`@QDfV-+o)V;#|CF`2VjtX0w@sZ{}^E|4)8bcSg}c zj^{u#drGtn3LROG1DPS0fKCaxcpPZ@)V)CWb6Btd2}=;MQ&9ZLnNP|uHi+R%N*8i7 zW3HFBmP*=b3Mw8ZRzc>T>N-*N!=? zb1eV-y70G-< - + +
diff --git a/pkg/arvo/app/chat/js/index.js b/pkg/arvo/app/chat/js/index.js index 68fb6127b7..c50d909597 100644 --- a/pkg/arvo/app/chat/js/index.js +++ b/pkg/arvo/app/chat/js/index.js @@ -1 +1 @@ -!function(e){"function"==typeof define&&define.amd?define("index",e):e()}(function(){"use strict";var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function r(e,t){return e(t={exports:{}},t.exports),t.exports}var a=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;var l=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<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,r,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s2?n-2:0),a=2;a1?t-1:0),r=1;r2?n-2:0),a=2;a8)throw new Error("warningWithoutStack() currently supports at most 8 arguments.");if(!e){if("undefined"!=typeof console){var i=r.map(function(e){return""+e});i.unshift("Warning: "+t),Function.prototype.apply.call(console.error,console,i)}try{var o=0,l="Warning: "+t.replace(/%s/g,function(){return r[o++]});throw new Error(l)}catch(e){}}},D={};function E(e,t){var n=e.constructor,r=n&&(n.displayName||n.name)||"ReactClass",a=r+"."+t;D[a]||(C(!1,"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",t,r),D[a]=!0)}var T={isMounted:function(e){return!1},enqueueForceUpdate:function(e,t,n){E(e,"forceUpdate")},enqueueReplaceState:function(e,t,n,r){E(e,"replaceState")},enqueueSetState:function(e,t,n,r){E(e,"setState")}},N={};function M(e,t,n){this.props=e,this.context=t,this.refs=N,this.updater=n||T}Object.freeze(N),M.prototype.isReactComponent={},M.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e&&x(!1,"setState(...): takes an object of state variables to update or a function which returns an object of state variables."),this.updater.enqueueSetState(this,e,t,"setState")},M.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};var S={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]},I=function(e,t){Object.defineProperty(M.prototype,e,{get:function(){k(!1,"%s(...) is deprecated in plain JavaScript React classes. %s",t[0],t[1])}})};for(var R in S)S.hasOwnProperty(R)&&I(R,S[R]);function O(){}function P(e,t,n){this.props=e,this.context=t,this.refs=N,this.updater=n||T}O.prototype=M.prototype;var L=P.prototype=new O;L.constructor=P,t(L,M.prototype),L.isPureReactComponent=!0;var B={current:null,currentDispatcher:null},A=/^(.*)[\\\/]/,j=1;function U(e){if(null==e)return null;if("number"==typeof e.tag&&C(!1,"Received an unexpected object in getComponentName(). This is likely a bug in React. Please file an issue."),"function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case d:return"ConcurrentMode";case o:return"Fragment";case i:return"Portal";case u:return"Profiler";case s:return"StrictMode";case h:return"Suspense"}if("object"==typeof e)switch(e.$$typeof){case f:return"Context.Consumer";case c:return"Context.Provider";case p:return r=e,a=e.render,l="ForwardRef",g=a.displayName||a.name||"",r.displayName||(""!==g?l+"("+g+")":l);case m:return U(e.type);case b:var t=(n=e)._status===j?n._result:null;if(t)return U(t)}var n,r,a,l,g;return null}var z={},F=null;function W(e){F=e}z.getCurrentStack=null,z.getStackAddendum=function(){var e="";if(F){var t=U(F.type),n=F._owner;e+=function(e,t,n){var r="";if(t){var a=t.fileName,i=a.replace(A,"");if(/^index\./.test(i)){var o=a.match(A);if(o){var l=o[1];l&&(i=l.replace(A,"")+"/"+i)}}r=" (at "+i+":"+t.lineNumber+")"}else n&&(r=" (created by "+n+")");return"\n in "+(e||"Unknown")+r}(t,F._source,n&&U(n.type))}var r=z.getCurrentStack;return r&&(e+=r()||""),e};var Z={ReactCurrentOwner:B,assign:t};t(Z,{ReactDebugCurrentFrame:z,ReactComponentTreeHook:{}});var H=function(e,t){if(!e){for(var n=Z.ReactDebugCurrentFrame.getStackAddendum(),r=arguments.length,a=Array(r>2?r-2:0),i=2;i1){for(var c=Array(u),f=0;f.")}return t}(t);if(!ge[n]){ge[n]=!0;var r="";e&&e._owner&&e._owner!==B.current&&(r=" It was passed a child from "+U(e._owner.type)+"."),W(e),H(!1,'Each child in an array or iterator should have a unique "key" prop.%s%s See https://fb.me/react-warning-keys for more information.',n,r),W(null)}}}function ye(e,t){if("object"==typeof e)if(Array.isArray(e))for(var n=0;n",i=" Did you accidentally export a JSX literal instead of a component?"):s=typeof e,H(!1,"React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",s,i)}var u=X.apply(this,arguments);if(null==u)return u;if(r)for(var c=2;c is not supported and will be removed in a future major release. Did you mean to render instead?")),n.Provider},set:function(e){n.Provider=e}},_currentValue:{get:function(){return n._currentValue},set:function(e){n._currentValue=e}},_currentValue2:{get:function(){return n._currentValue2},set:function(e){n._currentValue2=e}},_threadCount:{get:function(){return n._threadCount},set:function(e){n._threadCount=e}},Consumer:{get:function(){return r||(r=!0,H(!1,"Rendering is not supported and will be removed in a future major release. Did you mean to render instead?")),n.Consumer}}}),n.Consumer=i,n._currentRenderer=null,n._currentRenderer2=null,n},forwardRef:function(e){return null!=e&&e.$$typeof===m?C(!1,"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):"function"!=typeof e?C(!1,"forwardRef requires a render function but was given %s.",null===e?"null":typeof e):0!==e.length&&2!==e.length&&C(!1,"forwardRef render functions accept exactly two parameters: props and ref. %s",1===e.length?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),null!=e&&(null!=e.defaultProps||null!=e.propTypes)&&C(!1,"forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?"),{$$typeof:p,render:e}},lazy:function(e){return{$$typeof:b,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return he(e)||C(!1,"memo: The first argument must be a component. Instead received: %s",null===e?"null":typeof e),{$$typeof:m,type:e,compare:void 0===t?null:t}},Fragment:o,StrictMode:s,Suspense:h,createElement:we,cloneElement:function(e,n,r){for(var a=function(e,n,r){null==e&&x(!1,"React.cloneElement(...): The argument must be a React element, but you passed %s.",e);var a=void 0,i=t({},e.props),o=e.key,l=e.ref,s=e._self,u=e._source,c=e._owner;if(null!=n){q(n)&&(l=n.ref,c=B.current),Q(n)&&(o=""+n.key);var f=void 0;for(a in e.type&&e.type.defaultProps&&(f=e.type.defaultProps),n)G.call(n,a)&&!Y.hasOwnProperty(a)&&(void 0===n[a]&&void 0!==f?i[a]=f[a]:i[a]=n[a])}var d=arguments.length-2;if(1===d)i.children=r;else if(d>1){for(var p=Array(d),h=0;h=t){n=e;break}e=e.next}while(e!==r);null===n?n=r:n===r&&(r=s,c()),(t=n.previous).next=n.previous=s,s.next=n,s.previous=t}}function d(){if(-1===o&&null!==r&&1===r.priorityLevel){s=!0;try{do{f()}while(null!==r&&1===r.priorityLevel)}finally{s=!1,null!==r?c():u=!1}}}function p(e){s=!0;var t=a;a=e;try{if(e)for(;null!==r;){var i=n.unstable_now();if(!(r.expirationTime<=i))break;do{f()}while(null!==r&&r.expirationTime<=i)}else if(null!==r)do{f()}while(null!==r&&!D())}finally{s=!1,a=t,null!==r?c():u=!1,d()}}var h,m,b=Date,g="function"==typeof setTimeout?setTimeout:void 0,v="function"==typeof clearTimeout?clearTimeout:void 0,y="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,_="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;function w(e){h=y(function(t){v(m),e(t)}),m=g(function(){_(h),e(n.unstable_now())},100)}if("object"==typeof performance&&"function"==typeof performance.now){var x=performance;n.unstable_now=function(){return x.now()}}else n.unstable_now=function(){return b.now()};var k,C,D,E=null;if("undefined"!=typeof window?E=window:void 0!==e&&(E=e),E&&E._schedMock){var T=E._schedMock;k=T[0],C=T[1],D=T[2],n.unstable_now=T[3]}else if("undefined"==typeof window||"function"!=typeof MessageChannel){var N=null,M=function(e){if(null!==N)try{N(e)}finally{N=null}};k=function(e){null!==N?setTimeout(k,0,e):(N=e,setTimeout(M,0,!1))},C=function(){N=null},D=function(){return!1}}else{"undefined"!=typeof console&&("function"!=typeof y&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof _&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var S=null,I=!1,R=-1,O=!1,P=!1,L=0,B=33,A=33;D=function(){return L<=n.unstable_now()};var j=new MessageChannel,U=j.port2;j.port1.onmessage=function(){I=!1;var e=S,t=R;S=null,R=-1;var r=n.unstable_now(),a=!1;if(0>=L-r){if(!(-1!==t&&t<=r))return O||(O=!0,w(z)),S=e,void(R=t);a=!0}if(null!==e){P=!0;try{e(a)}finally{P=!1}}};var z=function(e){if(null!==S){w(z);var t=e-L+A;tt&&(t=8),A=tt?U.postMessage(void 0):O||(O=!0,w(z))},C=function(){S=null,I=!1,R=-1}}n.unstable_ImmediatePriority=1,n.unstable_UserBlockingPriority=2,n.unstable_NormalPriority=3,n.unstable_IdlePriority=5,n.unstable_LowPriority=4,n.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=i,a=o;i=e,o=n.unstable_now();try{return t()}finally{i=r,o=a,d()}},n.unstable_next=function(e){switch(i){case 1:case 2:case 3:var t=3;break;default:t=i}var r=i,a=o;i=t,o=n.unstable_now();try{return e()}finally{i=r,o=a,d()}},n.unstable_scheduleCallback=function(e,t){var a=-1!==o?o:n.unstable_now();if("object"==typeof t&&null!==t&&"number"==typeof t.timeout)t=a+t.timeout;else switch(i){case 1:t=a+-1;break;case 2:t=a+250;break;case 5:t=a+1073741823;break;case 4:t=a+1e4;break;default:t=a+5e3}if(e={callback:e,priorityLevel:i,expirationTime:t,next:null,previous:null},null===r)r=e.next=e.previous=e,c();else{a=null;var l=r;do{if(l.expirationTime>t){a=l;break}l=l.next}while(l!==r);null===a?a=r:a===r&&(r=e,c()),(t=a.previous).next=a.previous=e,e.next=a,e.previous=t}return e},n.unstable_cancelCallback=function(e){var t=e.next;if(null!==t){if(t===e)r=null;else{e===r&&(r=t);var n=e.previous;n.next=t,t.previous=n}e.next=e.previous=null}},n.unstable_wrapCallback=function(e){var t=i;return function(){var r=i,a=o;i=t,o=n.unstable_now();try{return e.apply(this,arguments)}finally{i=r,o=a,d()}}},n.unstable_getCurrentPriorityLevel=function(){return i},n.unstable_shouldYield=function(){return!a&&(null!==r&&r.expirationTime=i){c=f;break}f=f.next}while(f!==p);null===c?c=p:c===p&&(p=u,w());var d=c.previous;d.next=c.previous=u,u.next=c,u.previous=d}}}function k(){if(-1===b&&null!==p&&p.priorityLevel===r){v=!0;try{do{x()}while(null!==p&&p.priorityLevel===r)}finally{v=!1,null!==p?w():y=!1}}}function C(e){v=!0;var r=h;h=e;try{if(e)for(;null!==p&&!t;){var a=n.unstable_now();if(!(p.expirationTime<=a))break;do{x()}while(null!==p&&p.expirationTime<=a&&!t)}else if(null!==p)do{x()}while(null!==p&&!M())}finally{v=!1,h=r,null!==p?w():y=!1,k()}}var D,E,T,N,M,S=Date,I="function"==typeof setTimeout?setTimeout:void 0,R="function"==typeof clearTimeout?clearTimeout:void 0,O="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,P="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0,L=function(e){D=O(function(t){R(E),e(t)}),E=I(function(){P(D),e(n.unstable_now())},100)};if(_){var B=performance;n.unstable_now=function(){return B.now()}}else n.unstable_now=function(){return S.now()};var A=null;if("undefined"!=typeof window?A=window:void 0!==e&&(A=e),A&&A._schedMock){var j=A._schedMock;T=j[0],N=j[1],M=j[2],n.unstable_now=j[3]}else if("undefined"==typeof window||"function"!=typeof MessageChannel){var U=null,z=function(e){if(null!==U)try{U(e)}finally{U=null}};T=function(e,t){null!==U?setTimeout(T,0,e):(U=e,setTimeout(z,0,!1))},N=function(){U=null},M=function(){return!1}}else{"undefined"!=typeof console&&("function"!=typeof O&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof P&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var F=null,W=!1,Z=-1,H=!1,G=!1,Y=0,V=33,$=33;M=function(){return Y<=n.unstable_now()};var q=new MessageChannel,Q=q.port2;q.port1.onmessage=function(e){W=!1;var t=F,r=Z;F=null,Z=-1;var a=n.unstable_now(),i=!1;if(Y-a<=0){if(!(-1!==r&&r<=a))return H||(H=!0,L(K)),F=t,void(Z=r);i=!0}if(null!==t){G=!0;try{t(i)}finally{G=!1}}};var K=function(e){if(null!==F){L(K);var t=e-Y+$;t<$&&V<$?(t<8&&(t=8),$=th){y=_;break}_=_.next}while(_!==p);null===y?y=p:y===p&&(p=v,w());var x=y.previous;x.next=y.previous=v,v.next=y,v.previous=x}return v},n.unstable_cancelCallback=function(e){var t=e.next;if(null!==t){if(t===e)p=null;else{e===p&&(p=t);var n=e.previous;n.next=t,t.previous=n}e.next=e.previous=null}},n.unstable_wrapCallback=function(e){var t=m;return function(){var r=m,a=b;m=t,b=n.unstable_now();try{return e.apply(this,arguments)}finally{m=r,b=a,k()}}},n.unstable_getCurrentPriorityLevel=function(){return m},n.unstable_shouldYield=function(){return!h&&(null!==p&&p.expirationTimethis.eventPool.length&&this.eventPool.push(e)}function Se(e){e.eventPool=[],e.getPooled=Ne,e.release=Me}l(Te.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=De)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=De)},persist:function(){this.isPersistent=De},isPersistent:Ee,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=Ee,this._dispatchInstances=this._dispatchListeners=null}}),Te.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Te.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var a=new t;return l(a,n.prototype),n.prototype=a,n.prototype.constructor=n,n.Interface=l({},r.Interface,e),n.extend=r.extend,Se(n),n},Se(Te);var Ie=Te.extend({data:null}),Re=Te.extend({data:null}),Oe=[9,13,27,32],Pe=ce&&"CompositionEvent"in window,Le=null;ce&&"documentMode"in document&&(Le=document.documentMode);var Be=ce&&"TextEvent"in window&&!Le,Ae=ce&&(!Pe||Le&&8=Le),je=String.fromCharCode(32),Ue={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},ze=!1;function Fe(e,t){switch(e){case"keyup":return-1!==Oe.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function We(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Ze=!1;var He={eventTypes:Ue,extractEvents:function(e,t,n,r){var a=void 0,i=void 0;if(Pe)e:{switch(e){case"compositionstart":a=Ue.compositionStart;break e;case"compositionend":a=Ue.compositionEnd;break e;case"compositionupdate":a=Ue.compositionUpdate;break e}a=void 0}else Ze?Fe(e,n)&&(a=Ue.compositionEnd):"keydown"===e&&229===n.keyCode&&(a=Ue.compositionStart);return a?(Ae&&"ko"!==n.locale&&(Ze||a!==Ue.compositionStart?a===Ue.compositionEnd&&Ze&&(i=Ce()):(xe="value"in(we=r)?we.value:we.textContent,Ze=!0)),a=Ie.getPooled(a,t,n,r),i?a.data=i:null!==(i=We(n))&&(a.data=i),ue(a),i=a):i=null,(e=Be?function(e,t){switch(e){case"compositionend":return We(t);case"keypress":return 32!==t.which?null:(ze=!0,je);case"textInput":return(e=t.data)===je&&ze?null:e;default:return null}}(e,n):function(e,t){if(Ze)return"compositionend"===e||!Pe&&Fe(e,t)?(e=Ce(),ke=xe=we=null,Ze=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1