You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2248 lines
564 KiB
2248 lines
564 KiB
4 weeks ago
|
var I1=Object.defineProperty;var Wh=r=>{throw TypeError(r)};var _1=(r,t,n)=>t in r?I1(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n;var We=(r,t,n)=>_1(r,typeof t!="symbol"?t+"":t,n),cf=(r,t,n)=>t.has(r)||Wh("Cannot "+n);var P=(r,t,n)=>(cf(r,t,"read from private field"),n?n.call(r):t.get(r)),Ve=(r,t,n)=>t.has(r)?Wh("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,n),we=(r,t,n,i)=>(cf(r,t,"write to private field"),i?i.call(r,n):t.set(r,n),n),de=(r,t,n)=>(cf(r,t,"access private method"),n);var Ks=(r,t,n,i)=>({set _(o){we(r,t,o,n)},get _(){return P(r,t,i)}});import{ab as Jh,J as Qi,K as mo,N as va,O as Ep,ac as M1,B as tc,ad as qo,A as Yh,a as Sp,a9 as pi,a2 as Bp,u as Dp,f as Cp,d as k1,D as T1,y as N1,b as R1}from"./index-BLqts8WY.js";import{u as U1}from"./index-CsfPLOYu.js";function Ip(r,t){switch(r){case 0:return function(){return t.apply(this,arguments)};case 1:return function(n){return t.apply(this,arguments)};case 2:return function(n,i){return t.apply(this,arguments)};case 3:return function(n,i,o){return t.apply(this,arguments)};case 4:return function(n,i,o,s){return t.apply(this,arguments)};case 5:return function(n,i,o,s,a){return t.apply(this,arguments)};case 6:return function(n,i,o,s,a,c){return t.apply(this,arguments)};case 7:return function(n,i,o,s,a,c,f){return t.apply(this,arguments)};case 8:return function(n,i,o,s,a,c,f,h){return t.apply(this,arguments)};case 9:return function(n,i,o,s,a,c,f,h,d){return t.apply(this,arguments)};case 10:return function(n,i,o,s,a,c,f,h,d,g){return t.apply(this,arguments)};default:throw new Error("First argument to _arity must be a non-negative integer no greater than ten")}}function _p(r,t,n){return function(){for(var i=[],o=0,s=r,a=0,c=!1;a<t.length||o<arguments.length;){var f;a<t.length&&(!Jh(t[a])||o>=arguments.length)?f=t[a]:(f=arguments[o],o+=1),i[a]=f,Jh(f)?c=!0:s-=1,a+=1}return!c&&s<=0?n.apply(this,i):Ip(Math.max(0,s),_p(r,i,n))}}var O1=Qi(function(t,n){return t===1?mo(n):Ip(t,_p(t,[],n))});const Mp=Array.isArray||function(t){return t!=null&&t.length>=0&&Object.prototype.toString.call(t)==="[object Array]"};function P1(r){return r!=null&&typeof r["@@transducer/step"]=="function"}function Dl(r,t,n){return function(){if(arguments.length===0)return n();var i=arguments[arguments.length-1];if(!Mp(i)){for(var o=0;o<r.length;){if(typeof i[r[o]]=="function")return i[r[o]].apply(i,Array.prototype.slice.call(arguments,0,-1));o+=1}if(P1(i)){var s=t.apply(null,Array.prototype.slice.call(arguments,0,-1));return s(i)}}return n.apply(this,arguments)}}function F1(r){return r&&r["@@transducer/reduced"]?r:{"@@transducer/value":r,"@@transducer/reduced":!0}}const is={init:function(){return this.xf["@@transducer/init"]()},result:function(r){return this.xf["@@transducer/result"](r)}};function Zh(r){for(var t=[],n;!(n=r.next()).done;)t.push(n.value);return t}function Xh(r,t,n){for(var i=0,o=n.length;i<o;){if(r(t,n[i]))return!0;i+=1}return!1}function L1(r){var t=String(r).match(/^function (\w*)/);return t==null?"":t[1]}function H1(r,t){return r===t?r!==0||1/r===1/t:r!==r&&t!==t}const ff=typeof Object.is=="function"?Object.is:H1;var Qh=Object.prototype.toString,kp=function(){return Qh.call(arguments)==="[object Arguments]"?function(t){return Qh.call(t)==="[object Arguments]"}:function(t){return va("callee",t)}}(),$1=!{toString:null}.propertyIsEnumerable("toString"),ed=["constructor","valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],td=function(){return arguments.propertyIsEnumerable("length")}(),V1=function(t,n){for(var i=0;i<t.length;){if(t[i]===n)return!0;i+=1}return!1},xa=typeof Object.keys=="function"&&!td?mo(function(t){return Object(t)!==t?[]:Object.keys(t)}):mo(function(t){if(Object(t)!==t)return[];var n,i,o=[],s=td&&kp(t);for(n in t)va(n,t)&&(!s||n!=="length")&&(o[o.length]=n);if($1)for(i=ed.length-1;i>=0;)n=ed[i],va(n,t)&&!V1(o,n)&&(o[o.length]=n),i-=1;return o}),eu=mo(function(t){return t===null?"Null":t===void 0?"Undefined":Object.prototype.toString.call(t).slice(8,-1)});function rd
|
||
|
* The buffer module from node.js, for the browser.
|
||
|
*
|
||
|
* @author Feross Aboukhadijeh <https://feross.org>
|
||
|
* @license MIT
|
||
|
*/var sd;function cm(){return sd||(sd=1,function(r){const t=sm(),n=am(),i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;r.Buffer=c,r.SlowBuffer=F,r.INSPECT_MAX_BYTES=50;const o=2147483647;r.kMaxLength=o,c.TYPED_ARRAY_SUPPORT=s(),!c.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&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.");function s(){try{const M=new Uint8Array(1),m={foo:function(){return 42}};return Object.setPrototypeOf(m,Uint8Array.prototype),Object.setPrototypeOf(M,m),M.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function a(M){if(M>o)throw new RangeError('The value "'+M+'" is invalid for option "size"');const m=new Uint8Array(M);return Object.setPrototypeOf(m,c.prototype),m}function c(M,m,b){if(typeof M=="number"){if(typeof m=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return g(M)}return f(M,m,b)}c.poolSize=8192;function f(M,m,b){if(typeof M=="string")return x(M,m);if(ArrayBuffer.isView(M))return D(M);if(M==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof M);if(Qe(M,ArrayBuffer)||M&&Qe(M.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Qe(M,SharedArrayBuffer)||M&&Qe(M.buffer,SharedArrayBuffer)))return E(M,m,b);if(typeof M=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const R=M.valueOf&&M.valueOf();if(R!=null&&R!==M)return c.from(R,m,b);const K=_(M);if(K)return K;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof M[Symbol.toPrimitive]=="function")return c.from(M[Symbol.toPrimitive]("string"),m,b);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof M)}c.from=function(M,m,b){return f(M,m,b)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function h(M){if(typeof M!="number")throw new TypeError('"size" argument must be of type number');if(M<0)throw new RangeError('The value "'+M+'" is invalid for option "size"')}function d(M,m,b){return h(M),M<=0?a(M):m!==void 0?typeof b=="string"?a(M).fill(m,b):a(M).fill(m):a(M)}c.alloc=function(M,m,b){return d(M,m,b)};function g(M){return h(M),a(M<0?0:T(M)|0)}c.allocUnsafe=function(M){return g(M)},c.allocUnsafeSlow=function(M){return g(M)};function x(M,m){if((typeof m!="string"||m==="")&&(m="utf8"),!c.isEncoding(m))throw new TypeError("Unknown encoding: "+m);const b=U(M,m)|0;let R=a(b);const K=R.write(M,m);return K!==b&&(R=R.slice(0,K)),R}function S(M){const m=M.length<0?0:T(M.length)|0,b=a(m);for(let R=0;R<m;R+=1)b[R]=M[R]&255;return b}function D(M){if(Qe(M,Uint8Array)){const m=new Uint8Array(M);return E(m.buffer,m.byteOffset,m.byteLength)}return S(M)}function E(M,m,b){if(m<0||M.byteLength<m)throw new RangeError('"offset" is outside of buffer bounds');if(M.byteLength<m+(b||0))throw new RangeError('"length" is outside of buffer bounds');let R;return m===void 0&&b===void 0?R=new Uint8Array(M):b===void 0?R=new Uint8Array(M,m):R=new Uint8Array(M,m,b),Object.setPrototypeOf(R,c.prototype),R}function _(M){if(c.isBuffer(M)){const m=T(M.length)|0,b=a(m);return b.length===0||M.copy(b,0,0,m),b}if(M.length!==void 0)return typeof M.length!="number"||Oe(M.length)?a(0):S(M);if(M.type==="Buffer"&&Array.isArray(M.data))return S(M.data)}function T(M){if(M>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return M|0}function F(M){return+M!=M&&(M=0),c.alloc(+M)}c.isBuffer=function(m){return m!=null&&m._isBuffer===!0&&m!==c.prototype},c.compare=function(m,b){if(Qe(m,Uint8Array)&&(m=c.from(m,m.off
|
||
|
ability
|
||
|
able
|
||
|
about
|
||
|
above
|
||
|
absent
|
||
|
absorb
|
||
|
abstract
|
||
|
absurd
|
||
|
abuse
|
||
|
access
|
||
|
accident
|
||
|
account
|
||
|
accuse
|
||
|
achieve
|
||
|
acid
|
||
|
acoustic
|
||
|
acquire
|
||
|
across
|
||
|
act
|
||
|
action
|
||
|
actor
|
||
|
actress
|
||
|
actual
|
||
|
adapt
|
||
|
add
|
||
|
addict
|
||
|
address
|
||
|
adjust
|
||
|
admit
|
||
|
adult
|
||
|
advance
|
||
|
advice
|
||
|
aerobic
|
||
|
affair
|
||
|
afford
|
||
|
afraid
|
||
|
again
|
||
|
age
|
||
|
agent
|
||
|
agree
|
||
|
ahead
|
||
|
aim
|
||
|
air
|
||
|
airport
|
||
|
aisle
|
||
|
alarm
|
||
|
album
|
||
|
alcohol
|
||
|
alert
|
||
|
alien
|
||
|
all
|
||
|
alley
|
||
|
allow
|
||
|
almost
|
||
|
alone
|
||
|
alpha
|
||
|
already
|
||
|
also
|
||
|
alter
|
||
|
always
|
||
|
amateur
|
||
|
amazing
|
||
|
among
|
||
|
amount
|
||
|
amused
|
||
|
analyst
|
||
|
anchor
|
||
|
ancient
|
||
|
anger
|
||
|
angle
|
||
|
angry
|
||
|
animal
|
||
|
ankle
|
||
|
announce
|
||
|
annual
|
||
|
another
|
||
|
answer
|
||
|
antenna
|
||
|
antique
|
||
|
anxiety
|
||
|
any
|
||
|
apart
|
||
|
apology
|
||
|
appear
|
||
|
apple
|
||
|
approve
|
||
|
april
|
||
|
arch
|
||
|
arctic
|
||
|
area
|
||
|
arena
|
||
|
argue
|
||
|
arm
|
||
|
armed
|
||
|
armor
|
||
|
army
|
||
|
around
|
||
|
arrange
|
||
|
arrest
|
||
|
arrive
|
||
|
arrow
|
||
|
art
|
||
|
artefact
|
||
|
artist
|
||
|
artwork
|
||
|
ask
|
||
|
aspect
|
||
|
assault
|
||
|
asset
|
||
|
assist
|
||
|
assume
|
||
|
asthma
|
||
|
athlete
|
||
|
atom
|
||
|
attack
|
||
|
attend
|
||
|
attitude
|
||
|
attract
|
||
|
auction
|
||
|
audit
|
||
|
august
|
||
|
aunt
|
||
|
author
|
||
|
auto
|
||
|
autumn
|
||
|
average
|
||
|
avocado
|
||
|
avoid
|
||
|
awake
|
||
|
aware
|
||
|
away
|
||
|
awesome
|
||
|
awful
|
||
|
awkward
|
||
|
axis
|
||
|
baby
|
||
|
bachelor
|
||
|
bacon
|
||
|
badge
|
||
|
bag
|
||
|
balance
|
||
|
balcony
|
||
|
ball
|
||
|
bamboo
|
||
|
banana
|
||
|
banner
|
||
|
bar
|
||
|
barely
|
||
|
bargain
|
||
|
barrel
|
||
|
base
|
||
|
basic
|
||
|
basket
|
||
|
battle
|
||
|
beach
|
||
|
bean
|
||
|
beauty
|
||
|
because
|
||
|
become
|
||
|
beef
|
||
|
before
|
||
|
begin
|
||
|
behave
|
||
|
behind
|
||
|
believe
|
||
|
below
|
||
|
belt
|
||
|
bench
|
||
|
benefit
|
||
|
best
|
||
|
betray
|
||
|
better
|
||
|
between
|
||
|
beyond
|
||
|
bicycle
|
||
|
bid
|
||
|
bike
|
||
|
bind
|
||
|
biology
|
||
|
bird
|
||
|
birth
|
||
|
bitter
|
||
|
black
|
||
|
blade
|
||
|
blame
|
||
|
blanket
|
||
|
blast
|
||
|
bleak
|
||
|
bless
|
||
|
blind
|
||
|
blood
|
||
|
blossom
|
||
|
blouse
|
||
|
blue
|
||
|
blur
|
||
|
blush
|
||
|
board
|
||
|
boat
|
||
|
body
|
||
|
boil
|
||
|
bomb
|
||
|
bone
|
||
|
bonus
|
||
|
book
|
||
|
boost
|
||
|
border
|
||
|
boring
|
||
|
borrow
|
||
|
boss
|
||
|
bottom
|
||
|
bounce
|
||
|
box
|
||
|
boy
|
||
|
bracket
|
||
|
brain
|
||
|
brand
|
||
|
brass
|
||
|
brave
|
||
|
bread
|
||
|
breeze
|
||
|
brick
|
||
|
bridge
|
||
|
brief
|
||
|
bright
|
||
|
bring
|
||
|
brisk
|
||
|
broccoli
|
||
|
broken
|
||
|
bronze
|
||
|
broom
|
||
|
brother
|
||
|
brown
|
||
|
brush
|
||
|
bubble
|
||
|
buddy
|
||
|
budget
|
||
|
buffalo
|
||
|
build
|
||
|
bulb
|
||
|
bulk
|
||
|
bullet
|
||
|
bundle
|
||
|
bunker
|
||
|
burden
|
||
|
burger
|
||
|
burst
|
||
|
bus
|
||
|
business
|
||
|
busy
|
||
|
butter
|
||
|
buyer
|
||
|
buzz
|
||
|
cabbage
|
||
|
cabin
|
||
|
cable
|
||
|
cactus
|
||
|
cage
|
||
|
cake
|
||
|
call
|
||
|
calm
|
||
|
camera
|
||
|
camp
|
||
|
can
|
||
|
canal
|
||
|
cancel
|
||
|
candy
|
||
|
cannon
|
||
|
canoe
|
||
|
canvas
|
||
|
canyon
|
||
|
capable
|
||
|
capital
|
||
|
captain
|
||
|
car
|
||
|
carbon
|
||
|
card
|
||
|
cargo
|
||
|
carpet
|
||
|
carry
|
||
|
cart
|
||
|
case
|
||
|
cash
|
||
|
casino
|
||
|
castle
|
||
|
casual
|
||
|
cat
|
||
|
catalog
|
||
|
catch
|
||
|
category
|
||
|
cattle
|
||
|
caught
|
||
|
cause
|
||
|
caution
|
||
|
cave
|
||
|
ceiling
|
||
|
celery
|
||
|
cement
|
||
|
census
|
||
|
century
|
||
|
cereal
|
||
|
certain
|
||
|
chair
|
||
|
chalk
|
||
|
champion
|
||
|
change
|
||
|
chaos
|
||
|
chapter
|
||
|
charge
|
||
|
chase
|
||
|
chat
|
||
|
cheap
|
||
|
check
|
||
|
cheese
|
||
|
chef
|
||
|
cherry
|
||
|
chest
|
||
|
chicken
|
||
|
chief
|
||
|
child
|
||
|
chimney
|
||
|
choice
|
||
|
choose
|
||
|
chronic
|
||
|
chuckle
|
||
|
chunk
|
||
|
churn
|
||
|
cigar
|
||
|
cinnamon
|
||
|
circle
|
||
|
citizen
|
||
|
city
|
||
|
civil
|
||
|
claim
|
||
|
clap
|
||
|
clarify
|
||
|
claw
|
||
|
clay
|
||
|
clean
|
||
|
clerk
|
||
|
clever
|
||
|
click
|
||
|
client
|
||
|
cliff
|
||
|
climb
|
||
|
clinic
|
||
|
clip
|
||
|
clock
|
||
|
clog
|
||
|
close
|
||
|
cloth
|
||
|
cloud
|
||
|
clown
|
||
|
club
|
||
|
clump
|
||
|
cluster
|
||
|
clutch
|
||
|
coach
|
||
|
coast
|
||
|
coconut
|
||
|
code
|
||
|
coffee
|
||
|
coil
|
||
|
coin
|
||
|
collect
|
||
|
color
|
||
|
column
|
||
|
combine
|
||
|
come
|
||
|
comfort
|
||
|
comic
|
||
|
common
|
||
|
company
|
||
|
concert
|
||
|
conduct
|
||
|
confirm
|
||
|
congress
|
||
|
connect
|
||
|
consider
|
||
|
control
|
||
|
convince
|
||
|
cook
|
||
|
cool
|
||
|
copper
|
||
|
copy
|
||
|
coral
|
||
|
core
|
||
|
corn
|
||
|
correct
|
||
|
cost
|
||
|
cotton
|
||
|
couch
|
||
|
country
|
||
|
couple
|
||
|
course
|
||
|
cousin
|
||
|
cover
|
||
|
coyote
|
||
|
crack
|
||
|
cradle
|
||
|
craft
|
||
|
cram
|
||
|
crane
|
||
|
crash
|
||
|
crater
|
||
|
crawl
|
||
|
crazy
|
||
|
cream
|
||
|
credit
|
||
|
creek
|
||
|
crew
|
||
|
cricket
|
||
|
crime
|
||
|
crisp
|
||
|
critic
|
||
|
crop
|
||
|
cross
|
||
|
crouch
|
||
|
crowd
|
||
|
crucial
|
||
|
cruel
|
||
|
cruise
|
||
|
crumble
|
||
|
crunch
|
||
|
crush
|
||
|
cry
|
||
|
crystal
|
||
|
cube
|
||
|
culture
|
||
|
cup
|
||
|
cupboard
|
||
|
curious
|
||
|
current
|
||
|
curtain
|
||
|
curve
|
||
|
cushion
|
||
|
custom
|
||
|
cute
|
||
|
cycle
|
||
|
dad
|
||
|
damage
|
||
|
damp
|
||
|
dance
|
||
|
danger
|
||
|
daring
|
||
|
dash
|
||
|
daughter
|
||
|
dawn
|
||
|
day
|
||
|
deal
|
||
|
debate
|
||
|
debris
|
||
|
decade
|
||
|
december
|
||
|
decide
|
||
|
decline
|
||
|
decorate
|
||
|
decrease
|
||
|
deer
|
||
|
defense
|
||
|
define
|
||
|
defy
|
||
|
degree
|
||
|
delay
|
||
|
deliver
|
||
|
demand
|
||
|
demise
|
||
|
denial
|
||
|
dentist
|
||
|
deny
|
||
|
depart
|
||
|
depend
|
||
|
deposit
|
||
|
depth
|
||
|
deputy
|
||
|
derive
|
||
|
describe
|
||
|
desert
|
||
|
design
|
||
|
desk
|
||
|
despair
|
||
|
destroy
|
||
|
detail
|
||
|
detect
|
||
|
develop
|
||
|
device
|
||
|
devote
|
||
|
diagram
|
||
|
dial
|
||
|
diamond
|
||
|
diary
|
||
|
dice
|
||
|
diesel
|
||
|
diet
|
||
|
differ
|
||
|
digital
|
||
|
dignity
|
||
|
dilemma
|
||
|
dinner
|
||
|
dinosaur
|
||
|
direct
|
||
|
dirt
|
||
|
disagree
|
||
|
discover
|
||
|
disease
|
||
|
dish
|
||
|
dismiss
|
||
|
disorder
|
||
|
display
|
||
|
distance
|
||
|
divert
|
||
|
divide
|
||
|
divorce
|
||
|
dizzy
|
||
|
doctor
|
||
|
document
|
||
|
dog
|
||
|
doll
|
||
|
dolphin
|
||
|
domain
|
||
|
donate
|
||
|
donkey
|
||
|
donor
|
||
|
door
|
||
|
dose
|
||
|
double
|
||
|
dove
|
||
|
draft
|
||
|
dragon
|
||
|
drama
|
||
|
drastic
|
||
|
draw
|
||
|
dream
|
||
|
dress
|
||
|
drift
|
||
|
drill
|
||
|
drink
|
||
|
drip
|
||
|
drive
|
||
|
drop
|
||
|
drum
|
||
|
dry
|
||
|
duck
|
||
|
dumb
|
||
|
dune
|
||
|
during
|
||
|
dust
|
||
|
dutch
|
||
|
duty
|
||
|
dwarf
|
||
|
dynamic
|
||
|
eager
|
||
|
eagle
|
||
|
early
|
||
|
earn
|
||
|
earth
|
||
|
easily
|
||
|
east
|
||
|
easy
|
||
|
echo
|
||
|
ecology
|
||
|
economy
|
||
|
edge
|
||
|
edit
|
||
|
educate
|
||
|
effort
|
||
|
egg
|
||
|
eight
|
||
|
either
|
||
|
elbow
|
||
|
elder
|
||
|
electric
|
||
|
elegant
|
||
|
element
|
||
|
elephant
|
||
|
elevator
|
||
|
elite
|
||
|
else
|
||
|
embark
|
||
|
embody
|
||
|
embrace
|
||
|
emerge
|
||
|
emotion
|
||
|
employ
|
||
|
empower
|
||
|
empty
|
||
|
enable
|
||
|
enact
|
||
|
end
|
||
|
endless
|
||
|
endorse
|
||
|
enemy
|
||
|
energy
|
||
|
enforce
|
||
|
engage
|
||
|
engine
|
||
|
enhance
|
||
|
enjoy
|
||
|
enlist
|
||
|
enough
|
||
|
enrich
|
||
|
enroll
|
||
|
ensure
|
||
|
enter
|
||
|
entire
|
||
|
entry
|
||
|
envelope
|
||
|
episode
|
||
|
equal
|
||
|
equip
|
||
|
era
|
||
|
erase
|
||
|
erode
|
||
|
erosion
|
||
|
error
|
||
|
erupt
|
||
|
escape
|
||
|
essay
|
||
|
essence
|
||
|
estate
|
||
|
eternal
|
||
|
ethics
|
||
|
evidence
|
||
|
evil
|
||
|
evoke
|
||
|
evolve
|
||
|
exact
|
||
|
example
|
||
|
excess
|
||
|
exchange
|
||
|
excite
|
||
|
exclude
|
||
|
excuse
|
||
|
execute
|
||
|
exercise
|
||
|
exhaust
|
||
|
exhibit
|
||
|
exile
|
||
|
exist
|
||
|
exit
|
||
|
exotic
|
||
|
expand
|
||
|
expect
|
||
|
expire
|
||
|
explain
|
||
|
expose
|
||
|
express
|
||
|
extend
|
||
|
extra
|
||
|
eye
|
||
|
eyebrow
|
||
|
fabric
|
||
|
face
|
||
|
faculty
|
||
|
fade
|
||
|
faint
|
||
|
faith
|
||
|
fall
|
||
|
false
|
||
|
fame
|
||
|
family
|
||
|
famous
|
||
|
fan
|
||
|
fancy
|
||
|
fantasy
|
||
|
farm
|
||
|
fashion
|
||
|
fat
|
||
|
fatal
|
||
|
father
|
||
|
fatigue
|
||
|
fault
|
||
|
favorite
|
||
|
feature
|
||
|
february
|
||
|
federal
|
||
|
fee
|
||
|
feed
|
||
|
feel
|
||
|
female
|
||
|
fence
|
||
|
festival
|
||
|
fetch
|
||
|
fever
|
||
|
few
|
||
|
fiber
|
||
|
fiction
|
||
|
field
|
||
|
figure
|
||
|
file
|
||
|
film
|
||
|
filter
|
||
|
final
|
||
|
find
|
||
|
fine
|
||
|
finger
|
||
|
finish
|
||
|
fire
|
||
|
firm
|
||
|
first
|
||
|
fiscal
|
||
|
fish
|
||
|
fit
|
||
|
fitness
|
||
|
fix
|
||
|
flag
|
||
|
flame
|
||
|
flash
|
||
|
flat
|
||
|
flavor
|
||
|
flee
|
||
|
flight
|
||
|
flip
|
||
|
float
|
||
|
flock
|
||
|
floor
|
||
|
flower
|
||
|
fluid
|
||
|
flush
|
||
|
fly
|
||
|
foam
|
||
|
focus
|
||
|
fog
|
||
|
foil
|
||
|
fold
|
||
|
follow
|
||
|
food
|
||
|
foot
|
||
|
force
|
||
|
forest
|
||
|
forget
|
||
|
fork
|
||
|
fortune
|
||
|
forum
|
||
|
forward
|
||
|
fossil
|
||
|
foster
|
||
|
found
|
||
|
fox
|
||
|
fragile
|
||
|
frame
|
||
|
frequent
|
||
|
fresh
|
||
|
friend
|
||
|
fringe
|
||
|
frog
|
||
|
front
|
||
|
frost
|
||
|
frown
|
||
|
frozen
|
||
|
fruit
|
||
|
fuel
|
||
|
fun
|
||
|
funny
|
||
|
furnace
|
||
|
fury
|
||
|
future
|
||
|
gadget
|
||
|
gain
|
||
|
galaxy
|
||
|
gallery
|
||
|
game
|
||
|
gap
|
||
|
garage
|
||
|
garbage
|
||
|
garden
|
||
|
garlic
|
||
|
garment
|
||
|
gas
|
||
|
gasp
|
||
|
gate
|
||
|
gather
|
||
|
gauge
|
||
|
gaze
|
||
|
general
|
||
|
genius
|
||
|
genre
|
||
|
gentle
|
||
|
genuine
|
||
|
gesture
|
||
|
ghost
|
||
|
giant
|
||
|
gift
|
||
|
giggle
|
||
|
ginger
|
||
|
giraffe
|
||
|
girl
|
||
|
give
|
||
|
glad
|
||
|
glance
|
||
|
glare
|
||
|
glass
|
||
|
glide
|
||
|
glimpse
|
||
|
globe
|
||
|
gloom
|
||
|
glory
|
||
|
glove
|
||
|
glow
|
||
|
glue
|
||
|
goat
|
||
|
goddess
|
||
|
gold
|
||
|
good
|
||
|
goose
|
||
|
gorilla
|
||
|
gospel
|
||
|
gossip
|
||
|
govern
|
||
|
gown
|
||
|
grab
|
||
|
grace
|
||
|
grain
|
||
|
grant
|
||
|
grape
|
||
|
grass
|
||
|
gravity
|
||
|
great
|
||
|
green
|
||
|
grid
|
||
|
grief
|
||
|
grit
|
||
|
grocery
|
||
|
group
|
||
|
grow
|
||
|
grunt
|
||
|
guard
|
||
|
guess
|
||
|
guide
|
||
|
guilt
|
||
|
guitar
|
||
|
gun
|
||
|
gym
|
||
|
habit
|
||
|
hair
|
||
|
half
|
||
|
hammer
|
||
|
hamster
|
||
|
hand
|
||
|
happy
|
||
|
harbor
|
||
|
hard
|
||
|
harsh
|
||
|
harvest
|
||
|
hat
|
||
|
have
|
||
|
hawk
|
||
|
hazard
|
||
|
head
|
||
|
health
|
||
|
heart
|
||
|
heavy
|
||
|
hedgehog
|
||
|
height
|
||
|
hello
|
||
|
helmet
|
||
|
help
|
||
|
hen
|
||
|
hero
|
||
|
hidden
|
||
|
high
|
||
|
hill
|
||
|
hint
|
||
|
hip
|
||
|
hire
|
||
|
history
|
||
|
hobby
|
||
|
hockey
|
||
|
hold
|
||
|
hole
|
||
|
holiday
|
||
|
hollow
|
||
|
home
|
||
|
honey
|
||
|
hood
|
||
|
hope
|
||
|
horn
|
||
|
horror
|
||
|
horse
|
||
|
hospital
|
||
|
host
|
||
|
hotel
|
||
|
hour
|
||
|
hover
|
||
|
hub
|
||
|
huge
|
||
|
human
|
||
|
humble
|
||
|
humor
|
||
|
hundred
|
||
|
hungry
|
||
|
hunt
|
||
|
hurdle
|
||
|
hurry
|
||
|
hurt
|
||
|
husband
|
||
|
hybrid
|
||
|
ice
|
||
|
icon
|
||
|
idea
|
||
|
identify
|
||
|
idle
|
||
|
ignore
|
||
|
ill
|
||
|
illegal
|
||
|
illness
|
||
|
image
|
||
|
imitate
|
||
|
immense
|
||
|
immune
|
||
|
impact
|
||
|
impose
|
||
|
improve
|
||
|
impulse
|
||
|
inch
|
||
|
include
|
||
|
income
|
||
|
increase
|
||
|
index
|
||
|
indicate
|
||
|
indoor
|
||
|
industry
|
||
|
infant
|
||
|
inflict
|
||
|
inform
|
||
|
inhale
|
||
|
inherit
|
||
|
initial
|
||
|
inject
|
||
|
injury
|
||
|
inmate
|
||
|
inner
|
||
|
innocent
|
||
|
input
|
||
|
inquiry
|
||
|
insane
|
||
|
insect
|
||
|
inside
|
||
|
inspire
|
||
|
install
|
||
|
intact
|
||
|
interest
|
||
|
into
|
||
|
invest
|
||
|
invite
|
||
|
involve
|
||
|
iron
|
||
|
island
|
||
|
isolate
|
||
|
issue
|
||
|
item
|
||
|
ivory
|
||
|
jacket
|
||
|
jaguar
|
||
|
jar
|
||
|
jazz
|
||
|
jealous
|
||
|
jeans
|
||
|
jelly
|
||
|
jewel
|
||
|
job
|
||
|
join
|
||
|
joke
|
||
|
journey
|
||
|
joy
|
||
|
judge
|
||
|
juice
|
||
|
jump
|
||
|
jungle
|
||
|
junior
|
||
|
junk
|
||
|
just
|
||
|
kangaroo
|
||
|
keen
|
||
|
keep
|
||
|
ketchup
|
||
|
key
|
||
|
kick
|
||
|
kid
|
||
|
kidney
|
||
|
kind
|
||
|
kingdom
|
||
|
kiss
|
||
|
kit
|
||
|
kitchen
|
||
|
kite
|
||
|
kitten
|
||
|
kiwi
|
||
|
knee
|
||
|
knife
|
||
|
knock
|
||
|
know
|
||
|
lab
|
||
|
label
|
||
|
labor
|
||
|
ladder
|
||
|
lady
|
||
|
lake
|
||
|
lamp
|
||
|
language
|
||
|
laptop
|
||
|
large
|
||
|
later
|
||
|
latin
|
||
|
laugh
|
||
|
laundry
|
||
|
lava
|
||
|
law
|
||
|
lawn
|
||
|
lawsuit
|
||
|
layer
|
||
|
lazy
|
||
|
leader
|
||
|
leaf
|
||
|
learn
|
||
|
leave
|
||
|
lecture
|
||
|
left
|
||
|
leg
|
||
|
legal
|
||
|
legend
|
||
|
leisure
|
||
|
lemon
|
||
|
lend
|
||
|
length
|
||
|
lens
|
||
|
leopard
|
||
|
lesson
|
||
|
letter
|
||
|
level
|
||
|
liar
|
||
|
liberty
|
||
|
library
|
||
|
license
|
||
|
life
|
||
|
lift
|
||
|
light
|
||
|
like
|
||
|
limb
|
||
|
limit
|
||
|
link
|
||
|
lion
|
||
|
liquid
|
||
|
list
|
||
|
little
|
||
|
live
|
||
|
lizard
|
||
|
load
|
||
|
loan
|
||
|
lobster
|
||
|
local
|
||
|
lock
|
||
|
logic
|
||
|
lonely
|
||
|
long
|
||
|
loop
|
||
|
lottery
|
||
|
loud
|
||
|
lounge
|
||
|
love
|
||
|
loyal
|
||
|
lucky
|
||
|
luggage
|
||
|
lumber
|
||
|
lunar
|
||
|
lunch
|
||
|
luxury
|
||
|
lyrics
|
||
|
machine
|
||
|
mad
|
||
|
magic
|
||
|
magnet
|
||
|
maid
|
||
|
mail
|
||
|
main
|
||
|
major
|
||
|
make
|
||
|
mammal
|
||
|
man
|
||
|
manage
|
||
|
mandate
|
||
|
mango
|
||
|
mansion
|
||
|
manual
|
||
|
maple
|
||
|
marble
|
||
|
march
|
||
|
margin
|
||
|
marine
|
||
|
market
|
||
|
marriage
|
||
|
mask
|
||
|
mass
|
||
|
master
|
||
|
match
|
||
|
material
|
||
|
math
|
||
|
matrix
|
||
|
matter
|
||
|
maximum
|
||
|
maze
|
||
|
meadow
|
||
|
mean
|
||
|
measure
|
||
|
meat
|
||
|
mechanic
|
||
|
medal
|
||
|
media
|
||
|
melody
|
||
|
melt
|
||
|
member
|
||
|
memory
|
||
|
mention
|
||
|
menu
|
||
|
mercy
|
||
|
merge
|
||
|
merit
|
||
|
merry
|
||
|
mesh
|
||
|
message
|
||
|
metal
|
||
|
method
|
||
|
middle
|
||
|
midnight
|
||
|
milk
|
||
|
million
|
||
|
mimic
|
||
|
mind
|
||
|
minimum
|
||
|
minor
|
||
|
minute
|
||
|
miracle
|
||
|
mirror
|
||
|
misery
|
||
|
miss
|
||
|
mistake
|
||
|
mix
|
||
|
mixed
|
||
|
mixture
|
||
|
mobile
|
||
|
model
|
||
|
modify
|
||
|
mom
|
||
|
moment
|
||
|
monitor
|
||
|
monkey
|
||
|
monster
|
||
|
month
|
||
|
moon
|
||
|
moral
|
||
|
more
|
||
|
morning
|
||
|
mosquito
|
||
|
mother
|
||
|
motion
|
||
|
motor
|
||
|
mountain
|
||
|
mouse
|
||
|
move
|
||
|
movie
|
||
|
much
|
||
|
muffin
|
||
|
mule
|
||
|
multiply
|
||
|
muscle
|
||
|
museum
|
||
|
mushroom
|
||
|
music
|
||
|
must
|
||
|
mutual
|
||
|
myself
|
||
|
mystery
|
||
|
myth
|
||
|
naive
|
||
|
name
|
||
|
napkin
|
||
|
narrow
|
||
|
nasty
|
||
|
nation
|
||
|
nature
|
||
|
near
|
||
|
neck
|
||
|
need
|
||
|
negative
|
||
|
neglect
|
||
|
neither
|
||
|
nephew
|
||
|
nerve
|
||
|
nest
|
||
|
net
|
||
|
network
|
||
|
neutral
|
||
|
never
|
||
|
news
|
||
|
next
|
||
|
nice
|
||
|
night
|
||
|
noble
|
||
|
noise
|
||
|
nominee
|
||
|
noodle
|
||
|
normal
|
||
|
north
|
||
|
nose
|
||
|
notable
|
||
|
note
|
||
|
nothing
|
||
|
notice
|
||
|
novel
|
||
|
now
|
||
|
nuclear
|
||
|
number
|
||
|
nurse
|
||
|
nut
|
||
|
oak
|
||
|
obey
|
||
|
object
|
||
|
oblige
|
||
|
obscure
|
||
|
observe
|
||
|
obtain
|
||
|
obvious
|
||
|
occur
|
||
|
ocean
|
||
|
october
|
||
|
odor
|
||
|
off
|
||
|
offer
|
||
|
office
|
||
|
often
|
||
|
oil
|
||
|
okay
|
||
|
old
|
||
|
olive
|
||
|
olympic
|
||
|
omit
|
||
|
once
|
||
|
one
|
||
|
onion
|
||
|
online
|
||
|
only
|
||
|
open
|
||
|
opera
|
||
|
opinion
|
||
|
oppose
|
||
|
option
|
||
|
orange
|
||
|
orbit
|
||
|
orchard
|
||
|
order
|
||
|
ordinary
|
||
|
organ
|
||
|
orient
|
||
|
original
|
||
|
orphan
|
||
|
ostrich
|
||
|
other
|
||
|
outdoor
|
||
|
outer
|
||
|
output
|
||
|
outside
|
||
|
oval
|
||
|
oven
|
||
|
over
|
||
|
own
|
||
|
owner
|
||
|
oxygen
|
||
|
oyster
|
||
|
ozone
|
||
|
pact
|
||
|
paddle
|
||
|
page
|
||
|
pair
|
||
|
palace
|
||
|
palm
|
||
|
panda
|
||
|
panel
|
||
|
panic
|
||
|
panther
|
||
|
paper
|
||
|
parade
|
||
|
parent
|
||
|
park
|
||
|
parrot
|
||
|
party
|
||
|
pass
|
||
|
patch
|
||
|
path
|
||
|
patient
|
||
|
patrol
|
||
|
pattern
|
||
|
pause
|
||
|
pave
|
||
|
payment
|
||
|
peace
|
||
|
peanut
|
||
|
pear
|
||
|
peasant
|
||
|
pelican
|
||
|
pen
|
||
|
penalty
|
||
|
pencil
|
||
|
people
|
||
|
pepper
|
||
|
perfect
|
||
|
permit
|
||
|
person
|
||
|
pet
|
||
|
phone
|
||
|
photo
|
||
|
phrase
|
||
|
physical
|
||
|
piano
|
||
|
picnic
|
||
|
picture
|
||
|
piece
|
||
|
pig
|
||
|
pigeon
|
||
|
pill
|
||
|
pilot
|
||
|
pink
|
||
|
pioneer
|
||
|
pipe
|
||
|
pistol
|
||
|
pitch
|
||
|
pizza
|
||
|
place
|
||
|
planet
|
||
|
plastic
|
||
|
plate
|
||
|
play
|
||
|
please
|
||
|
pledge
|
||
|
pluck
|
||
|
plug
|
||
|
plunge
|
||
|
poem
|
||
|
poet
|
||
|
point
|
||
|
polar
|
||
|
pole
|
||
|
police
|
||
|
pond
|
||
|
pony
|
||
|
pool
|
||
|
popular
|
||
|
portion
|
||
|
position
|
||
|
possible
|
||
|
post
|
||
|
potato
|
||
|
pottery
|
||
|
poverty
|
||
|
powder
|
||
|
power
|
||
|
practice
|
||
|
praise
|
||
|
predict
|
||
|
prefer
|
||
|
prepare
|
||
|
present
|
||
|
pretty
|
||
|
prevent
|
||
|
price
|
||
|
pride
|
||
|
primary
|
||
|
print
|
||
|
priority
|
||
|
prison
|
||
|
private
|
||
|
prize
|
||
|
problem
|
||
|
process
|
||
|
produce
|
||
|
profit
|
||
|
program
|
||
|
project
|
||
|
promote
|
||
|
proof
|
||
|
property
|
||
|
prosper
|
||
|
protect
|
||
|
proud
|
||
|
provide
|
||
|
public
|
||
|
pudding
|
||
|
pull
|
||
|
pulp
|
||
|
pulse
|
||
|
pumpkin
|
||
|
punch
|
||
|
pupil
|
||
|
puppy
|
||
|
purchase
|
||
|
purity
|
||
|
purpose
|
||
|
purse
|
||
|
push
|
||
|
put
|
||
|
puzzle
|
||
|
pyramid
|
||
|
quality
|
||
|
quantum
|
||
|
quarter
|
||
|
question
|
||
|
quick
|
||
|
quit
|
||
|
quiz
|
||
|
quote
|
||
|
rabbit
|
||
|
raccoon
|
||
|
race
|
||
|
rack
|
||
|
radar
|
||
|
radio
|
||
|
rail
|
||
|
rain
|
||
|
raise
|
||
|
rally
|
||
|
ramp
|
||
|
ranch
|
||
|
random
|
||
|
range
|
||
|
rapid
|
||
|
rare
|
||
|
rate
|
||
|
rather
|
||
|
raven
|
||
|
raw
|
||
|
razor
|
||
|
ready
|
||
|
real
|
||
|
reason
|
||
|
rebel
|
||
|
rebuild
|
||
|
recall
|
||
|
receive
|
||
|
recipe
|
||
|
record
|
||
|
recycle
|
||
|
reduce
|
||
|
reflect
|
||
|
reform
|
||
|
refuse
|
||
|
region
|
||
|
regret
|
||
|
regular
|
||
|
reject
|
||
|
relax
|
||
|
release
|
||
|
relief
|
||
|
rely
|
||
|
remain
|
||
|
remember
|
||
|
remind
|
||
|
remove
|
||
|
render
|
||
|
renew
|
||
|
rent
|
||
|
reopen
|
||
|
repair
|
||
|
repeat
|
||
|
replace
|
||
|
report
|
||
|
require
|
||
|
rescue
|
||
|
resemble
|
||
|
resist
|
||
|
resource
|
||
|
response
|
||
|
result
|
||
|
retire
|
||
|
retreat
|
||
|
return
|
||
|
reunion
|
||
|
reveal
|
||
|
review
|
||
|
reward
|
||
|
rhythm
|
||
|
rib
|
||
|
ribbon
|
||
|
rice
|
||
|
rich
|
||
|
ride
|
||
|
ridge
|
||
|
rifle
|
||
|
right
|
||
|
rigid
|
||
|
ring
|
||
|
riot
|
||
|
ripple
|
||
|
risk
|
||
|
ritual
|
||
|
rival
|
||
|
river
|
||
|
road
|
||
|
roast
|
||
|
robot
|
||
|
robust
|
||
|
rocket
|
||
|
romance
|
||
|
roof
|
||
|
rookie
|
||
|
room
|
||
|
rose
|
||
|
rotate
|
||
|
rough
|
||
|
round
|
||
|
route
|
||
|
royal
|
||
|
rubber
|
||
|
rude
|
||
|
rug
|
||
|
rule
|
||
|
run
|
||
|
runway
|
||
|
rural
|
||
|
sad
|
||
|
saddle
|
||
|
sadness
|
||
|
safe
|
||
|
sail
|
||
|
salad
|
||
|
salmon
|
||
|
salon
|
||
|
salt
|
||
|
salute
|
||
|
same
|
||
|
sample
|
||
|
sand
|
||
|
satisfy
|
||
|
satoshi
|
||
|
sauce
|
||
|
sausage
|
||
|
save
|
||
|
say
|
||
|
scale
|
||
|
scan
|
||
|
scare
|
||
|
scatter
|
||
|
scene
|
||
|
scheme
|
||
|
school
|
||
|
science
|
||
|
scissors
|
||
|
scorpion
|
||
|
scout
|
||
|
scrap
|
||
|
screen
|
||
|
script
|
||
|
scrub
|
||
|
sea
|
||
|
search
|
||
|
season
|
||
|
seat
|
||
|
second
|
||
|
secret
|
||
|
section
|
||
|
security
|
||
|
seed
|
||
|
seek
|
||
|
segment
|
||
|
select
|
||
|
sell
|
||
|
seminar
|
||
|
senior
|
||
|
sense
|
||
|
sentence
|
||
|
series
|
||
|
service
|
||
|
session
|
||
|
settle
|
||
|
setup
|
||
|
seven
|
||
|
shadow
|
||
|
shaft
|
||
|
shallow
|
||
|
share
|
||
|
shed
|
||
|
shell
|
||
|
sheriff
|
||
|
shield
|
||
|
shift
|
||
|
shine
|
||
|
ship
|
||
|
shiver
|
||
|
shock
|
||
|
shoe
|
||
|
shoot
|
||
|
shop
|
||
|
short
|
||
|
shoulder
|
||
|
shove
|
||
|
shrimp
|
||
|
shrug
|
||
|
shuffle
|
||
|
shy
|
||
|
sibling
|
||
|
sick
|
||
|
side
|
||
|
siege
|
||
|
sight
|
||
|
sign
|
||
|
silent
|
||
|
silk
|
||
|
silly
|
||
|
silver
|
||
|
similar
|
||
|
simple
|
||
|
since
|
||
|
sing
|
||
|
siren
|
||
|
sister
|
||
|
situate
|
||
|
six
|
||
|
size
|
||
|
skate
|
||
|
sketch
|
||
|
ski
|
||
|
skill
|
||
|
skin
|
||
|
skirt
|
||
|
skull
|
||
|
slab
|
||
|
slam
|
||
|
sleep
|
||
|
slender
|
||
|
slice
|
||
|
slide
|
||
|
slight
|
||
|
slim
|
||
|
slogan
|
||
|
slot
|
||
|
slow
|
||
|
slush
|
||
|
small
|
||
|
smart
|
||
|
smile
|
||
|
smoke
|
||
|
smooth
|
||
|
snack
|
||
|
snake
|
||
|
snap
|
||
|
sniff
|
||
|
snow
|
||
|
soap
|
||
|
soccer
|
||
|
social
|
||
|
sock
|
||
|
soda
|
||
|
soft
|
||
|
solar
|
||
|
soldier
|
||
|
solid
|
||
|
solution
|
||
|
solve
|
||
|
someone
|
||
|
song
|
||
|
soon
|
||
|
sorry
|
||
|
sort
|
||
|
soul
|
||
|
sound
|
||
|
soup
|
||
|
source
|
||
|
south
|
||
|
space
|
||
|
spare
|
||
|
spatial
|
||
|
spawn
|
||
|
speak
|
||
|
special
|
||
|
speed
|
||
|
spell
|
||
|
spend
|
||
|
sphere
|
||
|
spice
|
||
|
spider
|
||
|
spike
|
||
|
spin
|
||
|
spirit
|
||
|
split
|
||
|
spoil
|
||
|
sponsor
|
||
|
spoon
|
||
|
sport
|
||
|
spot
|
||
|
spray
|
||
|
spread
|
||
|
spring
|
||
|
spy
|
||
|
square
|
||
|
squeeze
|
||
|
squirrel
|
||
|
stable
|
||
|
stadium
|
||
|
staff
|
||
|
stage
|
||
|
stairs
|
||
|
stamp
|
||
|
stand
|
||
|
start
|
||
|
state
|
||
|
stay
|
||
|
steak
|
||
|
steel
|
||
|
stem
|
||
|
step
|
||
|
stereo
|
||
|
stick
|
||
|
still
|
||
|
sting
|
||
|
stock
|
||
|
stomach
|
||
|
stone
|
||
|
stool
|
||
|
story
|
||
|
stove
|
||
|
strategy
|
||
|
street
|
||
|
strike
|
||
|
strong
|
||
|
struggle
|
||
|
student
|
||
|
stuff
|
||
|
stumble
|
||
|
style
|
||
|
subject
|
||
|
submit
|
||
|
subway
|
||
|
success
|
||
|
such
|
||
|
sudden
|
||
|
suffer
|
||
|
sugar
|
||
|
suggest
|
||
|
suit
|
||
|
summer
|
||
|
sun
|
||
|
sunny
|
||
|
sunset
|
||
|
super
|
||
|
supply
|
||
|
supreme
|
||
|
sure
|
||
|
surface
|
||
|
surge
|
||
|
surprise
|
||
|
surround
|
||
|
survey
|
||
|
suspect
|
||
|
sustain
|
||
|
swallow
|
||
|
swamp
|
||
|
swap
|
||
|
swarm
|
||
|
swear
|
||
|
sweet
|
||
|
swift
|
||
|
swim
|
||
|
swing
|
||
|
switch
|
||
|
sword
|
||
|
symbol
|
||
|
symptom
|
||
|
syrup
|
||
|
system
|
||
|
table
|
||
|
tackle
|
||
|
tag
|
||
|
tail
|
||
|
talent
|
||
|
talk
|
||
|
tank
|
||
|
tape
|
||
|
target
|
||
|
task
|
||
|
taste
|
||
|
tattoo
|
||
|
taxi
|
||
|
teach
|
||
|
team
|
||
|
tell
|
||
|
ten
|
||
|
tenant
|
||
|
tennis
|
||
|
tent
|
||
|
term
|
||
|
test
|
||
|
text
|
||
|
thank
|
||
|
that
|
||
|
theme
|
||
|
then
|
||
|
theory
|
||
|
there
|
||
|
they
|
||
|
thing
|
||
|
this
|
||
|
thought
|
||
|
three
|
||
|
thrive
|
||
|
throw
|
||
|
thumb
|
||
|
thunder
|
||
|
ticket
|
||
|
tide
|
||
|
tiger
|
||
|
tilt
|
||
|
timber
|
||
|
time
|
||
|
tiny
|
||
|
tip
|
||
|
tired
|
||
|
tissue
|
||
|
title
|
||
|
toast
|
||
|
tobacco
|
||
|
today
|
||
|
toddler
|
||
|
toe
|
||
|
together
|
||
|
toilet
|
||
|
token
|
||
|
tomato
|
||
|
tomorrow
|
||
|
tone
|
||
|
tongue
|
||
|
tonight
|
||
|
tool
|
||
|
tooth
|
||
|
top
|
||
|
topic
|
||
|
topple
|
||
|
torch
|
||
|
tornado
|
||
|
tortoise
|
||
|
toss
|
||
|
total
|
||
|
tourist
|
||
|
toward
|
||
|
tower
|
||
|
town
|
||
|
toy
|
||
|
track
|
||
|
trade
|
||
|
traffic
|
||
|
tragic
|
||
|
train
|
||
|
transfer
|
||
|
trap
|
||
|
trash
|
||
|
travel
|
||
|
tray
|
||
|
treat
|
||
|
tree
|
||
|
trend
|
||
|
trial
|
||
|
tribe
|
||
|
trick
|
||
|
trigger
|
||
|
trim
|
||
|
trip
|
||
|
trophy
|
||
|
trouble
|
||
|
truck
|
||
|
true
|
||
|
truly
|
||
|
trumpet
|
||
|
trust
|
||
|
truth
|
||
|
try
|
||
|
tube
|
||
|
tuition
|
||
|
tumble
|
||
|
tuna
|
||
|
tunnel
|
||
|
turkey
|
||
|
turn
|
||
|
turtle
|
||
|
twelve
|
||
|
twenty
|
||
|
twice
|
||
|
twin
|
||
|
twist
|
||
|
two
|
||
|
type
|
||
|
typical
|
||
|
ugly
|
||
|
umbrella
|
||
|
unable
|
||
|
unaware
|
||
|
uncle
|
||
|
uncover
|
||
|
under
|
||
|
undo
|
||
|
unfair
|
||
|
unfold
|
||
|
unhappy
|
||
|
uniform
|
||
|
unique
|
||
|
unit
|
||
|
universe
|
||
|
unknown
|
||
|
unlock
|
||
|
until
|
||
|
unusual
|
||
|
unveil
|
||
|
update
|
||
|
upgrade
|
||
|
uphold
|
||
|
upon
|
||
|
upper
|
||
|
upset
|
||
|
urban
|
||
|
urge
|
||
|
usage
|
||
|
use
|
||
|
used
|
||
|
useful
|
||
|
useless
|
||
|
usual
|
||
|
utility
|
||
|
vacant
|
||
|
vacuum
|
||
|
vague
|
||
|
valid
|
||
|
valley
|
||
|
valve
|
||
|
van
|
||
|
vanish
|
||
|
vapor
|
||
|
various
|
||
|
vast
|
||
|
vault
|
||
|
vehicle
|
||
|
velvet
|
||
|
vendor
|
||
|
venture
|
||
|
venue
|
||
|
verb
|
||
|
verify
|
||
|
version
|
||
|
very
|
||
|
vessel
|
||
|
veteran
|
||
|
viable
|
||
|
vibrant
|
||
|
vicious
|
||
|
victory
|
||
|
video
|
||
|
view
|
||
|
village
|
||
|
vintage
|
||
|
violin
|
||
|
virtual
|
||
|
virus
|
||
|
visa
|
||
|
visit
|
||
|
visual
|
||
|
vital
|
||
|
vivid
|
||
|
vocal
|
||
|
voice
|
||
|
void
|
||
|
volcano
|
||
|
volume
|
||
|
vote
|
||
|
voyage
|
||
|
wage
|
||
|
wagon
|
||
|
wait
|
||
|
walk
|
||
|
wall
|
||
|
walnut
|
||
|
want
|
||
|
warfare
|
||
|
warm
|
||
|
warrior
|
||
|
wash
|
||
|
wasp
|
||
|
waste
|
||
|
water
|
||
|
wave
|
||
|
way
|
||
|
wealth
|
||
|
weapon
|
||
|
wear
|
||
|
weasel
|
||
|
weather
|
||
|
web
|
||
|
wedding
|
||
|
weekend
|
||
|
weird
|
||
|
welcome
|
||
|
west
|
||
|
wet
|
||
|
whale
|
||
|
what
|
||
|
wheat
|
||
|
wheel
|
||
|
when
|
||
|
where
|
||
|
whip
|
||
|
whisper
|
||
|
wide
|
||
|
width
|
||
|
wife
|
||
|
wild
|
||
|
will
|
||
|
win
|
||
|
window
|
||
|
wine
|
||
|
wing
|
||
|
wink
|
||
|
winner
|
||
|
winter
|
||
|
wire
|
||
|
wisdom
|
||
|
wise
|
||
|
wish
|
||
|
witness
|
||
|
wolf
|
||
|
woman
|
||
|
wonder
|
||
|
wood
|
||
|
wool
|
||
|
word
|
||
|
work
|
||
|
world
|
||
|
worry
|
||
|
worth
|
||
|
wrap
|
||
|
wreck
|
||
|
wrestle
|
||
|
wrist
|
||
|
write
|
||
|
wrong
|
||
|
yard
|
||
|
year
|
||
|
yellow
|
||
|
you
|
||
|
young
|
||
|
youth
|
||
|
zebra
|
||
|
zero
|
||
|
zone
|
||
|
zoo`.split(`
|
||
|
`),jm="logger/5.7.0";let cd=!1,fd=!1;const ca={debug:1,default:2,info:2,warning:3,error:4,off:5};let ud=ca.default,pf=null;function Km(){try{const r=[];if(["NFD","NFC","NFKD","NFKC"].forEach(t=>{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{r.push(t)}}),r.length)throw new Error("missing "+r.join(", "));if("é".normalize("NFD")!=="é")throw new Error("broken implementation")}catch(r){return r.message}return null}const ld=Km();var ou;(function(r){r.DEBUG="DEBUG",r.INFO="INFO",r.WARNING="WARNING",r.ERROR="ERROR",r.OFF="OFF"})(ou||(ou={}));var jr;(function(r){r.UNKNOWN_ERROR="UNKNOWN_ERROR",r.NOT_IMPLEMENTED="NOT_IMPLEMENTED",r.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",r.NETWORK_ERROR="NETWORK_ERROR",r.SERVER_ERROR="SERVER_ERROR",r.TIMEOUT="TIMEOUT",r.BUFFER_OVERRUN="BUFFER_OVERRUN",r.NUMERIC_FAULT="NUMERIC_FAULT",r.MISSING_NEW="MISSING_NEW",r.INVALID_ARGUMENT="INVALID_ARGUMENT",r.MISSING_ARGUMENT="MISSING_ARGUMENT",r.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",r.CALL_EXCEPTION="CALL_EXCEPTION",r.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",r.NONCE_EXPIRED="NONCE_EXPIRED",r.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",r.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",r.TRANSACTION_REPLACED="TRANSACTION_REPLACED",r.ACTION_REJECTED="ACTION_REJECTED"})(jr||(jr={}));const hd="0123456789abcdef";class Le{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,n){const i=t.toLowerCase();ca[i]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(ud>ca[i])&&console.log.apply(console,n)}debug(...t){this._log(Le.levels.DEBUG,t)}info(...t){this._log(Le.levels.INFO,t)}warn(...t){this._log(Le.levels.WARNING,t)}makeError(t,n,i){if(fd)return this.makeError("censored error",n,{});n||(n=Le.errors.UNKNOWN_ERROR),i||(i={});const o=[];Object.keys(i).forEach(f=>{const h=i[f];try{if(h instanceof Uint8Array){let d="";for(let g=0;g<h.length;g++)d+=hd[h[g]>>4],d+=hd[h[g]&15];o.push(f+"=Uint8Array(0x"+d+")")}else o.push(f+"="+JSON.stringify(h))}catch{o.push(f+"="+JSON.stringify(i[f].toString()))}}),o.push(`code=${n}`),o.push(`version=${this.version}`);const s=t;let a="";switch(n){case jr.NUMERIC_FAULT:{a="NUMERIC_FAULT";const f=t;switch(f){case"overflow":case"underflow":case"division-by-zero":a+="-"+f;break;case"negative-power":case"negative-width":a+="-unsupported";break;case"unbound-bitwise-result":a+="-unbound-result";break}break}case jr.CALL_EXCEPTION:case jr.INSUFFICIENT_FUNDS:case jr.MISSING_NEW:case jr.NONCE_EXPIRED:case jr.REPLACEMENT_UNDERPRICED:case jr.TRANSACTION_REPLACED:case jr.UNPREDICTABLE_GAS_LIMIT:a=n;break}a&&(t+=" [ See: https://links.ethers.org/v5-errors-"+a+" ]"),o.length&&(t+=" ("+o.join(", ")+")");const c=new Error(t);return c.reason=s,c.code=n,Object.keys(i).forEach(function(f){c[f]=i[f]}),c}throwError(t,n,i){throw this.makeError(t,n,i)}throwArgumentError(t,n,i){return this.throwError(t,Le.errors.INVALID_ARGUMENT,{argument:n,value:i})}assert(t,n,i,o){t||this.throwError(n,i,o)}assertArgument(t,n,i,o){t||this.throwArgumentError(n,i,o)}checkNormalize(t){ld&&this.throwError("platform missing String.prototype.normalize",Le.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:ld})}checkSafeUint53(t,n){typeof t=="number"&&(n==null&&(n="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(n,Le.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(n,Le.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,n,i){i?i=": "+i:i="",t<n&&this.throwError("missing argument"+i,Le.errors.MISSING_ARGUMENT,{count:t,expectedCount:n}),t>n&&this.throwError("too many arguments"+i,Le.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:n})}checkNew(t,n){(t===Object||t==null)&&this.throwError("missing new",Le.errors.MISSING_NEW,{name:n.name})}checkAbstract(t,n){t===n?this.throwError("cannot instantiate abstract class "+JSON.stringify(n.name)+" directly; use a sub-class",Le.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t==
|
||
|
* [js-sha3]{@link https://github.com/emn178/js-sha3}
|
||
|
*
|
||
|
* @version 0.8.0
|
||
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
||
|
* @copyright Chen, Yi-Cyuan 2015-2018
|
||
|
* @license MIT
|
||
|
*/var Td;function Ib(){return Td||(Td=1,function(r){(function(){var t="input is invalid type",n="finalize already called",i=typeof window=="object",o=i?window:{};o.JS_SHA3_NO_WINDOW&&(i=!1);var s=!i&&typeof self=="object",a=!o.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;a?o=qo:s&&(o=self);var c=!o.JS_SHA3_NO_COMMON_JS&&!0&&r.exports,f=!o.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",h="0123456789abcdef".split(""),d=[31,7936,2031616,520093696],g=[4,1024,262144,67108864],x=[1,256,65536,16777216],S=[6,1536,393216,100663296],D=[0,8,16,24],E=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],_=[224,256,384,512],T=[128,256],F=["hex","buffer","arrayBuffer","array","digest"],U={128:168,256:136};(o.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(B){return Object.prototype.toString.call(B)==="[object Array]"}),f&&(o.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(B){return typeof B=="object"&&B.buffer&&B.buffer.constructor===ArrayBuffer});for(var z=function(B,j,Z){return function(Y){return new y(B,j,B).update(Y)[Z]()}},V=function(B,j,Z){return function(Y,ne){return new y(B,j,ne).update(Y)[Z]()}},G=function(B,j,Z){return function(Y,ne,ue,ce){return u["cshake"+B].update(Y,ne,ue,ce)[Z]()}},ee=function(B,j,Z){return function(Y,ne,ue,ce){return u["kmac"+B].update(Y,ne,ue,ce)[Z]()}},Q=function(B,j,Z,Y){for(var ne=0;ne<F.length;++ne){var ue=F[ne];B[ue]=j(Z,Y,ue)}return B},X=function(B,j){var Z=z(B,j,"hex");return Z.create=function(){return new y(B,j,B)},Z.update=function(Y){return Z.create().update(Y)},Q(Z,z,B,j)},se=function(B,j){var Z=V(B,j,"hex");return Z.create=function(Y){return new y(B,j,Y)},Z.update=function(Y,ne){return Z.create(ne).update(Y)},Q(Z,V,B,j)},oe=function(B,j){var Z=U[B],Y=G(B,j,"hex");return Y.create=function(ne,ue,ce){return!ue&&!ce?u["shake"+B].create(ne):new y(B,j,ne).bytepad([ue,ce],Z)},Y.update=function(ne,ue,ce,ae){return Y.create(ue,ce,ae).update(ne)},Q(Y,G,B,j)},H=function(B,j){var Z=U[B],Y=ee(B,j,"hex");return Y.create=function(ne,ue,ce){return new N(B,j,ue).bytepad(["KMAC",ce],Z).bytepad([ne],Z)},Y.update=function(ne,ue,ce,ae){return Y.create(ne,ce,ae).update(ue)},Q(Y,ee,B,j)},v=[{name:"keccak",padding:x,bits:_,createMethod:X},{name:"sha3",padding:S,bits:_,createMethod:X},{name:"shake",padding:d,bits:T,createMethod:se},{name:"cshake",padding:g,bits:T,createMethod:oe},{name:"kmac",padding:g,bits:T,createMethod:H}],u={},l=[],p=0;p<v.length;++p)for(var w=v[p],A=w.bits,C=0;C<A.length;++C){var k=w.name+"_"+A[C];if(l.push(k),u[k]=w.createMethod(A[C],w.padding),w.name!=="sha3"){var I=w.name+A[C];l.push(I),u[I]=u[k]}}function y(B,j,Z){this.blocks=[],this.s=[],this.padding=j,this.outputBits=Z,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(B<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=Z>>5,this.extraBytes=(Z&31)>>3;for(var Y=0;Y<50;++Y)this.s[Y]=0}y.prototype.update=function(B){if(this.finalized)throw new Error(n);var j,Z=typeof B;if(Z!=="string"){if(Z==="object"){if(B===null)throw new Error(t);if(f&&B.constructor===ArrayBuffer)B=new Uint8Array(B);else if(!Array.isArray(B)&&(!f||!ArrayBuffer.isView(B)))throw new Error(t)}else throw new Error(t);j=!0}for(var Y=this.blocks,ne=this.byteCount,ue=B.length,ce=this.blockCount,ae=0,be=this.s,fe,ge;ae<ue;){if(this.reset)for(this.reset=!1,Y[0]=this.block,fe=1;fe<ce+1;++fe)Y[fe]=0;if(j)for(fe=this.start;ae<ue&&fe<ne;++ae)Y[fe>>2]|=B[ae]<<D[fe++&3];else for(fe=this.start;ae<ue&&fe<ne;++ae)ge=B.charCodeAt(ae),ge<128?Y[fe>>2]|=ge<<D[fe++&3]:ge<2048?(Y[fe>>2]|=(192|ge>>6)<<D[fe++&3],Y[fe>>2]|=(128|ge&63)<<D[fe++&3]):ge<55296||ge>=57344?(Y[fe>>2]|=(224|ge>>12)<<D[fe++&3],Y[fe>>2]|=(128|ge>>6&63)<<D[fe++&3],Y[fe>>2]|=(128|ge&63)<<D[fe++&3]):(ge=65536+
|
||
|
`)+`
|
||
|
`)}static register(t,n){n||(n=t.locale)}}const Hb="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFort
|
||
|
* MIT License
|
||
|
*
|
||
|
* Copyright (c) 2017-2024 Peculiar Ventures, LLC
|
||
|
*
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
|
* of this software and associated documentation files (the "Software"), to deal
|
||
|
* in the Software without restriction, including without limitation the rights
|
||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
|
* copies of the Software, and to permit persons to whom the Software is
|
||
|
* furnished to do so, subject to the following conditions:
|
||
|
*
|
||
|
* The above copyright notice and this permission notice shall be included in all
|
||
|
* copies or substantial portions of the Software.
|
||
|
*
|
||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||
|
* SOFTWARE.
|
||
|
*
|
||
|
*/const KE="[object ArrayBuffer]";class Me{static isArrayBuffer(t){return Object.prototype.toString.call(t)===KE}static toArrayBuffer(t){return this.isArrayBuffer(t)?t:t.byteLength===t.buffer.byteLength||t.byteOffset===0&&t.byteLength===t.buffer.byteLength?t.buffer:this.toUint8Array(t.buffer).slice(t.byteOffset,t.byteOffset+t.byteLength).buffer}static toUint8Array(t){return this.toView(t,Uint8Array)}static toView(t,n){if(t.constructor===n)return t;if(this.isArrayBuffer(t))return new n(t);if(this.isArrayBufferView(t))return new n(t.buffer,t.byteOffset,t.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(t){return this.isArrayBufferView(t)||this.isArrayBuffer(t)}static isArrayBufferView(t){return ArrayBuffer.isView(t)||t&&this.isArrayBuffer(t.buffer)}static isEqual(t,n){const i=Me.toUint8Array(t),o=Me.toUint8Array(n);if(i.length!==o.byteLength)return!1;for(let s=0;s<i.length;s++)if(i[s]!==o[s])return!1;return!0}static concat(...t){let n;Array.isArray(t[0])&&!(t[1]instanceof Function)||Array.isArray(t[0])&&t[1]instanceof Function?n=t[0]:t[t.length-1]instanceof Function?n=t.slice(0,t.length-1):n=t;let i=0;for(const a of n)i+=a.byteLength;const o=new Uint8Array(i);let s=0;for(const a of n){const c=this.toUint8Array(a);o.set(c,s),s+=c.length}return t[t.length-1]instanceof Function?this.toView(o,t[t.length-1]):o.buffer}}const Jf="string",zE=/^[0-9a-f\s]+$/i,qE=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,GE=/^[a-zA-Z0-9-_]+$/;class $0{static fromString(t){const n=unescape(encodeURIComponent(t)),i=new Uint8Array(n.length);for(let o=0;o<n.length;o++)i[o]=n.charCodeAt(o);return i.buffer}static toString(t){const n=Me.toUint8Array(t);let i="";for(let s=0;s<n.length;s++)i+=String.fromCharCode(n[s]);return decodeURIComponent(escape(i))}}class fn{static toString(t,n=!1){const i=Me.toArrayBuffer(t),o=new DataView(i);let s="";for(let a=0;a<i.byteLength;a+=2){const c=o.getUint16(a,n);s+=String.fromCharCode(c)}return s}static fromString(t,n=!1){const i=new ArrayBuffer(t.length*2),o=new DataView(i);for(let s=0;s<t.length;s++)o.setUint16(s*2,t.charCodeAt(s),n);return i}}class At{static isHex(t){return typeof t===Jf&&zE.test(t)}static isBase64(t){return typeof t===Jf&&qE.test(t)}static isBase64Url(t){return typeof t===Jf&&GE.test(t)}static ToString(t,n="utf8"){const i=Me.toUint8Array(t);switch(n.toLowerCase()){case"utf8":return this.ToUtf8String(i);case"binary":return this.ToBinary(i);case"hex":return this.ToHex(i);case"base64":return this.ToBase64(i);case"base64url":return this.ToBase64Url(i);case"utf16le":return fn.toString(i,!0);case"utf16":case"utf16be":return fn.toString(i);default:throw new Error(`Unknown type of encoding '${n}'`)}}static FromString(t,n="utf8"){if(!t)return new ArrayBuffer(0);switch(n.toLowerCase()){case"utf8":return this.FromUtf8String(t);case"binary":return this.FromBinary(t);case"hex":return this.FromHex(t);case"base64":return this.FromBase64(t);case"base64url":return this.FromBase64Url(t);case"utf16le":return fn.fromString(t,!0);case"utf16":case"utf16be":return fn.fromString(t);default:throw new Error(`Unknown type of encoding '${n}'`)}}static ToBase64(t){const n=Me.toUint8Array(t);if(typeof btoa<"u"){const i=this.ToString(n,"binary");return btoa(i)}else return Buffer.from(n).toString("base64")}static FromBase64(t){const n=this.formatString(t);if(!n)return new ArrayBuffer(0);if(!At.isBase64(n))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(n)):new Uint8Array(Buffer.from(n,"base64")).buffer}static FromBase64Url(t){const n=this.formatString(t);if(!n)return new ArrayBuffer(0);if(!At.isBase64Url(n))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(n.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(t){return this.ToBase64(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(t,n=At.DEFAULT_UTF8_ENCODING){switch(n){case"ascii":return this.FromBinary(t);case"utf8":re
|
||
|
Copyright (c) Peculiar Ventures, LLC
|
||
|
*/function So(r,t){let n=0;if(r.length===1)return r[0];for(let i=r.length-1;i>=0;i--)n+=r[r.length-1-i]*Math.pow(2,t*i);return n}function qi(r,t,n=-1){const i=n;let o=r,s=0,a=Math.pow(2,t);for(let c=1;c<8;c++){if(r<a){let f;if(i<0)f=new ArrayBuffer(c),s=c;else{if(i<c)return new ArrayBuffer(0);f=new ArrayBuffer(i),s=i}const h=new Uint8Array(f);for(let d=c-1;d>=0;d--){const g=Math.pow(2,d*t);h[s-d-1]=Math.floor(o/g),o-=h[s-d-1]*g}return f}a*=Math.pow(2,t)}return new ArrayBuffer(0)}function Fu(...r){let t=0,n=0;for(const s of r)t+=s.length;const i=new ArrayBuffer(t),o=new Uint8Array(i);for(const s of r)o.set(s,n),n+=s.length;return o}function ly(){const r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){const c=r[0]===255&&r[1]&128,f=r[0]===0&&(r[1]&128)===0;(c||f)&&this.warnings.push("Needlessly long format")}const t=new ArrayBuffer(this.valueHex.byteLength),n=new Uint8Array(t);for(let c=0;c<this.valueHex.byteLength;c++)n[c]=0;n[0]=r[0]&128;const i=So(n,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let c=0;c<this.valueHex.byteLength;c++)s[c]=r[c];return s[0]&=127,So(s,8)-i}function JE(r){const t=r<0?r*-1:r;let n=128;for(let i=1;i<8;i++){if(t<=n){if(r<0){const a=n-t,c=qi(a,8,i),f=new Uint8Array(c);return f[0]|=128,c}let o=qi(t,8,i),s=new Uint8Array(o);if(s[0]&128){const a=o.slice(0),c=new Uint8Array(a);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let f=0;f<a.byteLength;f++)s[f+1]=c[f];s[0]=0}return o}n*=Math.pow(2,8)}return new ArrayBuffer(0)}function YE(r,t){if(r.byteLength!==t.byteLength)return!1;const n=new Uint8Array(r),i=new Uint8Array(t);for(let o=0;o<n.length;o++)if(n[o]!==i[o])return!1;return!0}function xr(r,t){const n=r.toString(10);if(t<n.length)return"";const i=t-n.length,o=new Array(i);for(let a=0;a<i;a++)o[a]="0";return o.join("").concat(n)}/*!
|
||
|
* Copyright (c) 2014, GMO GlobalSign
|
||
|
* Copyright (c) 2015-2022, Peculiar Ventures
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* Author 2014-2019, Yury Strozhevsky
|
||
|
*
|
||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||
|
* are permitted provided that the following conditions are met:
|
||
|
*
|
||
|
* * Redistributions of source code must retain the above copyright notice, this
|
||
|
* list of conditions and the following disclaimer.
|
||
|
*
|
||
|
* * Redistributions in binary form must reproduce the above copyright notice, this
|
||
|
* list of conditions and the following disclaimer in the documentation and/or
|
||
|
* other materials provided with the distribution.
|
||
|
*
|
||
|
* * Neither the name of the copyright holder nor the names of its
|
||
|
* contributors may be used to endorse or promote products derived from
|
||
|
* this software without specific prior written permission.
|
||
|
*
|
||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
*
|
||
|
*/function Fa(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function ch(r){let t=0,n=0;for(let o=0;o<r.length;o++){const s=r[o];t+=s.byteLength}const i=new Uint8Array(t);for(let o=0;o<r.length;o++){const s=r[o];i.set(new Uint8Array(s),n),n+=s.byteLength}return i.buffer}function Pn(r,t,n,i){return t instanceof Uint8Array?t.byteLength?n<0?(r.error="Wrong parameter: inputOffset less than zero",!1):i<0?(r.error="Wrong parameter: inputLength less than zero",!1):t.byteLength-n-i<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}class pc{constructor(){this.items=[]}write(t){this.items.push(t)}final(){return ch(this.items)}}const zo=[new Uint8Array([1])],V0="0123456789",Yf="name",j0="valueHexView",ZE="isHexOnly",XE="idBlock",QE="tagClass",eS="tagNumber",tS="isConstructed",rS="fromBER",nS="toBER",iS="local",lr="",rn=new ArrayBuffer(0),gc=new Uint8Array(0),ps="EndOfContent",hy="OCTET STRING",dy="BIT STRING";function wn(r){var t;return t=class extends r{constructor(...i){var o;super(...i);const s=i[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?Me.toUint8Array(s.valueHex):gc}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(i){this.valueHexView=new Uint8Array(i)}fromBER(i,o,s){const a=i instanceof ArrayBuffer?new Uint8Array(i):i;if(!Pn(this,a,o,s))return-1;const c=o+s;return this.valueHexView=a.subarray(o,c),this.valueHexView.length?(this.blockLength=s,c):(this.warnings.push("Zero buffer length"),o)}toBER(i=!1){return this.isHexOnly?i?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",rn)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:At.ToHex(this.valueHexView)}}},t.NAME="hexBlock",t}class to{constructor({blockLength:t=0,error:n=lr,warnings:i=[],valueBeforeDecode:o=gc}={}){this.blockLength=t,this.error=n,this.warnings=i,this.valueBeforeDecodeView=Me.toUint8Array(o)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(t){this.valueBeforeDecodeView=new Uint8Array(t)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:At.ToHex(this.valueBeforeDecodeView)}}}to.NAME="baseBlock";class sr extends to{fromBER(t,n,i){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}}sr.NAME="valueBlock";class py extends wn(to){constructor({idBlock:t={}}={}){var n,i,o,s;super(),t?(this.isHexOnly=(n=t.isHexOnly)!==null&&n!==void 0?n:!1,this.valueHexView=t.valueHex?Me.toUint8Array(t.valueHex):gc,this.tagClass=(i=t.tagClass)!==null&&i!==void 0?i:-1,this.tagNumber=(o=t.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=t.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(t=!1){let n=0;switch(this.tagClass){case 1:n|=0;break;case 2:n|=64;break;case 3:n|=128;break;case 4:n|=192;break;default:return this.error="Unknown tag class",rn}if(this.isConstructed&&(n|=32),this.tagNumber<31&&!this.isHexOnly){const o=new Uint8Array(1);if(!t){let s=this.tagNumber;s&=31,n|=s,o[0]=n}return o.buffer}if(!this.isHexOnly){const o=qi(this.tagNumber,7),s=new Uint8Array(o),a=o.byteLength,c=new Uint8Array(a+1);if(c[0]=n|31,!t){for(let f=0;f<a-1;f++)c[f+1]=s[f]|128;c[a]=s[a-1]}return c.buffer}const i=new Uint8Array(this.valueHexView.byteLength+1);if(i[0]=n|31,!t){const o=this.valueHexView;for(let s=0;s<o.length-1;s++)i[s+1]=o[s]|128;i[this.valueHexView.byteLength]=o[o.length-1]}return i.buffer}fromBER(t,n,i){const o=Me.toUint8
|
||
|
`).map(o=>` ${o}`).join(`
|
||
|
`));const n=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return t.length?`${n} :
|
||
|
${t.join(`
|
||
|
`)}`:`${n} :`}}by=dr;he.Constructed=by;dr.NAME="CONSTRUCTED";class vy extends sr{fromBER(t,n,i){return n}toBER(t){return rn}}vy.override="EndOfContentValueBlock";var xy;class uh extends zt{constructor(t={}){super(t,vy),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}}xy=uh;he.EndOfContent=xy;uh.NAME=ps;var Ay;class Gi extends zt{constructor(t={}){super(t,sr),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(t,n,i){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=i,n+i>t.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):n+i}toBER(t,n){const i=new ArrayBuffer(2);if(!t){const o=new Uint8Array(i);o[0]=5,o[1]=0}return n&&n.write(i),i}onAsciiEncoding(){return`${this.constructor.NAME}`}}Ay=Gi;he.Null=Ay;Gi.NAME="NULL";class Ey extends wn(sr){constructor({value:t,...n}={}){super(n),n.valueHex?this.valueHexView=Me.toUint8Array(n.valueHex):this.valueHexView=new Uint8Array(1),t&&(this.value=t)}get value(){for(const t of this.valueHexView)if(t>0)return!0;return!1}set value(t){this.valueHexView[0]=t?255:0}fromBER(t,n,i){const o=Me.toUint8Array(t);return Pn(this,o,n,i)?(this.valueHexView=o.subarray(n,n+i),i>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,ly.call(this),this.blockLength=i,n+i):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}}Ey.NAME="BooleanValueBlock";var Sy;class yc extends zt{constructor(t={}){super(t,Ey),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(t){this.valueBlock.value=t}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}}Sy=yc;he.Boolean=Sy;yc.NAME="BOOLEAN";class By extends wn(li){constructor({isConstructed:t=!1,...n}={}){super(n),this.isConstructed=t}fromBER(t,n,i){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=li.prototype.fromBER.call(this,t,n,i),o===-1)return o;for(let s=0;s<this.value.length;s++){const a=this.value[s].constructor.NAME;if(a===ps){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(a!==hy)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(t,n,i),this.blockLength=i;return o}toBER(t,n){return this.isConstructed?li.prototype.toBER.call(this,t,n):t?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}}By.NAME="OctetStringValueBlock";var Dy;let Li=class Cy extends zt{constructor({idBlock:t={},lenBlock:n={},...i}={}){var o,s;(o=i.isConstructed)!==null&&o!==void 0||(i.isConstructed=!!(!((s=i.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:i.isConstructed,...t},lenBlock:{...n,isIndefiniteForm:!!i.isIndefiniteForm},...i},By),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(t,n,i){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,i===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),n;if(!this.valueBlock.isConstructed){const s=(t instanceof ArrayBuffer?new Uint8Array(t):t).subarray(n,n+i);try{if(s.byteLength){const a=Uo(s,0,s.byteLength);a.offset!==-1&&a.offset===i&&(this.valueBlock.value=[a.result])}}catch{}}return super.fromBER(t,n,i)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?dr.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${At.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;const t=[];for(const n of this.valueBlock.value)n instanceof Cy&&
|
||
|
`,t)}function a3(){if(!kh())return new Promise(t=>t(!1));const r=window.PublicKeyCredential;return r.isConditionalMediationAvailable===void 0?new Promise(t=>t(!1)):r.isConditionalMediationAvailable()}function c3({error:r,options:t}){const{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if(r.name==="AbortError"){if(t.signal instanceof AbortSignal)return new Yt({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:r})}else{if(r.name==="NotAllowedError")return new Yt({message:r.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:r});if(r.name==="SecurityError"){const i=window.location.hostname;if(Sw(i)){if(n.rpId!==i)return new Yt({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:r})}else return new Yt({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:r})}else if(r.name==="UnknownError")return new Yt({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:r})}return r}async function f3(r,t=!1){var g,x;if(!kh())throw new Error("WebAuthn is not supported in this browser");let n;((g=r.allowCredentials)==null?void 0:g.length)!==0&&(n=(x=r.allowCredentials)==null?void 0:x.map(Ew));const i={...r,challenge:Wa(r.challenge),allowCredentials:n},o={};if(t){if(!await a3())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation="conditional",i.allowCredentials=[]}o.publicKey=i,o.signal=Bw.createNewAbortSignal();let s;try{s=await navigator.credentials.get(o)}catch(S){throw c3({error:S,options:o})}if(!s)throw new Error("Authentication was not completed");const{id:a,rawId:c,response:f,type:h}=s;let d;return f.userHandle&&(d=ln(f.userHandle)),{id:a,rawId:ln(c),response:{authenticatorData:ln(f.authenticatorData),clientDataJSON:ln(f.clientDataJSON),signature:ln(f.signature),userHandle:d},type:h,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Dw(s.authenticatorAttachment)}}function Fs(r,t,n){if(t<24)return[t,1];const i=r.byteLength-n-1,o=new DataView(r.buffer,n+1);let s,a=0;switch(t){case 24:{i>0&&(s=o.getUint8(0),a=2);break}case 25:{i>1&&(s=o.getUint16(0,!1),a=3);break}case 26:{i>3&&(s=o.getUint32(0,!1),a=5);break}case 27:{if(i>7){const c=o.getBigUint64(0,!1);if(c>=24n&&c<=Number.MAX_SAFE_INTEGER)return[Number(c),9]}break}}if(s&&s>=24)return[s,a];throw new Error("Length not supported or not well formed")}const dl=0,Ja=1,Cw=2,Iw=3,_w=4,Mw=5,kw=6,u3=7;function _n(r,t){const n=r<<5;if(t<0)throw new Error("CBOR Data Item argument must not be negative");let i;if(typeof t=="number"){if(!Number.isInteger(t))throw new Error("CBOR Data Item argument must be an integer");i=BigInt(t)}else i=t;if(r==Ja){if(i==0n)throw new Error("CBOR Data Item argument cannot be zero when negative");i=i-1n}if(i>18446744073709551615n)throw new Error("CBOR number out of range");const o=new Uint8Array(8);return new DataView(o.buffer).setBigUint64(0,i,!1),i<=23?[n|o[7]]:i<=255?[n|24,o[7]]:i<=65535?[n|25,...o.slice(6)]:i<=4294967295?[n|26,...o.slice(4)]:[n|27,...o]}class Tw{constructor(t,n){Object.defineProperty(this,"tagId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"tagValue",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.tagId=t,this.tagValue=n}get tag(){return this.tagId}get value(){return this.tagValue}}function Nw(r,t,n){return Fs(r,t,n)}function l3(r,t,n){const[i,o]=Nw(r,t,n);return[-i-1,o]}function Rw(r,t,n){const[i,o]=Fs(r,t,n),s=n+o;return[new Uint8Array(r.buffer.slice(s,s+i)),o+i]}const h3=new TextDecoder;function d3(r,t,n){const[i,o]=Rw(r,t,n);return[h3.decode(i),o]}function p3(r,t,n){if(t===0)return[[],1];const[i,o]=Fs(r,t,n);let s=o;const a=[];for(let c=0;c<i;c++){if(r.byteLength-n-s<=0)throw new Error(
|
||
|
`)===0?A.substr(1,A.length):A}).forEach(function(A){var C=A.split(":"),k=C.shift().trim();if(k){var I=C.join(":").trim();try{p.append(k,I)}catch(y){console.warn("Response "+y.message)}}}),p}G.call(X.prototype);function H(l,p){if(!(this instanceof H))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(p||(p={}),this.type="default",this.status=p.status===void 0?200:p.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=p.statusText===void 0?"":""+p.statusText,this.headers=new E(p.headers),this.url=p.url||"",this._initBody(l)}G.call(H.prototype),H.prototype.clone=function(){return new H(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new E(this.headers),url:this.url})},H.error=function(){var l=new H(null,{status:200,statusText:""});return l.ok=!1,l.status=0,l.type="error",l};var v=[301,302,303,307,308];H.redirect=function(l,p){if(v.indexOf(p)===-1)throw new RangeError("Invalid status code");return new H(null,{status:p,headers:{location:l}})},a.DOMException=c.DOMException;try{new a.DOMException}catch{a.DOMException=function(p,w){this.message=p,this.name=w;var A=Error(p);this.stack=A.stack},a.DOMException.prototype=Object.create(Error.prototype),a.DOMException.prototype.constructor=a.DOMException}function u(l,p){return new Promise(function(w,A){var C=new X(l,p);if(C.signal&&C.signal.aborted)return A(new a.DOMException("Aborted","AbortError"));var k=new XMLHttpRequest;function I(){k.abort()}k.onload=function(){var re={statusText:k.statusText,headers:oe(k.getAllResponseHeaders()||"")};C.url.indexOf("file://")===0&&(k.status<200||k.status>599)?re.status=200:re.status=k.status,re.url="responseURL"in k?k.responseURL:re.headers.get("X-Request-URL");var B="response"in k?k.response:k.responseText;setTimeout(function(){w(new H(B,re))},0)},k.onerror=function(){setTimeout(function(){A(new TypeError("Network request failed"))},0)},k.ontimeout=function(){setTimeout(function(){A(new TypeError("Network request timed out"))},0)},k.onabort=function(){setTimeout(function(){A(new a.DOMException("Aborted","AbortError"))},0)};function y(re){try{return re===""&&c.location.href?c.location.href:re}catch{return re}}if(k.open(C.method,y(C.url),!0),C.credentials==="include"?k.withCredentials=!0:C.credentials==="omit"&&(k.withCredentials=!1),"responseType"in k&&(f.blob?k.responseType="blob":f.arrayBuffer&&(k.responseType="arraybuffer")),p&&typeof p.headers=="object"&&!(p.headers instanceof E||c.Headers&&p.headers instanceof c.Headers)){var N=[];Object.getOwnPropertyNames(p.headers).forEach(function(re){N.push(x(re)),k.setRequestHeader(re,S(p.headers[re]))}),C.headers.forEach(function(re,B){N.indexOf(B)===-1&&k.setRequestHeader(B,re)})}else C.headers.forEach(function(re,B){k.setRequestHeader(B,re)});C.signal&&(C.signal.addEventListener("abort",I),k.onreadystatechange=function(){k.readyState===4&&C.signal.removeEventListener("abort",I)}),k.send(typeof C._bodyInit>"u"?null:C._bodyInit)})}return u.polyfill=!0,c.fetch||(c.fetch=u,c.Headers=E,c.Request=X,c.Response=H),a.Headers=E,a.Request=X,a.Response=H,a.fetch=u,a})({})})(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var o=n.fetch?n:i;t=o.fetch,t.default=o.fetch,t.fetch=o.fetch,t.Headers=o.Headers,t.Request=o.Request,t.Response=o.Response,r.exports=t}(aa,aa.exports)),aa.exports}var O3=U3();const Hr="1.2.840.113549.1.1",P3=`${Hr}.1`,F3=`${Hr}.7`,L3=`${Hr}.9`,H3=`${Hr}.10`,$3=`${Hr}.2`,V3=`${Hr}.4`,j3=`${Hr}.5`,K3=`${Hr}.12`,z3=`${Hr}.13`,Pw=`${Hr}.15`,Fw=`${Hr}.16`,q3="1.3.14.3.2.26",G3="2.16.840.1.101.3.4.2.4",W3="2.16.840.1.101.3.4.2.1",J3="2.16.840.1.101.3.4.2.2",Y3="2.16.840.1.101.3.4.2.3",Z3="2.16.840.1.101.3.4.2.5",X3="2.16.840.1.101.3.4.2.6",Q3="1.2.840.113549.2.2",e8="1.2.840.113549.2.5",Nh=`${Hr}.8`;function Ut(r){return new Ke({algorithm:r,parameters:null})}Ut(Q3);Ut(e8);const Yi=Ut(q3);Ut(G3);Ut(W3);Ut(J3);Ut(Y3);Ut(Z3);Ut(X3);const Lw=new Ke({algorithm:N
|
||
|
`}return n=`-----BEGIN CERTIFICATE-----
|
||
|
${n}-----END CERTIFICATE-----
|
||
|
`,n}function Hh(r){const t=ko(r),n=Uint8Array.from([4]),i=t.get(Ce.x),o=t.get(Ce.y);if(!i)throw new Error("COSE public key was missing x");return Sr(o?[n,i,o]:[n,i])}function f8(r){return u8.stubThis(ko(r))}const u8={stubThis:r=>r};function Gw(r){const t=ms(r),n=JSON.parse(t);return l8.stubThis(n)}const l8={stubThis:r=>r};function jc(r){return h8.stubThis(ko(r))}const h8={stubThis:r=>r};async function d8(){const r=new Uint8Array(32);return await jw(r),p8.stubThis(r)}const p8={stubThis:r=>r},ap={"2.5.4.6":"C","2.5.4.10":"O","2.5.4.11":"OU","2.5.4.3":"CN"};function xs(r){const t=$t.parse(r,wi),n=t.tbsCertificate,i={combined:""};n.issuer.forEach(([a])=>{const c=ap[a.type];c&&(i[c]=a.value.toString())}),i.combined=cp(i);const o={combined:""};n.subject.forEach(([a])=>{const c=ap[a.type];c&&(o[c]=a.value.toString())}),o.combined=cp(o);let s=!1;if(n.extensions)for(const a of n.extensions)a.extnID===OS&&(s=$t.parse(a.extnValue,Eh).cA);return{issuer:i,subject:o,version:n.version,basicConstraintsCA:s,notBefore:n.validity.notBefore.getTime(),notAfter:n.validity.notAfter.getTime(),parsedCertificate:t}}function cp(r){const t=[];return r.C&&t.push(r.C),r.O&&t.push(r.O),r.OU&&t.push(r.OU),r.CN&&t.push(r.CN),t.join(" : ")}function Ww(r){return g8.stubThis(r)}const g8={stubThis:r=>O3.fetch(r)},fp={};async function y8(r){var x,S;const{extensions:t}=r.tbsCertificate;if(!t)return!1;let n,i,o;t.forEach(D=>{D.extnID===US?n=$t.parse(D.extnValue,Tc):D.extnID===HS?i=$t.parse(D.extnValue,$S):D.extnID===PS&&(o=$t.parse(D.extnValue,Ka))});let s;n&&n.keyIdentifier?s=fo(new Uint8Array(n.keyIdentifier.buffer)):i&&(s=fo(new Uint8Array(i.buffer)));const a=fo(new Uint8Array(r.tbsCertificate.serialNumber));if(s){const D=fp[s];if(D){const E=new Date;if(!D.nextUpdate||D.nextUpdate>E)return D.revokedCerts.indexOf(a)>=0}}const c=(S=(x=o==null?void 0:o[0].distributionPoint)==null?void 0:x.fullName)==null?void 0:S[0].uniformResourceIdentifier;if(!c)return!1;let f;try{f=await(await Ww(c)).arrayBuffer()}catch{return!1}let h;try{h=$t.parse(f,Pc)}catch{return!1}const d={revokedCerts:[],nextUpdate:void 0};h.tbsCertList.nextUpdate&&(d.nextUpdate=h.tbsCertList.nextUpdate.getTime());const g=h.tbsCertList.revokedCertificates;if(g){for(const D of g){const E=fo(new Uint8Array(D.userCertificate));d.revokedCerts.push(E)}return s&&(fp[s]=d),d.revokedCerts.indexOf(a)>=0}return!1}function w8(r){let t;try{t=ko(r)}catch(n){const i=n;throw new Error(`Error decoding authenticator extensions: ${i.message}`)}return Jw(t)}function Jw(r){const t={};for(const[n,i]of r)i instanceof Map?t[n]=Jw(i):t[n]=i;return t}function Yw(r){if(r.byteLength<37)throw new Error(`Authenticator data was ${r.byteLength} bytes, expected at least 37 bytes`);let t=0;const n=Za(r),i=r.slice(t,t+=32),o=r.slice(t,t+=1),s=o[0],a={up:!!(s&1),uv:!!(s&4),be:!!(s&8),bs:!!(s&16),at:!!(s&64),ed:!!(s&128),flagsInt:s},c=r.slice(t,t+4),f=n.getUint32(t,!1);t+=4;let h,d,g;if(a.at){h=r.slice(t,t+=16);const D=n.getUint16(t);t+=2,d=r.slice(t,t+=D);const E=B8("a301634f4b500327206745643235353139"),_=r.slice(t,t+E.byteLength);let T=!1;hn(E,_)&&(T=!0,r[t]=164);const F=ko(r.slice(t)),U=Uint8Array.from(op(F));T&&(r[t]=163),g=U,t+=U.byteLength}let x,S;if(a.ed){const D=ko(r.slice(t));S=Uint8Array.from(op(D)),x=w8(S),t+=S.byteLength}if(r.byteLength>t)throw new Error("Leftover bytes detected while parsing authenticator data");return m8.stubThis({rpIdHash:i,flagsBuf:o,flags:a,counter:f,counterBuf:c,aaguid:h,credentialID:d,credentialPublicKey:g,extensionsData:x,extensionsDataBuffer:S})}const m8={stubThis:r=>r};function Zi(r,t=-7){return typeof r=="string"&&(r=Vs(r)),c8(r,t)}function vl(r){let t;if(r==="1.2.840.10045.4.3.2")t=Ie.ES256;else if(r==="1.2.840.10045.4.3.3")t=Ie.ES384;else if(r==="1.2.840.10045.4.3.4")t=Ie.ES512;else if(r==="1.2.840.113549.1.1.11")t=Ie.RS256;else if(r==="1.2.840.113549.1.1.12")t=Ie.RS384;else if(r==="1.2.840.113549.1.1.13")t=Ie.RS512;else if(r==="1.2.840.113549.1.1.5")t=Ie.RS1;else throw new Error(`Unable to map X.509 signature algorithm ${r} to a COSE algorithm`);return t}function Zw(r){let t=new Map;const n=$
|
||
|
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
|
||
|
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
|
||
|
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
|
||
|
MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
|
||
|
YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
|
||
|
aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
|
||
|
jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
|
||
|
xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
|
||
|
1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
|
||
|
snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
|
||
|
U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
|
||
|
9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
|
||
|
BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
|
||
|
AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
|
||
|
yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
|
||
|
38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
|
||
|
AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
|
||
|
DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
|
||
|
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
||
|
-----END CERTIFICATE-----
|
||
|
`,O8=`-----BEGIN CERTIFICATE-----
|
||
|
MIIFYDCCA0igAwIBAgIJAOj6GWMU0voYMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
|
||
|
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTYwNTI2MTYyODUyWhcNMjYwNTI0MTYy
|
||
|
ODUyWjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
|
||
|
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
|
||
|
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
|
||
|
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
|
||
|
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
|
||
|
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
|
||
|
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
|
||
|
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
|
||
|
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
|
||
|
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
|
||
|
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
|
||
|
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
|
||
|
AGMCAwEAAaOBpjCBozAdBgNVHQ4EFgQUNmHhAHyIBQlRi0RsR/8aTMnqTxIwHwYD
|
||
|
VR0jBBgwFoAUNmHhAHyIBQlRi0RsR/8aTMnqTxIwDwYDVR0TAQH/BAUwAwEB/zAO
|
||
|
BgNVHQ8BAf8EBAMCAYYwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cHM6Ly9hbmRyb2lk
|
||
|
Lmdvb2dsZWFwaXMuY29tL2F0dGVzdGF0aW9uL2NybC8wDQYJKoZIhvcNAQELBQAD
|
||
|
ggIBACDIw41L3KlXG0aMiS//cqrG+EShHUGo8HNsw30W1kJtjn6UBwRM6jnmiwfB
|
||
|
Pb8VA91chb2vssAtX2zbTvqBJ9+LBPGCdw/E53Rbf86qhxKaiAHOjpvAy5Y3m00m
|
||
|
qC0w/Zwvju1twb4vhLaJ5NkUJYsUS7rmJKHHBnETLi8GFqiEsqTWpG/6ibYCv7rY
|
||
|
DBJDcR9W62BW9jfIoBQcxUCUJouMPH25lLNcDc1ssqvC2v7iUgI9LeoM1sNovqPm
|
||
|
QUiG9rHli1vXxzCyaMTjwftkJLkf6724DFhuKug2jITV0QkXvaJWF4nUaHOTNA4u
|
||
|
JU9WDvZLI1j83A+/xnAJUucIv/zGJ1AMH2boHqF8CY16LpsYgBt6tKxxWH00XcyD
|
||
|
CdW2KlBCeqbQPcsFmWyWugxdcekhYsAWyoSf818NUsZdBWBaR/OukXrNLfkQ79Iy
|
||
|
ZohZbvabO/X+MVT3rriAoKc8oE2Uws6DF+60PV7/WIPjNvXySdqspImSN78mflxD
|
||
|
qwLqRBYkA3I75qppLGG9rp7UCdRjxMl8ZDBld+7yvHVgt1cVzJx9xnyGCC23Uaic
|
||
|
MDSXYrB4I4WHXPGjxhZuCuPBLTdOLU8YRvMYdEvYebWHMpvwGCF6bAx3JBpIeOQ1
|
||
|
wDB5y0USicV3YgYGmi+NZfhA4URSh77Yd6uuJOJENRaNVTzk
|
||
|
-----END CERTIFICATE-----
|
||
|
`,P8=`-----BEGIN CERTIFICATE-----
|
||
|
MIIFHDCCAwSgAwIBAgIJANUP8luj8tazMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
|
||
|
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTkxMTIyMjAzNzU4WhcNMzQxMTE4MjAz
|
||
|
NzU4WjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
|
||
|
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
|
||
|
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
|
||
|
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
|
||
|
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
|
||
|
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
|
||
|
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
|
||
|
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
|
||
|
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
|
||
|
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
|
||
|
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
|
||
|
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
|
||
|
AGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud
|
||
|
IwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
||
|
VR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQBOMaBc8oumXb2voc7XCWnu
|
||
|
XKhBBK3e2KMGz39t7lA3XXRe2ZLLAkLM5y3J7tURkf5a1SutfdOyXAmeE6SRo83U
|
||
|
h6WszodmMkxK5GM4JGrnt4pBisu5igXEydaW7qq2CdC6DOGjG+mEkN8/TA6p3cno
|
||
|
L/sPyz6evdjLlSeJ8rFBH6xWyIZCbrcpYEJzXaUOEaxxXxgYz5/cTiVKN2M1G2ok
|
||
|
QBUIYSY6bjEL4aUN5cfo7ogP3UvliEo3Eo0YgwuzR2v0KR6C1cZqZJSTnghIC/vA
|
||
|
D32KdNQ+c3N+vl2OTsUVMC1GiWkngNx1OO1+kXW+YTnnTUOtOIswUP/Vqd5SYgAI
|
||
|
mMAfY8U9/iIgkQj6T2W6FsScy94IN9fFhE1UtzmLoBIuUFsVXJMTz+Jucth+IqoW
|
||
|
Fua9v1R93/k98p41pjtFX+H8DslVgfP097vju4KDlqN64xV1grw3ZLl4CiOe/A91
|
||
|
oeLm2UHOq6wn3esB4r2EIQKb6jTVGu5sYCcdWpXr0AUVqcABPdgL+H7qJguBw09o
|
||
|
jm6xNIrw2OocrDKsudk/okr/AwqEyPKw9WnMlQgLIKw1rODG2NvU9oR3GVGdMkUB
|
||
|
ZutL8VuFkERQGt6vQ2OCw0sV47VMkuYbacK/xyZFiRcrPJPb41zgbQj9XAEyLKCH
|
||
|
ex0SdDrx+tWUDqG8At2JHA==
|
||
|
-----END CERTIFICATE-----
|
||
|
`,F8=`-----BEGIN CERTIFICATE-----
|
||
|
MIICEjCCAZmgAwIBAgIQaB0BbHo84wIlpQGUKEdXcTAKBggqhkjOPQQDAzBLMR8w
|
||
|
HQYDVQQDDBZBcHBsZSBXZWJBdXRobiBSb290IENBMRMwEQYDVQQKDApBcHBsZSBJ
|
||
|
bmMuMRMwEQYDVQQIDApDYWxpZm9ybmlhMB4XDTIwMDMxODE4MjEzMloXDTQ1MDMx
|
||
|
NTAwMDAwMFowSzEfMB0GA1UEAwwWQXBwbGUgV2ViQXV0aG4gUm9vdCBDQTETMBEG
|
||
|
A1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49
|
||
|
AgEGBSuBBAAiA2IABCJCQ2pTVhzjl4Wo6IhHtMSAzO2cv+H9DQKev3//fG59G11k
|
||
|
xu9eI0/7o6V5uShBpe1u6l6mS19S1FEh6yGljnZAJ+2GNP1mi/YK2kSXIuTHjxA/
|
||
|
pcoRf7XkOtO4o1qlcaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUJtdk
|
||
|
2cV4wlpn0afeaxLQG2PxxtcwDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA
|
||
|
MGQCMFrZ+9DsJ1PW9hfNdBywZDsWDbWFp28it1d/5w2RPkRX3Bbn/UbDTNLx7Jr3
|
||
|
jAGGiQIwHFj+dJZYUJR786osByBelJYsVZd2GbHQu209b5RCmGQ21gpSAk9QZW4B
|
||
|
1bWeT0vT
|
||
|
-----END CERTIFICATE-----
|
||
|
`,L8=`-----BEGIN CERTIFICATE-----
|
||
|
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
|
||
|
A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
|
||
|
Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
|
||
|
MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
|
||
|
A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
|
||
|
hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
|
||
|
RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
|
||
|
gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
|
||
|
KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
|
||
|
QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
|
||
|
XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
|
||
|
DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
|
||
|
LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
|
||
|
RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
|
||
|
jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
|
||
|
6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
|
||
|
mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
|
||
|
Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
|
||
|
WD9f
|
||
|
-----END CERTIFICATE-----
|
||
|
`;class H8{constructor(){Object.defineProperty(this,"pemCertificates",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.pemCertificates=new Map}setRootCertificates(t){const{identifier:n,certificates:i}=t,o=[];for(const s of i)s instanceof Uint8Array?o.push(gn(s)):o.push(s);this.pemCertificates.set(n,o)}getRootCertificates(t){const{identifier:n}=t;return this.pemCertificates.get(n)??[]}}const Fo=new H8;Fo.setRootCertificates({identifier:"android-key",certificates:[O8,P8]});Fo.setRootCertificates({identifier:"android-safetynet",certificates:[U8]});Fo.setRootCertificates({identifier:"apple",certificates:[F8]});Fo.setRootCertificates({identifier:"mds",certificates:[L8]});async function $8(r){const{attStmt:t,clientDataHash:n,rpIdHash:i,credentialID:o,credentialPublicKey:s,aaguid:a,rootCertificates:c}=r,f=Uint8Array.from([0]),h=Hh(s),d=Sr([f,i,n,o,h]),g=t.get("sig"),x=t.get("x5c");if(!x)throw new Error("No attestation certificate provided in attestation statement (FIDOU2F)");if(!g)throw new Error("No attestation signature provided in attestation statement (FIDOU2F)");const S=Number.parseInt(fo(a),16);if(S!==0)throw new Error(`AAGUID "${S}" was not expected value`);try{await bi(x.map(gn),c)}catch(D){const E=D;throw new Error(`${E.message} (FIDOU2F)`)}return di({signature:g,data:d,x509Certificate:x[0],hashAlgorithm:Ie.ES256})}function V8(r){const t=r.split(".");return[JSON.parse(ms(t[0])),JSON.parse(ms(t[1])),t[2]]}function j8(r,t){const[n,i,o]=r.split("."),s=Zw(t),a=Vs(`${n}.${i}`),c=Nn(o);if(Vc(s))return Kw({data:a,signature:c,cosePublicKey:s,shaHashOverride:Ie.ES256});if(Ph(s))return zw({data:a,signature:c,cosePublicKey:s});const f=s.get(Ce.kty);throw new Error(`JWT verification with public key of kty ${f} is not supported by this method`)}const K8="https://mds.fidoalliance.org/";var gr;(function(r){r[r.DISABLED=0]="DISABLED",r[r.REFRESHING=1]="REFRESHING",r[r.READY=2]="READY"})(gr||(gr={}));class z8{constructor(){Object.defineProperty(this,"mdsCache",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,"statementCache",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,"state",{enumerable:!0,configurable:!0,writable:!0,value:gr.DISABLED}),Object.defineProperty(this,"verificationMode",{enumerable:!0,configurable:!0,writable:!0,value:"strict"})}async initialize(t={}){const{mdsServers:n=[K8],statements:i,verificationMode:o}=t;if(this.setState(gr.REFRESHING),i!=null&&i.length&&i.forEach(s=>{s.aaguid&&(this.statementCache[s.aaguid]={entry:{metadataStatement:s,statusReports:[],timeOfLastStatusChange:"1970-01-01"},url:""})}),n!=null&&n.length){Object.keys(this.statementCache).length,n.length;for(const s of n)try{await this.downloadBlob({url:s,no:0,nextUpdate:new Date(0)})}catch{}Object.keys(this.statementCache).length}o&&(this.verificationMode=o),this.setState(gr.READY)}async getStatement(t){if(this.state===gr.DISABLED||!t)return;t instanceof Uint8Array&&(t=qw(t)),await this.pauseUntilReady();const n=this.statementCache[t];if(!n){if(this.verificationMode==="strict")throw new Error(`No metadata statement found for aaguid "${t}"`);return}if(n.url){const o=this.mdsCache[n.url];if(new Date>o.nextUpdate)try{this.setState(gr.REFRESHING),await this.downloadBlob(o)}finally{this.setState(gr.READY)}}const{entry:i}=n;for(const o of i.statusReports){const{status:s}=o;if(s==="USER_VERIFICATION_BYPASS"||s==="ATTESTATION_KEY_COMPROMISE"||s==="USER_KEY_REMOTE_COMPROMISE"||s==="USER_KEY_PHYSICAL_COMPROMISE")throw new Error(`Detected compromised aaguid "${t}"`)}return i.metadataStatement}async downloadBlob(t){const{url:n,no:i}=t,s=await(await Ww(n)).text(),a=V8(s),c=a[0],f=a[1];if(f.no<=i)throw new Error(`Latest BLOB no. "${f.no}" is not greater than previous ${i}`);const h=c.x5c.map(gn);try{const E=Fo.getRootCertificates({identifier:"mds"});await bi(h,E)}catch(E){const _=E;throw new Error(`BLOB certificate path could not be validated: ${_.message}`)}const d=h[0];if(!await j8(s,ma(d)))throw new Error("BLOB signature could not be verified");for(const E of f.entries)E.aaguid&&(th
|
||
|
${T}`)}if(i!==void 0&&(s==null?void 0:s.algorithms)!==void 0){const _=s.algorithms.map(T=>T.alg);if(_.indexOf(i)<0)throw new Error(`Attestation statement alg ${i} did not match one of ${_}`)}const S=n.map(gn),D=a.map(gn);let E=!1;if(S.length===1&&D.indexOf(S[0])>=0&&(E=!0),!E)try{await bi(S,D)}catch(_){const T=_;throw new Error(`Could not validate certificate path with any metadata root certificates: ${T.message}`)}return!0}const lp={secp256r1_ecdsa_sha256_raw:{kty:2,alg:-7,crv:1},secp256r1_ecdsa_sha256_der:{kty:2,alg:-7,crv:1},rsassa_pss_sha256_raw:{kty:3,alg:-37},rsassa_pss_sha256_der:{kty:3,alg:-37},secp256k1_ecdsa_sha256_raw:{kty:2,alg:-47,crv:8},secp256k1_ecdsa_sha256_der:{kty:2,alg:-47,crv:8},rsassa_pss_sha384_raw:{kty:3,alg:-38},rsassa_pkcsv15_sha256_raw:{kty:3,alg:-257},rsassa_pkcsv15_sha384_raw:{kty:3,alg:-258},rsassa_pkcsv15_sha512_raw:{kty:3,alg:-259},rsassa_pkcsv15_sha1_raw:{kty:3,alg:-65535},secp384r1_ecdsa_sha384_raw:{kty:2,alg:-35,crv:2},secp512r1_ecdsa_sha256_raw:{kty:2,alg:-36,crv:3},ed25519_eddsa_sha512_raw:{kty:1,alg:-8,crv:6}};function hp(r){const{kty:t,alg:n,crv:i}=r;let o="";return t!==tn.RSA?o=`{ kty: ${t}, alg: ${n}, crv: ${i} }`:o=`{ kty: ${t}, alg: ${n} }`,o}async function q8(r){const{attStmt:t,clientDataHash:n,authData:i,credentialPublicKey:o,aaguid:s,rootCertificates:a}=r,c=t.get("sig"),f=t.get("x5c"),h=t.get("alg");if(!c)throw new Error("No attestation signature provided in attestation statement (Packed)");if(!h)throw new Error("Attestation statement did not contain alg (Packed)");if(!$s(h))throw new Error(`Attestation statement contained invalid alg ${h} (Packed)`);const d=Sr([i,n]);let g=!1;if(f){const{subject:x,basicConstraintsCA:S,version:D,notBefore:E,notAfter:_}=xs(f[0]),{OU:T,CN:F,O:U,C:z}=x;if(T!=="Authenticator Attestation")throw new Error('Certificate OU was not "Authenticator Attestation" (Packed|Full)');if(!F)throw new Error("Certificate CN was empty (Packed|Full)");if(!U)throw new Error("Certificate O was empty (Packed|Full)");if(!z||z.length!==2)throw new Error("Certificate C was not two-character ISO 3166 code (Packed|Full)");if(S)throw new Error("Certificate basic constraints CA was not `false` (Packed|Full)");if(D!==2)throw new Error("Certificate version was not `3` (ASN.1 value of 2) (Packed|Full)");let V=new Date;if(E>V)throw new Error(`Certificate not good before "${E.toString()}" (Packed|Full)`);if(V=new Date,_<V)throw new Error(`Certificate not good after "${_.toString()}" (Packed|Full)`);const G=await Kc.getStatement(s);if(G){if(G.attestationTypes.indexOf("basic_full")<0)throw new Error("Metadata does not indicate support for full attestations (Packed|Full)");try{await zc({statement:G,credentialPublicKey:o,x5c:f,attestationStatementAlg:h})}catch(ee){const Q=ee;throw new Error(`${Q.message} (Packed|Full)`)}}else try{await bi(f.map(gn),a)}catch(ee){const Q=ee;throw new Error(`${Q.message} (Packed|Full)`)}g=await di({signature:c,data:d,x509Certificate:f[0]})}else g=await di({signature:c,data:d,credentialPublicKey:o,hashAlgorithm:h});return g}async function G8(r){const{attStmt:t,clientDataHash:n,authData:i,aaguid:o,rootCertificates:s,verifyTimestampMS:a=!0,credentialPublicKey:c}=r,f=t.get("alg"),h=t.get("response");if(!t.get("ver"))throw new Error("No ver value in attestation (SafetyNet)");if(!h)throw new Error("No response was included in attStmt by authenticator (SafetyNet)");const x=D8(h).split("."),S=JSON.parse(ms(x[0])),D=JSON.parse(ms(x[1])),E=x[2],{nonce:_,ctsProfileMatch:T,timestampMs:F}=D;if(a){let v=Date.now();if(F>Date.now())throw new Error(`Payload timestamp "${F}" was later than "${v}" (SafetyNet)`);const u=F+60*1e3;if(v=Date.now(),u<v)throw new Error(`Payload timestamp "${u}" has expired (SafetyNet)`)}const U=Sr([i,n]),z=await Zi(U),V=en(z,"base64");if(_!==V)throw new Error("Could not verify payload nonce (SafetyNet)");if(!T)throw new Error("Could not verify device integrity (SafetyNet)");const G=Nn(S.x5c[0],"base64"),ee=xs(G),{subject:Q}=ee;if(Q.CN!=="attest.android.com")throw new Error('Certificate common name was not "attest.android.com" (SafetyNet)');cons
|